目录
1、基本功能:对输入时钟进行计数,当计数值达到预定值时触发中断。
前言
个人学习整理,仅供参考,如有错误之处烦请指正。
一、TIM定时器
1、基本功能:对输入时钟进行计数,当计数值达到预定值时触发中断。
stm32中基准时钟一般为72MHz,也就是说1秒能计数72M次==72000000次,那么我如果设定触发中断的值为72次,那么只需要1微秒;如果是72000次,需要1ms。
2、时基单元:16位的计数器、预分频器、自动重装寄存器。
在72MHz计数时钟下可实现最大59.65秒的定时。
这个59.65≈65536*65536/72000000.那这个59.65是怎么算的呢?
首先初始的频率为72MHz,来到预分频器,如果预分频器是0,那么频率不变,如果是1,那么频率变为(72/(1+1))MHz。如果是2,那么频率变为(72/(2+1))MHz。以此类推,因为它是一个16位的寄存器,所以最大是65535(因为是从零开始),所以当预分频器为最大时频率变为(72/(65535+1))MHz,也就是(72/65536)MHz.第二个65536是怎么来的?当自动重装寄存器最大时,也就是65535,CNT计数器要到65535才可以触发中断,但是下一次还是要从零开始,所以这里要给它再加1归零,所以是65536,预分频器的加1也是这样。
小总结:72000000/65536得到当前经过预分频器的频率,也就是说1秒能计数这么多次。现在要求计次数为65536,需要的时间就是用要求计次的65536/1秒计次数(72000000/65536)。最后的结果就约等于59.65s。(可以参考一下开头的那个换算)
计数器
16位,执行计数的寄存器,来一个时钟就加一。向上计数模式:从0计数到重装值,再归零。
预分频器
16位,对时钟频率按照设定值进行改变。
自动重装寄存器
16位,存储计数的目标值。
二、定时器分类
类型 | 高级定时器 | 通用定时器 | 基本定时器 |
---|---|---|---|
编号 | TIM1、TIM8 | TIM2、TIM3、TIM4、TIM5 | TIM6、TIM7 |
总线 | APB2 | APB1 | APB1 |
具体有哪些定时器要看自己单片机型号对应数据手册。