TIM定时中断
1. TIM定时器
TIM(Timer)定时器,定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。
16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。
不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。
根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。
使用该外设前一定要看清楚片上是否存在这个外设!否则会不起作用!
对于STM32F103C8T6这款芯片,它内部拥有的定时器资源是TIM1到TIM4,也就是一个高级定时器和3个通用定时器,没有基本定时器。
通过使用主模式,可以将定时器的更新事件映射到触发输出(TRGO),直接触发DAC转换,避免频繁中断主程序,实现硬件自动化。
2. 定时器类型
STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4
3. 高级定时器
TIM1/TIM8。
4. 通用定时器
TIM2-5。
5. 基本定时器
基本定时器只能选择内部时钟,这根线可以认为是直接连到了输入端的CK_INT。而内部时钟的来源是RCC_TIMxCLK,这里的频率值一般都是系统的主频72MHz。所以通向时基单元的计数基准频率就是72兆。
首先是预分频器,他可以对这个72MHz的计数时钟进行预分频。
比如这个计算器写0,那就是不分频,或者说是一分频,这时候输出频率等于输入频率,等于72MHz。如果一分频器写一,那就是二分频;输出频率等于输入频率除以二等于36兆赫兹。如果写2就是3分频,输出,等于输入除以3,以此类推。
所以预分频器的值和实际的分频系数相差的一,即实际分频系数等于预分频器的值加1。这个预分泌器是16位的,所以最大值可以写65535,也就是65536分频。
预分频器的作用,就是对输入的基准频率提前进行分频。
计数器可以对预分屏后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就加1,这个计数器也是16位的,所以里面的值可以从0一直加到6535。如果再加的话,计数器就会回到零重新开始。
TIM6/TIM7。
6. 定时中断基本结构
7. 预分频器时序
计数器计数频率:
8. 计数器时序
计数器溢出频率: