⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 周立功smartArm2300开发板中的PWM示例程序。其中有单边沿
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			zhmj
** Modified date:		2007-01-11
** Version:
** Descriptions:		双边沿PWM输出实验。
**
********************************************************************************************************/
#include "config.h"

#define		tmp1		Fpclk/100

/*********************************************************************************************************
** 函数名称 :Init
** 函数功能 :初始化IO口,设置P2.1、P2.3、P2.5为双边沿输出
** 入口参数 :无。
** 出口参数 :无。
*********************************************************************************************************/
void IO_Init(void)
{
	PINSEL4 = (PINSEL4 & (~(0x03 << 2)))|(0x01 << 2);	// P2.1连接到PWM1.2(PWM2)
	PINSEL4 = (PINSEL4 & (~(0x03 << 6)))|(0x01 << 6);	// P2.3连接到PWM1.4(PWM4)
	PINSEL4 = (PINSEL4 & (~(0x03 << 10)))|(0x01 << 10);	// P2.5连接到PWM1.6(PWM6)
}


/*********************************************************************************************************
** 函数名称 :PWM_Dbl_Init
** 函数功能 :初始化双边沿PWM输出。
** 入口参数 :无。
** 出口参数 :无。
*********************************************************************************************************/
void PWM_Dbl_Init(void)
{
	uint32 tmp;
	tmp = Fpclk / 100;
	
	PWM1PR  = 0x09;			// 对pclk进行分频,PWM计数频率为Fpclk的1/10
	PWM1MCR = 0x02;			// PWMMR0与PWMTC匹配时复位PWMTC
	PWM1PCR = (1 << 2)  |	// PWM2双边沿控制
		 	  (1 << 4)  |	// PWM4双边沿控制
			  (1 << 6)  |	// PWM6双边沿控制
			  (1 << 10) |	// 使能PWM2输出
			  (1 << 12) |	// 使能PWM4输出
			  (1 << 14);	// 使能PWM6输出
	PWM1MR0 = tmp;			// PWM速率控制/计数初值
	/* 设置双边沿脉冲的脉宽和位置 */
	PWM1MR1 = 0;							// PWM2的置位位置
	PWM1MR2 = (tmp / 8) * 7;				// PWM2的复位位置

	PWM1MR3 = (tmp / 8)*2;					// PWM4的置位位置
	PWM1MR4 = (tmp / 8) * 6;				// PWM4的复位位置

	PWM1MR5 = (tmp / 8) * 3;				// PWM6的置位位置
	PWM1MR6 = (tmp / 8) * 5;				// PWM6的复位位置
	 
	PWM1LER = 0x7F;			// 锁存所有PWM匹配值
	PWM1TCR = 0x02;			// 复位PWMTC
	PWM1TCR = 0x09;			// 使能PWM
	
}

/*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :演示双边沿PWM现象。
** 入口参数 :无。
** 出口参数 :为0时表明函数出错。
** 函数说明 :需要用多通道示波器或者逻辑分析仪进行观察
*********************************************************************************************************/
int main (void)
{

	
	
	IO_Init();  			//初始化IO口,设置P2.1、P2.3、P2.5为双边沿输出
	
	PWM_Dbl_Init();			// 初始化双边沿PWM输出
	
	//设好了相关寄存器之后,相应的管脚就有相应的双边沿的PWM输出
	
	while(1);
	
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -