目录

1.输出比较简介
https://www.bilibili.com/video/BV11X4y1j7si?t=35.6&p=42

上图下方为定时器的四个通道,四个通道结构基本一样。
CCRx,x=1,2,3,4
输入捕获:可测量外部信号的时间参数(周期、占空比,,,)
输出比较:通过定时器产生精确定时的方波信号,然后通过引脚把方波输出出去。
2.基本工作原理(PWM)
https://www.bilibili.com/video/BV11X4y1j7si?t=182.8&p=42
通过输出比较,产生一个 PWM 信号的示例

PWM:脉宽调制信号
占空比:高电压/整个周期
单片机可输出 0V 和 3.3V,如果没 DAC 没法直接输出 2V 信号,所以可以通过调节 PWM 的不同占空比,近似输出 2V 电压
上图右边为不同占空比下的等效输出电压
Q:为什么调节占空比就能输出 0-3.3V 之间的电压?高电平不就是 3.3V,低电平不就是 0V 吗?
A:LED 的亮度由 "单位时间内的总能量" 决定,而不是 "某一时刻的电压"

如何通过定时器输出比较模块,产生 PWM 信号?

启动时基单元,每来一个脉冲, CNT 会++,到 ARR +1 会溢出重装。上图右为实际波形示意图。绿线为 CCR 值,红线为 ARR 值。
输出比较会把 CNT 的值,和 CCR 比较。
CNT<CCR,输出高电平,
CNT>CCR,输出低电平,这样就输出了我们要的 PWM 方波信号。
ARR +1 为一个周期
所以,CCR 决定高电平时间;ARR 决定周期时间
这个输出比较输出 PWM 的工作原理讲的确实不错:
https://www.bilibili.com/video/BV11X4y1j7si?t=358.5&p=42
3.8 种工作模式
https://www.bilibili.com/video/BV11X4y1j7si?t=481.1&p=42

CCRx:捕获/比较寄存器、CCR 左边为输入捕获,右边为输出比较
OCxRef:x=1,2,3,4,通道 x 的参考信号

上图为输出比较 8 种模式,常用 PWM1 模式,剩下七个简单了解下。
都是通过 CNT 和 CCR 的比较关系来产生结果的。
冻结:顾名思义,输出固定值,不管 CNT 和 CCR。
相等有效:CNT=CCR,OCxRef 输出高电压
相等无效:CNT=CCR,OCxRef 输出低电压
翻转:CNT=CCR,电平翻转一下
强制无效:强制输出低电压
强制有效:强制输出高电压(无效则低,有效则高)
PWM1 模式:CNT<CCR,输出高(最常用)
PWM2 模式:与 PWM1 相反。
4.互补输出
https://www.bilibili.com/video/BV11X4y1j7si?t=888.5&p=42

从图中可以看出,前三个通道都有两个引脚输出。这两个引脚输出的代表什么信号呢?

CHx 表示正常输出,CHxN 表示互补输出。
正常输出:模式选择产生的 OCxRef 参考信号直接输出 出来。
互补输出:给正常输出取反的信号(正常输出高,互补输出低)
所以互补信号的作用在哪?

把 12V 降压成 3.3V
SW1 闭合,SW2 断开:电源给电感 L1 和电容 C1 充电
SW1 断开,SW2 闭合:L1、C1、SW2 回路放电。
通过充放电比例,可以调节右边输出电压(类似 PWM 高低电平得出等效输出电压)。
可以得出 SW1 和 SW2 的状态是完全相反的,所以这里可以用到输出比较的正常输出和互补输出。
5.极性选择
https://www.bilibili.com/video/BV11X4y1j7si?t=1152.0&p=42

模式选择产生参考信号 OCxRef,通过正常输出、互补输出两路输出。
紫色圈的结构为极性选择
极性选择:决定是否对输出信号进行取反(反相器)
总结
先简单了解了输出比较和工作原理(CNT 和 CCR 比较),然后通过 8 种工作模式(主要 PWM1 模式)、互补输出(与正常输出相反)、极性选择(信号取反),深入了解了下输出比较内部结构 。