[MCU] 【BLE 5.3无线MCU CH582】6、pwm呼吸灯

freeelectron   2022-3-16 13:39 楼主

系列文章:

【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外设,独立于定时器。

image.png

2、PWM通道

引脚信息上标有PWMX的即就是pwm通道,从PWM4到PWM11,PWM0到PWM3是定时器的pwm通道。

image.png  

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、现象

  呼吸灯.gif   pwm.gif  

 

 

stm32/LoRa物联网:304350312

回复评论 (1)

搞测试的表示一头雾水

点赞  2023-3-18 15:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复