【BLE 5.3无线MCU CH582】6、pwm呼吸灯
[复制链接]
系列文章:
【BLE 5.3无线MCU CH582】1、初识CH582开发板(开箱)
【BLE 5.3无线MCU CH582】2、MounRiver IDE初体验
【BLE 5.3无线MCU CH582】3、非阻塞方式点灯
【BLE 5.3无线MCU CH582】4、串口不定长数据接收
【BLE 5.3无线MCU CH582】5、硬件I2C驱动0.96吋OLED
1、关于CH582的PWM
CH582除了定时器可以产生pwm之外,还提供了专门的pwm外设,独立于定时器。
2、PWM通道
引脚信息上标有PWMX的即就是pwm通道,从PWM4到PWM11,PWM0到PWM3是定时器的pwm通道。
3、代码实现
void PwmInit(void)
{
GPIOA_ModeCfg( GPIO_Pin_12, GPIO_ModeOut_PP_5mA ); // PA12 - PWM4
GPIOA_ModeCfg( GPIO_Pin_13, GPIO_ModeOut_PP_5mA ); // PA13 - PWM5
PWMX_CLKCfg( 2 ); // cycle = Fsys/2
PWMX_CycleCfg( PWMX_Cycle_31 ); // 周期 = cycle/31
PWMX_ACTOUT( CH_PWM4, (UINT8)((31/100.0 )* 10), High_Level, ENABLE );
PWMX_ACTOUT( CH_PWM5, (UINT8)((31/100.0 )* 10), High_Level, ENABLE );
}
void PwmOut(void)
{
static uint32_t tick=0;
static uint8_t out=0;
if(SystemGetTick()-tick>100)
{
tick=SystemGetTick();
out=out+5;
if(out>100)
{
out=0;
}
PWMX_ACTOUT( CH_PWM4, (UINT8)((31/100.0 )* out), High_Level, ENABLE );
PWMX_ACTOUT( CH_PWM5, (UINT8)((31/100.0 )* out), High_Level, ENABLE );
}
}
4、现象
|