Tim定时器【功能最强大结构最复杂的外设】

发布时间 2023-04-14 19:52:19作者: 整点薯条拯救一切

定时器基本定时的功能】:定一个时间,让定时器每隔这个时间产生一个中断,达到每隔一个固定时间执行一段程序的目的。

  • 定时器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时钟,还可以选择外部时钟

【】