STM32通用定时器原理

一 STM32通用定时器原理      

      通用定时器 是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。                 

       STM32 系列的CPU,有多达8个定时器,其中TIM1TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。stm32f103通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器。

       下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:

       从图中可以看出,定时器的时钟不是直接来自APB1APB2,而是来自于输入为APB1APB2的一个倍频器,图中的蓝色部分。

       下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为24816)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。

       可能有同学还是有点不理解,OK,我们举一个例子说明。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;

        当预分频系数=1时,APB1=36MHzTIM2~7的时钟频率=36MHz(倍频器不起作用)

        当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz

有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时。

Stm32外设用户手册,如图:

       再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。


你可能感兴趣的:(stm32)