一: 前言
PWM 广泛用于调光,电机,风扇等的控制,是经常用到的技术。
二: 简介
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出(1或0)来对模拟电路进行控制的一种非常有效的技术。
主要参数
PWM占空比:
PWM信号保持高电平的时间百分比称为占空比。如果信号始终为高电平,则它处于100%占空比,如果它始终处于低电平,则占空比为0%。
PWM的频率:
PWM信号的频率决定PWM完成一个周期的速度。
三: 配置
如下图: 通过cubemx配置 Fclk = 36M,PSC=3600, ARR=10, CCR = 5, 计算出频率为1K,占空比为50%。
下图很好的演示了频率和占空比对输出的影响。
PWM duty demo
四:代码实现
通过调用以下函数启动:
HAL_TIM_Base_Start(&RING_LED_PWM_TIM);
HAL_TIM_PWM_Init(&RING_LED_PWM_TIM);
HAL_TIM_PWM_Start(&RING_LED_PWM_TIM,RING_LED_PWM_CHANNEL);
通过以下函数改变占空比:
__HAL_TIM_SET_COMPARE(&RING_LED_PWM_TIM,RING_LED_PWM_CHANNEL,pwm_duty );
通过以下函数改变频率:
__HAL_TIM_SET_PRESCALER(&RING_LED_PWM_TIM,TIMER_CLOCK_36M_1K_SET-1U)
视频是通过PWM 控制灯带的效果,通过不同占空比控制亮度:
LED pwm dimmer
五:总结
文章讲了如何通过CubeMX快速实现PWM控制,是STM32中PWM应用关键部分,避开需要阅读大量数据手册和寄存器的不便。以视觉化方式了解PWM的频率和占空比的区别和联系。