TIM简介
TIM(Timer)定时器
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型,基本定时器只能向上计数,通用和高级有向上、向下、中央对齐三种计数方式。
CK_PSCS是时钟预分频,如果预分频写0,那就是不分频,如果预分频写1,那就是分频为2,输出频率=输入频率/2=36MHZ,以此内推,所以实际分频系数等于预分频系数+1;该预分频器是16位的,所以为啥分频为65536,写的时候为65535,计数器对来自预分频的时钟进行计数,每来一个上升沿就+1,这个计数器是16位的,里面的值从0加到65535,当自增到目标值时,就会产生中断,自动重装载寄存器(也是16位的)用来存储目标值,计数器又从0开始自增,UI是更新中断,当达到计数值,就会触发中断,这个更新中断会通往NVIC,配置好NVIC的定时器通道后,定时器中断就可以得到CPU响应了。下面箭头为更新事件,不会触发中断,但是会触发内部其他电路工作。主模式触发DAC在后面讲解。
下面来看看通用定时器:
基础定时器只能通过内部时钟CK_INT,而通用定时器还可以通过外部时钟ETR,这里可以在这个ETR引脚也就是(PA0引脚,可以根据引脚定义表查看)接个外部方波时钟,通过滤波,这时候信号兵分两路,上一路通过ETRF进入触发控制器,紧跟着可以选择作为时基单元始终了,这一路也叫做外部时钟模式2。还有TRGI也可以提供时钟,主要用作触发输入来使用,可以触发定时器的从模式,当TRGI当做外部时钟来看的时候,就是外部时钟模式2,这两种方式是等价的,只不过下面一种会占用触发通道。还可以是TIIF_ED的边沿信号,来自于输入捕获TIMx_CH1的时钟,TRC信号来自于其他定时器ITRX,通过TRGO输出,具体看表:
定时器级联:首先初始化TIM3,然后通过主模式把它的更新事件映射到TRGO上,然后再初始化TIM2,对应的就是ITR2,再选择时钟为外部时钟模式1,TIM3的更新事件就能驱动TIM2的时基单元,实现定时器级联。
高级定时器:
在通用定时器的基础上,多了个REP寄存器,可以重复几个周期再触发,实际上就是进行了分频,在输出比较多了3个输出,为互补输出,用来形成互补的PWM波,用来驱动三相无刷电机。DTG为死区生成电路,在开关开关瞬间,产生一定时长死区,防止直通现象。TIMX_BKIN为输入刹车功能,给电机驱动提供安全保障,如果外部引脚产生刹车信号,或者内部时钟失效产生故障,那么控制电路就会自动切断电机输出,防止意外的发生。
加中断的原因:因为有很多功能需要用到中断,所以需要加个中断允许位。
加入预分频缓冲器防止一个周期内的频率不一致。
自动加载影子寄存器防止目标值突变导致计数一直找不到目标值,比如刚好计数到F5,目标值突变为36,这时就会继续一直增加,直到溢出,因为找不到目标值36.
这个自行理解一下。