嵌入式学习日志————TIM输出比较
前言
本篇日志主要记录TIM输出比较部分的理论知识,后续还会出这一节的实验部分。如有问题欢迎指正!
正文
1.输出比较简介
输出比较可以通过比较CNT(计数器)与CCR寄存器(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。
每个高级定时器和通用定时器都拥有4个输出比较通道
2.PWM简介(天下武功,唯快不破)
Pulse Width Modulation)脉冲宽度调制。
在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、LED控制亮度等领域。
基本思想:利用PWM波形实现对LED灯亮度的调节——当点亮、熄灭的频率足够大时,LED就不会闪烁了,而是呈现一种中等亮度,于是我们可以通过调节点亮和熄灭的时间比例来调节LED灯的亮度。(电机调速也是类似的)
PWM参数: 频率 = 1 / TS(频率越高,等效模拟的信号就越平稳,消耗也越大);
占空比 = TON / TS (占空比越大,等效的模拟电压越趋近于高电压) ;
分辨率 = 占空比变化步距(占空比变化的精细程度);
(1)虚线是等效模拟量↓ 
(2)PWM波↓ 
3.输出比较通道
1)通用定时器
对于同一个定时器的不同通道输出的PWM:频率一样(b:共用计时器);占空比由各自的CCR值决定;同时跳变(b:共用计时器)
2)高级定时器 
4.输出比较模式(输出模式控制器里面的执行逻辑)
模式 | 函数表达 | 描述 |
---|---|---|
冻结 | TIM_OCMode_Timing | CNT=CCR时,REF保持为原状态 |
匹配时置有效电平(高电平) | TIM_OCMode_Active | CNT=CCR时,REF置有效电平 |
匹配时置无效电平(低电平) | TIM_OCMode_Inactive | CNT=CCR时,REF置无效电平 |
匹配时电平翻转 | TIM_OCMode_Toggle | CNT=CCR时,REF电平翻转 |
强制为无效电平 | TIM_ForcedAction_InActive | CNT与CCR无效,REF强制为无效电平 |
强制为有效电平 | TIM_ForcedAction_Active | CNT与CCR无效,REF强制为有效电平 |
PWM模式1 | TIM_OCMode_PWM1 | 向上计数:CNT<CCR时,REF置有效电平,CNT≥CCR时,REF置无效电平(常用) 向下计数:CNT>CCR时,REF置无效电平,CNT≤CCR时,REF置有效电平 |
PWM模式2 | TIM_OCMode_PWM2 | 向上计数:CNT<CCR时,REF置无效电平,CNT≥CCR时,REF置有效电平 向下计数:CNT>CCR时,REF置有效电平,CNT≤CCR时,REF置无效电平 |
5.PWM的基本结构
参数计算
PWM频率=计数器更新频率