CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

PWM Flicker

PWM Flicker的示例工程用于实现PWM的固定占空比模式。当示例工程工作时,可以通过逻辑分析仪观察其波形为固定占空比的波形,或观察LED闪烁频率为一固定频率。

PWM Flicker示例的源代码和工程文件位于SDK_Folder\projects\peripheral\pwm\pwm_flicker,其中工程文件在文件夹Keil_5下。

代码理解

工程流程图如图 23所示:

图 23 PWM Flicker示例工程流程图
  1. 配置PWM模块。
    led1_handle.p_instance = PWM1_MODULE;
    led1_handle.active_channel = HAL_PWM_ACTIVE_CHANNEL_B;
    led1_handle.init.mode = PWM_MODE_FLICKER;
    led1_handle.init.align = PWM_ALIGNED_EDGE;
    led1_handle.init.freq = 1000;           //PWM output freq = 100Hz1000Hz
    led1_handle.init.channel_b.duty = 50;
    led1_handle.init.channel_b.drive_polarity = PWM_DRIVEPOLARITY_NEGATIVE;
    hal_pwm_init(&led1_handle);
        
    led2_handle.p_instance = PWM0_MODULE;
    led2_handle.active_channel = HAL_PWM_ACTIVE_CHANNEL_C;
    led2_handle.init.mode = PWM_MODE_FLICKER;
    led2_handle.init.align = PWM_ALIGNED_EDGE;
    led2_handle.init.freq = 1000;           //PWM output freq = 100Hz
    led2_handle.init.channel_c.duty = 50;
    led2_handle.init.channel_c.drive_polarity = PWM_DRIVEPOLARITY_NEGATIVE;
    hal_pwm_init(&led2_handle);
    

    PWM详细配置参数请参考PWM Breath。此示例中init.mode选择PWM_MODE_FLICKER。

  2. 调用led_light()开启PWM FLICKER模式。代码如下:
    void led_light(uint8_t id, uint8_t light)
    {
        pwm_channel_init_t pwm_channel;
    
        pwm_channel.drive_polarity = PWM_DRIVEPOLARITY_NEGATIVE;
        pwm_channel.duty = (uint16_t)light * 100 / 255;
        if (id == LED1)
        {
            hal_pwm_stop(&led1_handle);
            hal_pwm_config_channel(&led1_handle, &pwm_channel, HAL_PWM_ACTIVE_CHANNEL_B);
            hal_pwm_start(&led1_handle);
        }
        else if (id == LED2)
        {
            hal_pwm_stop(&led2_handle);
            hal_pwm_config_channel(&led2_handle, &pwm_channel, HAL_PWM_ACTIVE_CHANNEL_C);
            hal_pwm_start(&led2_handle);
        }
    }
    

测试验证

  1. 用GProgrammer下载pwm_flicker.bin至开发板。
  2. 将开发板串口连接至PC端,打开并配置GRUart。
  3. 在GRUart的Receive Data窗口中将会显示PWM执行过程。
  4. 观察逻辑分析仪其波形为固定占空比的波形,若配置为边缘对齐模式,开启的通道会在占空比周期开始位置对齐;若配置为中心对齐模式,开启的通道会在占空比周期中间以轴对称的方式对齐。观察LED其闪烁频率为一固定频率。

扫描关注

打开微信,使用“扫一扫”即可关注。