中科蓝讯 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 T3G2      (G2< #define T3G3      (G3<

#define T4G1      (G1< #define T4G2      (G2< #define T4G3      (G3<

#define T5G1      (G1< #define T5G2      (G2< #define T5G3      (G3<

// TMRXCON  X= 3,4,5
#define PWM0EN        BIT(9)
#define PWM1EN        BIT(10)
#define PWM2EN        BIT(11)
#define TIMER_ENABLE  BIT(0)

void user_pwm_init(void)
{
    GPIOBDIR &= ~BIT(2);  //output,
    GPIOBDE  |=  BIT(2);  //digital io,
    GPIOBFEN |=  BIT(2); //function io enable ;

    GPIOEDIR &= ~(BIT(6)|BIT(7));  //output,
    GPIOEDE  |=  (BIT(6)|BIT(7));  //digital io,
    GPIOEFEN |=  (BIT(6)|BIT(7)); //function io enable ;

    FUNCMCON2 = (T3G1 | T4G1);


    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 |= (PWM2EN);
    TMR3CON |= TIMER_ENABLE;

    TMR4CON = 0X00;//时钟源默认为系统时钟 24M
    TMR4CNT = 0;
    TMR4PR = PWM_DUTY + 1; // //例如为 24M 时, 频率为 24M/(12000*4) = 500HZ, 即周期为0.002S. //U32
    //TMR4DUTY0 = 0;// 负占空比,此时为全亮
    TMR4DUTY1 = 0;// 负占空比,此时为全亮
    TMR4DUTY2 = 0;// 负占空比,此时为全亮

    TMR4CON |= (PWM1EN|PWM2EN);
    TMR4CON |= TIMER_ENABLE;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部