【定时器基本定时的功能】:定一个时间,让定时器每隔这个时间产生一个中断,达到每隔一个固定时间执行一段程序的目的。
- 定时器TIM(Timer)
- 可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
- 可以理解为计数器,计时的过程是对基准时钟进行计数的功能。在STM32中,定时器的基准时钟一般是主频72MHz。(周期是频率的倒数)
- 这个基准时钟就是单片机的时钟周期,就是主频的倒数,CPU中最小的时间单位,定时器就是对这个时钟周期进行计数,看过了多少个时钟周期
- 时基单元:16位计数器,预分频器,自动重装寄存器。都是16位的。2^16 = 65536。如果预分频器设置最大,自动重装也设置最大,定时器的最大定时时间是72M/65536/65536 = 中断频率 = 1 / 59.65s(第一个65536是自动重装最大值,达到最大值计数器加一,计数器最大也是65535),周期接近一分钟。
- 不仅具备基本的定时中断功能,而且还包含内外时钟源选择,输入捕获,输出比较,编译器接口,主从触发模式等多种功能
【定时器类型】:这三种定时器是由高到低向下兼容的
【基本定时器框图】
【定时中断】
- 预分频器可以对72MHz的计数时钟进行预分配,对输入的基准频率提前进行一个分频的操作
-
- (寄存器写0是不分频,输出频率 = 输入频率 = 72MHz),(预分频器写1是2分频,输出频率 = 输入频率 / 2 = 36MHz)。
- 实际分频系数 = 预分频系数 + 1。
- 目的:把72MHz分成想要的频率。比如1MHz,每周期1us,这样便于计算。
- 记忆:刀切蛋糕,一刀切两块
- 理解:预分频器实质是寄存器,如果设置值为3,则每个时钟上升沿预分频加一。取值范围为(0 1 2 3)。四个数,就是4分频
-
- 计数器:对预分频后的计数时钟进行计数(向上计数)
-
- 计数时钟每来一个上升沿,计数器的值+1,故计数器的值会在计时过程中不断地自增运行
- 当自增到目标值时产生中断,完成定时的任务
-
- 所以需要一个存储目标值的寄存器:自动重装载寄存器:
-
- 其中存储的是写入的计数目标
- 在运行过程中,计数值不断自增,自动重装值是固定的目标,当计数值等于自动重装值时,也就是计时时间到了
- 产生中断信号,并清零计数器,计数器将自动开始下一次的计数计时
-
【主模式触发DAC】:能让内部的硬件在不受程序的控制下实现自动运行
- 用DAC输出一段波形,每隔一段时间触发一次DAC,让它输出下一个电压点
- 定时器设计了一个主模式:把【定时器的更新事件】映射到触发输出TRGO(Trigger Out)的位置,TRGO直接接到DAC(数模转换器)的触发转换引脚上
【通用定时器】
对于基本定时器而言,只能选择内部时钟,也就是系统频率72MHz。对于通用定时器,时钟源不仅可以选择内部的72MHz时钟,还可以选择外部时钟
【】
标签:分频,定时器,计数,72MHz,Tim,计数器,外设,时钟 From: https://www.cnblogs.com/woyaobiye/p/17319672.html