123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /******************************************************************************************************
- IC : TM52F1376
-
- 演示效果 :
-
- 时钟 :
- 快时钟系统主频为 18.432M/2 = 9.216M
- *********************************************************************************************************/
- #include <REGtenxTM52F1386.h>
- #include "TM52F1386_bsp.h"
- #include <intrins.h>
- /*
- 系统频率设置为二分频
- */
- /******************************************************************************************
- ** 函数名称: 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)
- {
- }
- }
|