TIM定时器
1,定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。
2,16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。
3,不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。
4,根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。
而我们通常使用的STM32F103C8T6定时器资源有这几种:TIM1、TIM2、TIM3、TIM4
TIMX内部结构以及特性
通用定时器的时钟
如图上图98所示,当通用定时器使用内部时钟作为时钟源时,时钟CK_ INT 来自APBI:当APB1预分频系数(AHB/APB1)为1时,CK_ PSC 的频率就是APB1的频率;当APBI的预分频系数不为1时,CK PSC的频率就是APB1频率的2倍。例如,AHB时钟频率是72MHz, APB1时钟频率是36MHz,则APB1的预分频系数为AHB/APB1=2,不为1.故CK_ PSC 的频率= APB1X2=72MHz。CK_ PsC时钟经过PSC预分频器分频后,生成CK_CNT时钟,CK_ CNT 频率=CK_ PSC 频率/(PSC+ 1),其中PSC是分频器的分频系数。CK_CNT时钟就是通用定时器的时钟。
时基单元
可编程通用定时器的主要部分是一- 个16 位计数器和与其相关的自动装载寄存器预分频寄存器。这个计数器可以向上计数、向下计数或者向上/向下双向计数。此计数器时钟是前面提到的CK_ CNT时钟。计数器、自动装载寄存器和预分频器寄存器可以由软件读写,在计数器运行时仍可以读写。
时基单元包含计数器寄存器(TIMx_ CNT)、预分频器寄存器(TIMx_ PSC) 和自动装载寄存器(TIMx_ ARR)。 其中计数器寄存器(TIMx_ CNT)偏移地址为0x24,复位值为0x0000,位域图和详细叙述见图7.2和表7.1;预分频器寄存器(TIMx_ PSC) 偏移地址为0x28,复位值为0x0000,位域图和详细叙述见图7. 3和表7.2
从最开始的图98可以观察自动装载寄存器(TIMx_ ARR)下有阴影,表示此处有影子寄存器,即写自动装载寄存器(TIMx_ ARR)时,并不能立即起作用,需要将自动装载寄存器TIMx_ ARR的值送人影子寄存器后才能起作用。可以编程设置自动装载寄存器TIMx_ ARR的内容被立即或在每次的更新事件(一般是指计数器溢出)时传送到影子寄存器。
计数器模式
计数器有3种计数模式
向上计数模式
在向上计数模式中,计数器从0计数到自动加载值(TIMx_ ARR寄存器的内容个,然后重新从0开始计数并且产生一个计数器溢出事件,每次计数器溢出时可以产生更新事件。15所示为内部时钟分频因子为2,自动装载寄存器(TIMx. ARR)值为0x36时的时序图。
2.向下计数模式
在向下模式中,计数器从自动装人的值(TIMx_ARR的值)开始向下计数到0,然后
自动装入的值重新开始并且产生一个计数器向下溢出事件,每次计数器溢出时可以产生更新事件。图7.6所示为内部时钟分频因子为2,自动装载寄存器(TIMx_ ARR)值为0x36时的时序图。
3.中央对齐(向上/向下双向计数)模式
在中央对齐模式,计数器从0开始计数到自动加载的值(TIMx_ ARR寄存器)- -1.产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;接着再从0开始重新计数,可以在每次计数上溢和每次计数下溢时产生更新事件。如图7.7所示为内部时钟分额因子为1.自动装载寄存器(TIMx_ ARR)值为0x6时的时序图。
结束