第四章 输出比较
4.1 输出比较¶
4.1.1 输出比较介绍¶
- OC(Output Compare)输出比较
- 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形
- 每个高级定时器和通用定时器都拥有4个输出比较通道
- 高级定时器的前3个通道额外拥有死区生成和互补输出的功能(用于驱动三相无刷电机)
4.1.2 输出比较框图¶
- 输出比较模式控制器,当CNT>=CCR时输出一个参考电平(即图中oc1ref)
- 极性选择,选择是否对参考电平进行反转(即0→1或1→0)
- 使能输出,在对应的通道输出电平
CNT为计数值,CRR为 捕获/比较器,用于与CNT值比较
4.1.3 输出比较模式¶
输出模式控制器 的工作逻辑选择:
模式 | 描述 |
---|---|
冻结 | CNT=CCR时,REF保持为原状态 |
匹配时置有效电平 | CNT=CCR时,REF置有效电平 |
匹配时置无效电平 | CNT=CCR时,REF置无效电平 |
匹配时电平翻转 | CNT=CCR时,REF电平翻转 |
强制为无效电平 | CNT与CCR无效,REF强制为无效电平 |
强制为有效电平 | CNT与CCR无效,REF强制为有效电平 |
PWM模式1 | 向上计数:CNT |
PWM模式2 | 向上计数:CNT |
Note
只有 PWM模式 1 和 PWM模式 2 为常用模式,可以输出频率 和 占空比均可以调节的PWM波,其他模式有局限性不常用,其中 匹配时电平翻转 可以输出占空比恒为50%的PWM波。
4.1.4 STM32CubeMX参数¶
以TIM3通用定时器通道 1 为例:
部分为输入捕获参数,不在此处介绍,关于输出比较参数介绍如下:
- Output Compare No Output :在此模式下,输出比较通道没有任何实际的输出作用。该模式常用于仅进行比较操作,但不驱动外部信号。
- Output Compare CH1 :在这个模式下,定时器会根据设定的比较值与计数器值进行比较。如果匹配,定时器会执行相应的操作。
- PWM Generation No Output :在此模式下,定时器配置为 PWM 生成模式,但没有任何外部输出信号。这通常用于内部计算或调试目的。
- PWM Generation CH1 :在此模式下,定时器会在通道 1 上生成 PWM 信号。
其中, Output Compare CH1 和 PWM Generation CH1 为常用模式,其他了解即可。
通道若选择 Output Compare CH1 ,则可以选择通道工作模式为以下 6 种,一一对应 4.1.3
表格中的模式:
- Frozen (used for Timing base),即冻结
- Active Level on match,即匹配时置有效电平
- Inactive Level on match,即匹配时置无效电平
- Toggle on match,即匹配式反转电平
- Forced Active,即强制为有效电平
- Forced Inactive,即强制为无效电平
通道若选择 PWM Compare CH1 ,则可以选择通道工作模式为以下 2 种,一一对应 4.1.3
表格中的模式:
- PWM mode 1,即PWM模式 1
- PWM mode 2,即PWM模式 2
4.2 PWM¶
4.2.1 PWM介绍¶
- PWM(Pulse Width Modulation)脉冲宽度调制
- 在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域
-
PWM参数:
⭐频率 = 1 / T_S ⭐占空比 = T_ON / T_S 分辨率 = 占空比变化步距
4.2.2 PWM基本结构¶
4.3 STM32CubeMX配置¶
Warning
关于RCC、SYS、LED这里不做重复配置,详情可看GPIO章节。
\[
占空比=\frac{CCR}{ARR}
\]
Warning
注意PSC和ARR的参数随意但要保持最后的频率不要太小,这样LED会是闪烁的,应把频率控制在100左右或以上为好,这样才能实现控制亮度,其余参数自行百度了解即可。
最后时钟配置为72MHZ,生成工程。
4.4 呼吸灯代码¶
main
函数中声明一个占空比变量
使能PWM通道 1 和 2
C
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
/* USER CODE END 2 */
while循环写呼吸灯代码