一、定时器的简介
1、在计算59.65s之前先简要叙述下时钟频率和计数器
①计数时钟频率:这是计数器每秒钟可以增加多少次计数的速率。在此例中,频率为72 MHz,即每秒可计数72000000次。
②计数器溢出:计数器通常是有位宽的(例如16位、32位等),当计数达到其最大值后将会“溢出”并重置为0。这里的预分频器和自动重装寄存器都是16位
③在单片机中对于时钟的频率我们可以通过预分频器降低频率,即72000000(72MHZ)/65536 = 1098.632hz,这样我们便得到了单片机的最小频率,即1/1098.632时,单片机的计数器加1,可得从0-65535需要的时间为(1/1098.632)*65536 = 59.652秒。
2、通过定时器衍生出的功能包括:计数器、定时器、输出比较、输入捕获等
二、定时器的类型
1、定时器的类型包括了高级定时器、通用定时器、基本定时器
2、我们用的这款单片机只包含:TIM1、TIM2、TIM3、TIM4
三、定时器的结构图

1、高级定时器
①重复计器功能
假设RCR(重复计数器)=2,ARR(自动重装器)=1013,当计算到1013时,进入定时器中断
计数过程
-
第一次计数:
- 从0计数到1003,触发第一个更新事件。此时,定时器确实重置到了0,但是因为 RCR 的存在,它会进入一个特殊的状态。正常情况下,进入定时器中断以后,该定时器会停止自增,等退出中断后重新开始计数自增,但这种情况下,依然会进行置零再重新计数。
-
第二次计数:
- 在达成第一次更新事件后,计数器并不会像普通的定时器那样停止,而是继续在自增,实际上是在软件上处理这些更新事件。
- 在这次计数过程中,计数器继续从0计数。当再次计数到1003时,产生第二个更新事件。
-
第三次计数:
- 再次从0计数,当计数到1003时,再次产生第三个更新事件。
当达成 RCR + 1
次更新(即3次更新)后,后续的更新就会遵循正常的计数重置行为。进入定时器中断以后,该定时器会停止自增,等退出中断后重新开始计数自增。
②互补输出
互补输出指的是两个信号相对的方式工作,即一个信号为高时另一个信号为低,反之亦然。换句话说,在任何给定时间,这两个信号的输出总是相反的。
时间点 | PWM_A | PWM_B |
---|---|---|
t1 | 高 | 低 |
t2 | 高 | 低 |
t3 | 低 | 高 |
t4 | 低 | 高 |
③死区插入
死区插入是为了防止互补输出信号之间的冲突而设计的。在某些应用中,如H桥驱动电路,如果两个信号同时为高,则可能造成短路,从而损坏设备。因此,在高电平和低电平之间插入一个小的“死区”时间,以确保两个信号不会在同一时间内处于高状态。
时间点 | PWM_A | PWM_B | 死区时间 |
---|---|---|---|
t1 | 高 | 低 | - |
t2 | 高 | 低 | - |
t3 | 低 | 高 | 0.5ms |
t4 | 低 | 高 | - |
在此示例中,t3
时刻引入了 0.5 毫秒的死区时间,确保 PWM_A
在 PWM_B
变高之前已经完全变为低。这段时间可以防止两个信号同时为高而导致短路的问题。
④刹车功能
当外部输入检测到刹车信号时,定时器会停止输出PWM,包括两种停止方式
- 立即停止模式:当接收到刹车信号时,PWM 输出立即停止。
- 慢速刹车模式:通过调节 PWM 占空比逐渐减少电机的速度,而不是立即停止。
2、通用定时器
注:除了少了上面讲述的几个高级定时器专有的功能,其通用定时器和高级定时器并无区别
①时钟选择
可以自由选择内部时钟和外部时钟
②输出比较功能
(用户可以调整 PWM 信号的占空比,以实现不同的输出效果)
工作原理
a、计数器:定时器内部有一个计数器,计数从零开始,直到达到预设的最大值(称为自动重载寄存器)。
b、占空比:在计数过程中,当计数器的值与设定的比较值相等时,定时器会触发输出状态的改变。占空比是指信号高电平持续的时间与整个周期的比例,通常以百分比表示。
c、PWM 模式:通过配置定时器工作在 PWM 模式下,可以使得 PWM 信号的频率和占空比可调。用户只需修改比较值(即占空比),即可实现对输出信号特性的控制。
d、假设我们想要控制一盏 LED 灯的亮度:
当我们希望 LED 以 25% 的亮度运行时,我们将比较值设置为 250(在 1000 的周期中,250 表示 0.25 毫秒为高电平,其余时间为低电平)。
如果我们希望 LED 以 50% 的亮度运行,则将比较值设置为 500。
最后,如果希望 LED 达到最大亮度,即 100%,则将比较值设置为 1000
③输入捕获功能

a、在输入捕获功能下,①代表着每次进入上升沿,硬件电路就会将CNT的值保存到CCR中去,同时CNT的值会被清零
b、②代表着外部的脉冲或者方波的输入,为了避免因为噪音造成的毛刺信号,在滤波器的作用下,在一个采样周期中,信号的标准为连续N个高电平或低电平时,信号方可有效。如连续的次数小于N则该信号会被过滤,不在进入边沿检测极性选择器中,若信号有效,则信号进入边沿选择器,将当前信号与上次信号进行比对,观察是上升沿或是下降沿,分到不同的选择通道中去
c、③被选择的上升或下降沿的信号再次通过触发源的选择,主动是触发从模式Reset,将CNT的值值为0,就像①中所表示的那样
d、④CNT的值每进入一个上升沿的周期,就会被传给CCR进行保存
④PWMI的结构

PWMI与输入捕获的不同在于多了TIFP2的一个输入通道,这个通道的作用在于可以TIFP1测频率的同时,利用TIFP2计算占空比,利用上升沿到下降沿的时间,得到高电平保持时间