7.3.1 通用定时器
通用定时器由一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,其功能包括定时、测量输入信号的脉冲长度(输入捕获)、产生输出波形(输出比较和PWM)。通用定时器内部结构如图7.2所示。

图7.2 通用定时器内部结构
由图7.2可知,其内部结构主要由基准时钟、16位计数单元、4路输入捕获通道、4路输出比较通道、逻辑控制、中断或DMA等部件构成。
1.基准时钟
计数器基准时钟可由下列时钟源提供。
(1)内部时钟(CK_INT):由系统时钟连接到APB1上的预分频时钟源。
(2)外部时钟模式1:外部输入脚(TIx)是由输入通道输入的时钟源。
(3)外部时钟模式2:外部时钟信号输入端,从接口TIMx_ETR输入。
(4)内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1作为另一个定时器Timer2的预分频器。
在实际应用中,主要采用内部时钟作为计数器基准时钟。定时器TIM1~TIM8的内部时钟源结构如图7.3所示。
STM32F1系列MCU的系统时钟SYSCLK通过AHB(HCLK)进行1~512预分频后,分别连接到APB1、APB2和Cortex内核。假设HCLK=64 MHz,定时器TIM2~TIM7的时钟源来自APB1上的1~16预分频器,若APB1预分频系数为1,则频率不变,否则乘2送给TIM2~TIM7。假设预分频系数为1,则TIMxCLK=64 MHz。定时器TIM1和TIM8的时钟源来自APB2的1~16预分频器,若APB2预分频系数为1,则频率不变,否则乘2送给TIM1和TIM8。

图7.3 定时器TIM1~TIM8的内部时钟源结构
内核的节拍定时器SysTick的基准时钟是AHB时钟(HCLK)8分频或1分频。若HCLK=64 MHz,采用8分频,则其基准时钟为8 MHz。
2.定时器内预分频器(Prescaler,PSC)
预分频器PSC可以将CK_PSC的时钟频率按1~65 536之间的任意值分频。它是基于一个16位寄存器控制的16位计数器。它带有缓冲器,能够在工作时被改变,新的预分频器参数在下一次更新事件到来时被采用,经分频后输出的CK_CNT作为CNT计数器计数。在计算初值时,应以CK_CNT的时钟(频率或周期)作为基准值进行计算。
3.自动重载寄存器(Autoload Register,ARR)
自动重载寄存器是用来装载初值或更新初值的寄存器,用于在每次计数器溢出事件后自动将设定的计数值重新加载到计数器中。
例如,设HCLK=64 MHz,要实现10 ms的定时,定时器采用向下计数方式,下面计算初值。若APB1上的时钟未预分频,则TIMxCLK=64 MHz。通过PSC实现64分频,则得到fCK_CNT=1 MHz,时钟周期TCK_CNT=1μs。设计数次数为N,则可通过式(7.1)计算。
![]()
可计算出,N=10 000,即要对CK_CNT计数10 000次才能达到10 ms。定时器采用向下计数方式,即计到0表示计满溢出。所有初值ARR=10 000-1=9 999。(https://www.daowen.com)
4.计数器(Counter,CNT)
CNT计数器是一个16位的计数器,计数范围为0~65 535,可以向上计数、向下计数、双向计数。计数器按照预先设定的计数方式计数,当计数计满时将发生溢出,若使能中断或DMA,则产生中断或DMA,然后由自动重载寄存器进行重新加载和更新。
5.输入捕获
输入捕获的工作原理如图7.4所示。定时器在基准时钟(TCK_CNT)的作用下,从初始状态开始计数。计数过程中,当遇到外部输入脉冲上升沿t1(下降沿也可)时,将定时器计数值A捕获,当遇到外部输入脉冲下一个周期的上升沿后,将定时器计数值B捕获,同理,后续输入脉冲可分别捕获上升沿定时器的计数值。由此可计算出捕获脉冲的周期T,如式(7.2)所示。

图7.4 输入捕获的工作原理
![]()
例如,基准时钟是36 MHz,测得A=2400,B=6000,要计算外部脉冲信号周期T、频率f。根据输入捕获的原理,可得
频率f=10 kHz。
STM32F1系列MCU中的通用定时器和高级定时器均拥有4个同样的捕获通道,其结构由4位数字滤波器和边沿检测器、预分频器、捕获寄存器和基本定时器构成。
6.输出比较
输出比较主要用于产生PWM。PWM控制技术是利用MPU的数字输出来对模拟电路进行控制的一种非常有效的技术,在测量、通信、功率控制、电源变换等领域广泛应用。PWM控制技术以其控制简单、灵活和动态响应好的优点成为电力电子领域中应用广泛的控制技术,也是研究的热点。
PWM波形形成原理如图7.5所示。计数器从初始值开始计数。计数过程中,当计数值与比较器的比较值相等时(如比较值A),则输出PWM波形从逻辑0翻转成逻辑1;当计数值达到设定的初值时,PWM波形从逻辑1翻转成逻辑0,下一个周期持续,形成图7.5所示的PWM波形A。同理,若改变比较值(如比较值B),则输出PWM波形B,两个波形的周期相同,占空比不一样。

图7.5 PWM波形形成原理
PWM波形的周期
占空比D=(计数初值-比较值)/计数次数。
例如,要产生f=72 kHz、占空比为20%的PWM波形,计算计数初值和比较值。假如定时
器基准时钟为72 MHz,有则计数次数N=1 000,计数初值=1 000-1,比较值=800-1。
STM32F1系列MCU中的通用定时器和高级定时器均拥有4个同样的比较输出通道,其结构由基本定时器、比较器、输出控制器构成。可以产生边沿对齐模式如图7.6所示和中心对齐模式如图7.7所示的PWM脉冲。

图7.6 边沿对齐模式

图7.7 中心对齐模式