STM32 TIM定时器的小笔记

TIM定时器:

  1. 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断

2.STM32定时器拥有16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。

3.不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获输出比较编码器接口主从触发模式等多种功能

4.根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。

定时器的类型:

基本定时器结构:

功能:定时中断、主模式触发DAC

总线:APB1

编号:TIM6,TIM7

计时模式:向上计数模式(从0到重装值)

预分频器(16位):可以对计数器的时钟(一般主时钟)进行分频,例如这个寄存器写0,就是不分频或者一分频,输出频率等于输入频率。写1,分频系数就是二分频,输出频率等于输入频率的二分之一,最大可以65535分频。

计数器(16位):可以对预分频后的计数时钟进行计数,每来一个上升沿计数器加一,一共可加至65535,直至自增运行到目标值时,产生中断,就完成了定时的任务。

自动重装寄存器(16位):存储目标值的寄存器,就是它存的是我们写入的计数目标 。在运行的过程中,计数值不断自增,自动重装值是固定的目标,当计数值等于自动重装值时,就是计数时间到了,那他就会产生一个中断信号,并且清零计数器,计数器自动开始下一次的计数计时。

图中向上的箭头代表会产生中断信号,像这种计数值等于自动重装值产生的中断,叫做“更新中断”,更新中断之后会前往NVIC,,我们再配置好NVIC的定时器通道,那定时器的更新中断就能得到CPU的响应了。

图中向下的箭头代表会产生事件,叫做更新事件,更新时间不会触发中断,但可以触发内部其他电路的工作。

通用定时器结构图:

功能:定时中断、主模式触发DAC,内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等

总线:APB1

编号:TIM2~TIM5

计时模式:向上计数模式(从0到重装值),向下计数模式(从重装值到0),中央对齐模式(先从0到重装值,再从重装值到0,以此往复)

通用定时器时钟源不仅可以使用内部的72MHz时钟,还可以选择外部时钟例如TIMx_ETR引脚上的外部时钟,TRGI的外部时钟,

高级定时器结构图:

功能:定时中断、主模式触发DAC(以上为基本定时器功能),内外时钟源选择、输入捕获、输    出 比较、编码器接口、主从触发模式(以上为通用定时器功能),重复计数器、死区生成、互补 输出、刹车输入等

总线:APB1

编号:TIM2~TIM5

计时模式:向上计数模式(从0到重装值),向下计数模式(从重装值到0),中央对齐模式(先从0到重装值,再从重装值到0,以此往复)

定时器时钟源:内部RCC时钟外部ETR时钟以及触发输入当外部时钟的ITRx其他定时器,ETR外部时钟,TLx输入捕获通道。

预分频器PSC

CK_PSC定时器时钟源

CNT_EN,使能端

CK_CNT,定时器时钟

PSC:预分频值

计数器寄存器CNT和ARR自动重装器:

内部时钟分频因子就是分频系数=CK_PSC(分频值)+1

接下二图:预分频器为了防止计数中途更改数值造成错误,设计了缓冲寄存器,例如以下两图,无序是没有缓冲寄存器的,有序则有,通过设置ARPE位,就可以选择是否使用预装功能

可以看出:

无预装时序,当ARR从FF更改到36,计数器寄存器CNT在到达36后产生更新事件并清零。

有预装时序,当ARR从F5更改到36,ARR下面的自动重装影子寄存器才是真正起作用的,它依旧是将计数到计数目标F5后,产生更新事件。同时,要更改的36才被传递到影子寄存器,在下一个计数周期这个更改的36才有效。

所以,引入这个影子寄存器的目的实际是为了同步,就是让值的变化和更新事件同步发生,防止在运行途中更改造成错误。

RCC时钟数结构图:

这个时钟数就是STM32中同来产生和配置时钟并且把配置好的时钟发到到各个外设的系统,

官方的TIM函数(库函数)及定时器定时中断的使用步骤:

1.开启时钟。每个程序都必须的第一步,打开内部时钟源,GPIO外设。

2.选择时基单元的时钟源。定时器定时中断选择内部时钟源。

3.配置时基单元。配置预分频器,自动重装器和计数器这三个寄存器。

4.配置输出中断控制,允许更新中断输出到NVIC.

5.配置NVIC,在NVIC 中打开定时器中断的通道,并分配一个优先级。

6.运行控制。

7.使能定时器打开中断。

8.写定时器中断服务程序。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值