1.什么是PWM
脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,可以理解为控制脉冲的宽度,利用微处理器的数字输出来对模拟电路进行控制的一种有效技术。通过控制信号的脉冲宽度,实现对电压或电流的精确控制,这就用到了PWM等效输出模拟量。
2.PWM相关参数
pwm主要有三个参数:频率、占空比、分辨率
(1)频率:是指1秒内信号从高电平到低电平在到高电平的次数(一个周期),也就是一秒中有多少个PWM周期。
(2)占空比:是一个脉冲周期内,高电平占整个周期的时间比例。占空比决定了PWM等效出来的模拟电压的大小,占空比越大,模拟电压越趋近于高电平。
(3)分辨率:就是占空比变化的快慢,占空比变化的细腻程度。占空比跳的快如按照1%跳变与按照0.1%跳变,那么0.1%的跳变就越细腻,越柔和。
3.PWM的基本工作原理
在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。
那么什么是惯性系统呢?如LED在熄灭的时候,由于余晖和人眼视觉暂留的现象,LED不会立马熄灭,而是有一定的惯性,过了一小段时间才熄灭的。具有惯性的系统才能使用PWM。
4.定时器是怎么输出PWM波形的?

PWM生成:
(1)CNT计数器和CCR捕获比较寄存器,进行比较,如果如果CNT大于或者等于CCR,就会给输出模式控制器传一个信号;
(2)输出模式控制器就会改变它输出OC1REF的高低电平,REF信号实际上就是信号的高低电平(REF:reference,参考信号);
(3)CC1P:极性选择寄存器,给0,信号就会走对应的0那一路,信号不变;给1,信号会经过一个非门,极性翻转;
(4)信号从OC1输出。
5.stm32输出模式控制器可以配置输出8种模式,通过寄存器配置
6.PWM实现流程
注:黄色线:计算器溢出频率(ARR),也是PWM更新频率;
红色线:捕获比较寄存器CCR的值;
蓝色线:计数器CNT的值。
7.PWM的基本结构框图
时基单元在定时器篇张有介绍,这里主要介绍输出比较单元。定时器不断更新计数值,并且不断与捕获比较寄存器的值进行比较,当计数器的值大于等于捕获比较寄存器的值时,电平就会从高电平跳到低电平,当计数器的值小于捕获比较寄存器时,电平就会从低电平跳到高电平。
8.PWM参数计算公式
PWM频率: Freq = CK_PSC / (PSC + 1) / (ARR + 1)
PWM占空比: Duty = CCR / (ARR + 1)
PWM分辨率: Reso = 1 / (ARR + 1)
Reso定义的分辨率是占空比最小的变化步距
注:
ARR:Automatic Reload Register,自动重装寄存器。计数到该值时,会重新计数,也就是重装的意思。
CCR:Catch Compare Register,捕获比较寄存器,CC捕获/比较意思,R是Register,寄存器的意思。两个共用,输入捕获寄存器。输出比较寄存器,比较CNT与CCR的值,CNT计数自增,CCR自己给定。当CNT大于CCR(小于或者等于)时,置1置0,然后输出应该电平不断跳变的PWM波形。