TIM定时中断:定时器介绍

一、TIM简介

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

    类型 型号 总线 功能
    高级定时器 TIM1、TIM8 APB2 拥有通用定时器全部功能、并额外具有重复计数器、死区生成、互补输出、刹车输入等功能
    通用定时器 TIM2、TIM3、TIM4、TIM5 APB1 拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能
    基本定时器 TIM6、TIM7 APB1 拥有定时中断、主模式触发DAC的功能
  • 个人使用的时STM32F103C8T6芯片,所以定时器资源:TIM1、TIM2、TIM3、TIM4
  •  三、基本定时器

     图3-1基本定时器

    基本定时器中有三个重要的寄存器,分别是预分频器、计数器、自动重装寄存器,构成了最基本的计数计时电路,这块电路叫做时基单元。

     预分频器,连接的是基准计数时钟的输入,基本定时器只能选择内部时钟,连接的是CK_INT,来源是RCC_TIMxCLK,频率值一般都是系统的主频72MHz。

    预分频器:可以对72MHz的计数时钟进行预分频,比如这个计数器写0,就是不分频,或者说是1分频,输出频率=输入频率=72MHz。如果预分频器写1,就是2分频,输出频率=输入频率/2=36MHz;如果写2,就是3分频,输出=输入/3,以此类推。所以实际分频系数=预分频器的值+1。预分频器是16位,所以最大值写65535,也就是65536分频。

    计数器:可以对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就加1,计数器也是16位,范围在0~65535,超过65535,计数器就会回到0重新开始。所以计数器的值在计时过程中会不断自增运行,当自增运行到目标值时,产生中断,那就完成了定时的任务,如图3-2,当计数值到达目标值时,产生中断信号,清零。

     图3-2

     自动重装寄存器:存储目标值的寄存器,也是16位,存的是我们的计数目标。运行过程中,计数值不断自增,自动重装值是固定的目标,当计数值等于自动重装值时,也就是计时时间到,产生中断信号,开始下一次计数计时。

     图3-1中自动重装载寄存器出现的向上折线箭头,代表是产生的中断信号,计数值等于自动重装值产生的中断叫做“更新中断”,“更新中断”会通往NVIC,再配置好NVIC的定时器通道,最后在CPU得到响应;向下的折线箭头,代表的是产生一个事件,对应的叫做“更新事件”,不会触发中断,但是触发内部其他电路的工作。

    四、通用定时器

     图4-1通用定时器框图

    图4-2 

    通用定时器:最核心的一部分,是时基单元结构与基本定时器一样。

    内外时钟源选择:对于基本定时器而言,定时只能选择内部时钟,也就是系统频率为72MHz,通用定时器,时钟源不仅可以选择内部72MHz时钟,还可以选择外部时钟。

  • 外部时钟:TIMx_ETR引脚的外部时钟,在图4-2可以看到TIMx_ETR,意思就是TIMx_的CH1和ETR都复用在这个位置,也就是PA0引脚
  • 图4-3 

    外部时钟模式2:我们在TIM2的ETR引脚,在PA0上借一个外部方波时钟,配置好内部的极性选择,边沿检测和预分频器电路,再配置输入滤波电路,这两块电路可以对外部时钟进行一定的整形,(外部引脚的时钟,难免会有些毛刺,这些电路可以对输入的波形进行滤波)滤波后的信号分两路,上面一路ETRF进入触发控制器,接着就可以选择作为时基单元的时钟。

    外部时钟模式1:TRGI主要时用作触发输入来使用的,这个触发输入可以触发定时器的从模式,当TRGI当作外部时钟来使用的时候,这一路叫做“外部时钟模式1”。

     ITR信号:这一部分的时钟信号是来自其他定时器的,从右边可以看出,这主模式TRGO可以通向其他定时器,通向其他定时器时,就接到了其他定时器的ITR引脚上来,ITR0~ITR3分别来自其他4个定时器的TGRO输出

     图4-4ITR与定时连接器连接关系表

    级联:通过ITR与其他4个定时器的连接,可以实现定时器级联的功能,可以有图4-4所示

    例1:初始化TIM3,然后使用主模式把它的更新事件映射到TRGO上,再初始化TIM2,选择ITR2,对应的就是TIM3和TRGO,再选择时钟为外部时钟模式1,这样TIM3的更新事件就可以驱动TIM2的时基单元,就实现了定时器的级联。

    例2:选择TI1F_ED,连接输入捕获单元的CH1引脚,就是从CH1引脚获得时钟,这里后缀加一个ED(Edge)就是边沿的意思,也就是通过这路的时钟,上升沿和下降沿均有效。

    总结:外部时钟模式1输入:ETR引脚,其他定时器CH1引脚的边沿,CH1引脚和CH2引脚。一般情况选外部时钟选择ETR引脚外部时钟模式2输入即可。

     图4-5

    由图4-5,左边一块是输入捕获电路,由四个通道,对应的是CH1至CH4引脚,可以用于测输入方波的频率等。

    右边一块是输出比较电路,总共由四个通道,分别也是对CH1至CH4引脚,可以用于输出OWM波形,驱动电机

    中间的寄存器是捕获比较寄存器,是输入捕获和输出比较电路公用的,因为输入捕获和输出比较不能同时使用,所以这里的寄存器是共同的,引脚也是用公用的。 

    五、高级定时器

     图5-1高级定时器

    高级定时器如图5-1,左上部分没有太大的变化,主要改动的是右边的部分

    重复计时器 :在申请中断的地方增加了一个重复次数计数器,有了这个计数器,可以实现每隔几个计数周期才发生一次更新事件和更新中断

    原来的结构是每个计数周期完成后就都回发生更新,现在有个重复计数器,可以实现每隔几个周期再更新依次,相当于对输出的更新信号又做了依次分频,对于高级定时器,之前计算最大定时的事件是59s多,在这里再成一个65536,提升了很多定时的事件,这就是重复计数器的工作流程

    高级定时器的输出比较模块(DTG死区生成电路和互补输出):DTG(Dead Time Generate)是死去生成电路,左边的输出引脚由原来的一个变成两个互补的输出,可以输出一堆互补的PWM波,是为了驱动三项无刷电机的。

    注:三相无刷电机的驱动电路一般需要3个桥臂,每个桥臂2个开关管来控制,总共需要6个功率开关管来控制,所以这里的输出PWM引脚的前3路就变成了互补的输出而第四路没有什么变化,因为三相电路只需要三路

     图5-2死区生成电路

    如图5-2,为了防止互补输出的PWM驱动桥臂时,再开关切换瞬间,由于器件的不理想,造成短暂的直通现象,所以前面这里加上死区生成电路,再开关切换的瞬间,产生一定时长的死区,让桥臂的上下管全部关断,防止直通现象。

    刹车输入功能:是为了给电机驱动提供安全保障的,如果外部引脚BKIN(Break IN)产生了刹车信号,或者内部时钟失效,产生了故障,那么控制电路就会自动切断电机的输出,防止意外的发生。

    物联沃分享整理
    物联沃-IOTWORD物联网 » TIM定时中断:定时器介绍

    发表评论