中科蓝讯 PWM 驱动led灯

不废话,直接上代码

// FUNCMCON2
#define G1        (1)
#define G2        (2)
#define G3        (3)

#define TIMER3    (8)
#define TIMER4    (12)
#define TIMER5    (16)

#define T3G1      (G1<<TIMER3)
#define T3G2      (G2<<TIMER3)
#define T3G3      (G3<<TIMER3)

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

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

// 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值