目录
一、PWM 简介
脉冲宽度调制
(PWM)
,是英文“
Pulse Width Modulation
”的缩写,简称脉宽调制,是利用 微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽 度的控制,PWM
原理如图
所示:

图中,我们假定定时器工作在向上计数 PWM 模式,且当
CNT<CCRx
时,输出
0
,当
CNT>=CCRx
时输出
1
。那么就可以得到如上的 PWM 示意图:当
CNT
值小于
CCRx
的时候,
IO
输出低电平
(0)
,当
CNT
值大于等于
CCRx
的 时候,IO
输出高电平
(1)
,当
CNT
达到
ARR
值的时候,重新归零,然后重新向上计数,依次 循环。改变 CCRx
的值,就可以改变
PWM
输出的占空比,改变
ARR
的值,就可以改变
PWM 输出的频率,这就是 PWM
输出的原理。
STM32
的定时器除了
TIM6
和
7
。其他的定时器都可以用来产生
PWM
输出。其中高级定
时器
TIM1
和
TIM8
可以同时产生多达
7
路的
PWM
输出。而通用定时器也能同时产生多达
4
路的
PWM
输出,这样,
STM32
最多可以同时产生
30
路
PWM
输出!这里我们仅使用
TIM1
的
CH1
产生一路
PWM
输出。如果要产生多路输出,大家可以根据我们的代码稍作修改即可。
要使
STM32
的高级定时器
TIM1
产生
PWM
输出,除了上一章介绍的几个寄存器(
ARR
、
PSC
、
CR1
等)外,我们还会用到
4
个寄存器(通用定时器则只需要
3
个),来控制
PWM
的输
出。这四个寄存器分别是:捕获
/
比较模式寄存器(
TIMx_CCMR1/2
)、捕获
/
比较使能寄存器
(
TIMx_CCER
)、捕获
/
比较寄存器(
TIMx_CCR1~4
)以及刹车和死区寄存器(
TIMx_BDTR
)。
二、介绍几种寄存器
1、捕获/比较模式寄存器(TIMx_CCMR1/2