/****************************************************************************************************** IC : TM52F1376 演示效果 : 时钟 : 快时钟系统主频为 18.432M/2 = 9.216M *********************************************************************************************************/ #include #include "TM52F1386_bsp.h" #include /* 系统频率设置为二分频 */ /****************************************************************************************** ** 函数名称: pwm0_init ** 函数描述: pwm0初始化函数 ** 输入参数: 无 ** 输出参数: 无 *******************************************************************************************/ void pwm0_init() { PORTIDX = 1; PINMOD76 = (PINMOD76&~0x0f) | PIN_L_MODE_AF; //PWM0 PIN CONFIG INIT P16 PINMOD54 = (PINMOD54&~0x0f) | PIN_L_MODE_AF; //PWM0 PIN CONFIG INIT P14 PORTIDX = 2; PINMOD76 = (PINMOD76&~0x0f) | PIN_L_MODE_AF; //PWM0 PIN CONFIG INIT P26 PWMEN = (PWMEN & ~PWMEN_PWM0EN_MASK) | (1 << PWMEN_PWM0EN_POS); //PWM0 ENABLE } /****************************************************************************************** ** 函数名称: pwm1_init ** 函数描述: pwm1初始化函数 ** 输入参数: 无 ** 输出参数: 无 *******************************************************************************************/ void pwm1_init() { PORTIDX = 1; PINMOD76 = (PINMOD76&~0xf0) | PIN_H_MODE_AF; //PWM1 PIN CONFIG INIT P17 PINMOD54 = (PINMOD54&~0xf0) | PIN_H_MODE_AF; //PWM1 PIN CONFIG INIT P15 PWMEN = (PWMEN & ~PWMEN_PWM1EN_MASK) | (1 << PWMEN_PWM1EN_POS); //PWM0 ENABLE } /****************************************************************************************** ** 函数名称: pwm1_init ** 函数描述: pwm1初始化函数 ** 输入参数: 无 ** 输出参数: 无 *******************************************************************************************/ void pwm2_init() { PORTIDX = 5; PINMOD76 = (PINMOD76&~0xff) | PIN_H_MODE_AF | PIN_L_MODE_AF; // PWMEN = (PWMEN & ~PWMEN_PWM2EN_MASK) | (1 << PWMEN_PWM2EN_POS); //PWM0 ENABLE } /****************************************************************************************** ** 函数名称: pwm1_init ** 函数描述: pwm1初始化函数 ** 输入参数: 无 ** 输出参数: 无 *******************************************************************************************/ void pwm3_init() { PORTIDX = 0; PINMOD10 = (PINMOD10&~0xff) | PIN_H_MODE_AF | PIN_L_MODE_AF; // PWMEN = (PWMEN & ~PWMEN_PWM3EN_MASK) | (1 << PWMEN_PWM3EN_POS); //PWM0 ENABLE } /****************************************************************************************** ** 函数名称: pwm0_clock_config ** 函数描述: pwm0 时钟源配置函数 ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2 ** 输出参数: 无 *******************************************************************************************/ void pwm0_clock_config (unsigned char value) //PWM时钟源模式 { PWMCON = (PWMCON & ~0x03) | (value << 0); } /****************************************************************************************** ** 函数名称: pwm0_clock_config ** 函数描述: pwm0时钟源配置函数 ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2 ** 输出参数: 无 *******************************************************************************************/ void pwm1_clock_config (unsigned char value) //PWM时钟源模式 { PWMCON = (PWMCON & ~0x0c) | (value << 2); } /****************************************************************************************** ** 函数名称: pwm0_clock_config ** 函数描述: pwm0时钟源配置函数 ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2 ** 输出参数: 无 *******************************************************************************************/ void pwm2_clock_config (unsigned char value) //PWM时钟源模式 { PWMCON = (PWMCON & ~0xc0) | (value << 6); } /****************************************************************************************** ** 函数名称: pwm0_clock_config ** 函数描述: pwm0时钟源配置函数 ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2 ** 输出参数: 无 *******************************************************************************************/ void pwm3_clock_config (unsigned char value) //PWM时钟源模式 { PWMCON = (PWMCON & ~0x30) | (value << 4); } /****************************************************************************************** ** 函数名称: pwm_config_init ** 函数描述: pwm周期、占空比设置函数 ** 输入参数: prd:周期 duty:占空比 ch:通道 ** 输出参数: 无 *******************************************************************************************/ void pwm_config_init(unsigned int prd, unsigned int duty,unsigned char ch) { PWMIDX = ch; PWMPRDL = prd & 0xff; //写 先低后高 读 先高后低 PWMPRDH = (prd >> 8) & 0XFF; PWMIDX = ch; PWMDL = duty & 0XFF; // PWM1DL 占空比低字节 PWMDH = (duty >> 8) & 0XFF; // PWM1DL 占空比低字节 } /****************************************************************************************** ** 函数名称: main ** 函数描述: main函数 ** 输入参数: 无 ** 输出参数: 无 *******************************************************************************************/ void main() { bsp_clock_init(); // 系统快钟18.432 div 2 = 9.216Mhz pwm0_init(); //PWM0引脚初始化 pwm1_init(); //PWM1引脚初始化 pwm2_init(); //PWM2引脚初始化 pwm3_init(); //PWM3引脚初始化 pwm0_clock_config(2); //选择FRC为PWM模组的时钟源 pwm1_clock_config(2); //选择FRC为PWM模组的时钟源 pwm2_clock_config(2); //选择FRC为PWM模组的时钟源 pwm3_clock_config(2); //选择FRC为PWM模组的时钟源 pwm_config_init(65535, 10000, 0x00); // PWM0 pwm_config_init(65535, 10000, 0x10); // PWM1 pwm_config_init(65535, 10000, 0x20); // PWM2 pwm_config_init(65535, 10000, 0x30); // PWM30 pwm_config_init(65535, 10000, 0x31); // PWM31 while(1) { } }