中科蓝讯 PWM 驱动led灯
不废话,直接上代码
// FUNCMCON2
#define G1 (1)
#define G2 (2)
#define G3 (3)
#define TIMER3 (8)
#define TIMER4 (12)
#define TIMER5 (16)
#define T3G1 (G1< #define T4G1 (G1< #define T5G1 (G1< // TMRXCON X= 3,4,5 void user_pwm_init(void) GPIOEDIR &= ~(BIT(6)|BIT(7)); //output, FUNCMCON2 = (T3G1 | T4G1); TMR3CON |= (PWM2EN); TMR4CON = 0X00;//时钟源默认为系统时钟 24M TMR4CON |= (PWM1EN|PWM2EN);
#define PWM0EN BIT(9)
#define PWM1EN BIT(10)
#define PWM2EN BIT(11)
#define TIMER_ENABLE BIT(0)
{
GPIOBDIR &= ~BIT(2); //output,
GPIOBDE |= BIT(2); //digital io,
GPIOBFEN |= BIT(2); //function io enable ;
GPIOEDE |= (BIT(6)|BIT(7)); //digital io,
GPIOEFEN |= (BIT(6)|BIT(7)); //function io enable ;
TMR3CON = 0X00;//时钟源默认为系统时钟 24M
TMR3CNT = 0;
TMR3PR = PWM_DUTY + 1; // //例如为 24M 时, 频率为 24M/(12000*4) = 500HZ, 即周期为0.002S. //U32
//TMR3DUTY0 = 0;// 负占空比,此时为全亮
//TMR3DUTY1 = 12000 - 1;// 25%
TMR3DUTY2 = PWM_DUTY;//12000*2-1;// 50%
TMR3CON |= TIMER_ENABLE;
TMR4CNT = 0;
TMR4PR = PWM_DUTY + 1; // //例如为 24M 时, 频率为 24M/(12000*4) = 500HZ, 即周期为0.002S. //U32
//TMR4DUTY0 = 0;// 负占空比,此时为全亮
TMR4DUTY1 = 0;// 负占空比,此时为全亮
TMR4DUTY2 = 0;// 负占空比,此时为全亮
TMR4CON |= TIMER_ENABLE;
}本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
