输出比较的作用
此功能是用来控制输出方波
大多用于输出PWM波形,也可输出其他波形,但只能是方波
输出比较框图

包含三个部分
计数器部分
捕获比较储存器*4
可以同时实现4路比较
输出部分*4
输出比较原理
核心思想
以通道1为例
假设计数器向上计数,重装载寄存器的值为99
捕获/比较寄存器的值为60
比较寄存器的值和计数器的值进行大小比较
根据比较结果的不同,产生不同的输出:高电平/低电平
输出比较的8种模式
由CCMR1寄存器的OC1M[2,0],共三位控制
一般使用PWM模式1,及OC1M = 110
CCMR : 控制比较模式寄存器
OCM : out put compare
假设计数器的值是CNT,比较寄存器1的值是CCR=60
OC1M[2:0] = 000
输出冻结, CNT和CCR比较结果不影响输出.
OC1M[2:0] = 001
强制输出高电平。一旦CNT=CCR,强制输出高电平,再不改变。
OC1M[2:0] = 010
强制输出低电平。一旦CNT=CCR,强制输出低电平,再不改变。
OC1M[2:0]=011
输出翻转。一旦CNT=CCR,则翻转输出。高->低, 低->高。
输出结果其实是一个方波:频率为计数器的溢出频率的一半,占空比为50%
下图为此情况方波输出图

OC1M[2:0]=100
强制输出低电平。
OC1M[2:0]=101
强制输出高电平
OC1M[2:0]=110
PWM模式1
CNT < CCR 输出高电平
CNT >= CCR 输出低电平
波形频率: 计数器溢出频率
波形占空比:
CCR/(重装载寄存器值+1) = 60/(99+1) = 60%

OC1M[2:0]=111
PWM模式2,和模式1刚好相反,占空比也刚好相反
CNT < CCR 输出低电平
CNT >= CCR 输出高电平