脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制,PWM 原理如图所示:
图就是一个简单的 PWM 原理示意图。图中,我们假定定时器工作在向上计数 PWM
模式,且当 CNT<CCRx 时,输出 0,当 CNT>=CCRx 时输出 1。那么就可以得到如上的 PWM
示意图:当 CNT 值小于 CCRx 的时候,IO 输出低电平(0),当 CNT 值大于等于 CCRx 的时候,
IO 输出高电平(1),当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的频率,这就是 PWM 输出的原理。
计数频率=定时器时钟/分频系数
PWM输出频率=计数频率/自动重载值
tim14_period = 42000 - 1
tim14_pulse = 8400
CH————polarity
设置高电平还是低电平时有效电平
PWM两种模式的区别
pwm1:
向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为 无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否 则为有效电平(OC1REF=1)。 |
pwm2:
在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为
有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电
平。
频率1KHz = 42M/ 4200
占空比20% = 8400/42000
代码:HAL_TIM_PWM_Start(&htim14, TIM_CHANNEL_1);
在主函数中开启PWM