一、TIM定时器简介
•TIM(Timer)定时器
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
-
16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时
- 计数器(CNT):执行计数定时的寄存器,每来一个时钟,计数器加1。
- 预分频器(PSC):用于对计数器时钟的分频,使计数更加灵活
- 自动重装寄存器(ARR):计数的目标值,就是我想要多少个时钟申请中断
- 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
- 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
二、定时器类型
注意:
-
高级定时器总线在APB2,通用定时器总线在APB2,GPIO总线也在APB2
-
在C8T6定时器中,只有一个TIM1高级定时器;TIM2、3、4三个通用定时器。
高级定时器框图
通用定时器框图
通用计数器不止内部时钟,还有外部时钟这也就使得通用计数器拥有除去72mhz输入频率外,TIMx_ETR其他外部输入频率了。
基本定时器框图
预分频器PSC、自动重装寄存器ARR、计数器CNT三个寄存器构成了定时器最重要的时基单元
第一部分流程
RCC的TIMxCLK输入信号 ---> CK_INT内部时钟 ---> CK_PSC输入端 ——在经过PSC预分频器的赋值处理。
【当PSC=0 不分频 PSC=1 分1/2频 PSC=2 分1/3频 PSC=3 分1/4频】
即实际分频系数=预分频器的值+1
第二部分
预分频器分频后的值CK_CNT进入计数器(CNT)计数器对其计数【每来一个上升沿计数加一】计数器为16为寄存器0~65535,ARR自动重装寄存器也是16位。
也就是说,ARR可以在0-65535中设定一个值A,该值A能作为界限,当CNT自增到该值A时(CNT=ARR)产生中断并且清除计数器归零。
第三部分
第二部分产生的中断如下图所示UI “更新中断” ---> NVIC【我们配置好NVIC定时器】
如产生U我们称为 “更新事件”
【更新事件不会产生中断,但是可以触发内部其他电路的工作】