TIM定时器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、TIM简介
  • 二、定时器类型
  • 三、定时中断基本结构
  • 四、各模块时序
    • 1.预分频器时序
    • 2.计数器时序
      • 计数器无预装时序
      • 计数器有预装时序
    • 3.RCC时钟树
  • 总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、TIM简介

  1. TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
  2. 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时
  3. 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
  4. 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型

二、定时器类型

1.基本定时器

        基本定时器,它的功能最少,只有基本的定时中断功能。和一个主模式触发DAC的功能,所以基本定时器还可以和DAC联合使用。

         方框部分,有三个最重要的寄存器,分别是预分频器,计数器,和自动重装寄存器,他们构成了最基本的计数计时电路,所以这一块电路叫做时基单元,预分频器之前,连接的就是基准计数时钟的输入(CK_PSC),最终来到控制器部分,由于基本定时器只能选择内部时钟,所以你可以直接认为红色那根线直接连到了输入端的这里,也就是内部时钟CK_INT,内部时钟的来源时RCC_TIMxCLK,这里的频率值一般都是系统的主频72MHz。所以通向时基单元的计数基准频率就是72MHz。

        预分频器:它可以对这个72MHz的计数时钟进行预分频,比如:

PSC预分频器写0,那就是不分频或者说1分频,这时候输出频率=输入频率=72MHz

PSC预分频器写1,那就是2分频,这时候输出频率=输入频率/2=36MHz

 所以预分频器的值和实际的分频系数相差了1,

即实际分频系数 = 预分频器的值 + 1

       计数器:对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就+1,

16位,范围为0~65535,加到65535再加的话就会回到0重新开始

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

        更新中断(UI):更新中断会通往NVIC,我们配置好NVIC的定时器通道那定时器的更新中断就能够得到CPU的响应了。

        更新事件(U):更新事件不会触发中断,但可以触发内部其他电路的工作。

以上这些就是,定时器中断的全部流程了。

2.通用定时器

        通用定时器拥有基本定时器的全部功能,时钟源不仅可以选择内部的72MHz时钟还可以选择外部时钟

        第一个外部时钟:来自TIMx_ETR引脚上的外部时钟,“外部时钟模式2”

        第二个外部时钟:TRGI(Trigger In),它的主要是用作触发输入来使用的,这个触发输入可以触发定时器的从模式,当TRGI当作外部时钟来使用的时候,就叫做“外部时钟模式1”.

        注:通过这一路的外部时钟有ETR引脚的信号(蓝色线),这里的ETR引脚

1.既可以通过上面这一路(红色线)进来当作时钟

2.又可以通过下面这一路进来当做时钟。

这两种情况对于时钟输入而言是等价的,只不过是下面这一路输入会占用触发输入的通道而已。

          总结:外部输入时钟模式1的输入可以是ETR引脚,其他定时器,CH1引脚的边沿,CH1引脚和CH2引脚,一般情况下外部时钟通过ETR引脚就可以了。

        

         与基本定时器不同的是通用定时器和高级定时器,除了支持向上计数模式还支持向下计数模式和中央对齐模式

3.高级定时器

        与上面两个定时器不同的地方:

       1.重复次数计数器:可以实现每隔几个计数周期才发生一次更新事件和更新中断。原来的结构是每个计数周期完成后就都会发生更新。

        2.DTG死区生成电路:用来驱动三相无刷电机。

        3.刹车输入的功能:为了给电机驱动提供安全保障的。

        

 三、定时中断基本结构

        这里的中断信号(红框)会先在状态寄存器(黄框)里置一个中断标志位,这个标志位会通过中断输出控制,到NVIC申请中断。

        问题来了,为什么会有个中断输出控制呢?

因为这个定时器模块有很多地方都要申请中断,所以这个中断输出控制只选择自己需要的中断,

        简单来说,这个中断输出控制就是一个中断输出的允许位,如果需要某个中断,那就允许,如果不需要,那就禁止。

 四、各模块时序

  • 1.预分频器时序

        下面三行时序:描述的是这个预分频寄存器的一种缓冲机制

        1.预分频控制寄存器:

        供我们读写用的,它并不直接决定分频系数

        2.预分频缓冲寄存器:

        比如我们在某个时刻,把预分频控制寄存器由0改成了1,如果在此时刻立刻改变时钟的分频系数,那就会导致,在一个计数周期内,前半部分和后半部分的频率不一样。这样,当计数计到一半时改变了分配值,这个变化并不会立刻生效,而是会等到本次计数周期结束时产生了更新事件。预分频控制寄存器的值才会被传递到缓冲寄存器里面去,才会生效。

        3.预分频计数器:内部实际上也是靠计数来分频的。

当预分频值为0时,计数器就一直为0,直接输出原频率

当预分频值为1时,计数器就0,1,0,1,0,1这样计数,回到0的时候输出一个脉冲,这样输出频率就是输入频率的二分频。

   注:预分频器的值和实际分频系数之间有一个数的偏移。

  • 2.计数器时序

计算定时时间的一个式子:72MHz/(PSC+1)/(ARR+1)  

        就能得到溢出频率,如果想算溢出时间,那就只需要再取个倒数就行了。

    • 计数器无预装时序

    • 计数器有预装时序

  • 3.RCC时钟树

 


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值