TIM定时中断(内含:1.TIM简介+2.定时器类型+3.基本定时器+4.通用定时器+5.高级定时器+6.定时中断基本结构+7.预分频器时序+8.计数器时序+9.计数器有/无预装+10.RCC时钟树)

简介: TIM定时中断(内含:1.TIM简介+2.定时器类型+3.基本定时器+4.通用定时器+5.高级定时器+6.定时中断基本结构+7.预分频器时序+8.计数器时序+9.计数器有/无预装+10.RCC时钟树)

本章知识较难,理解为主。


本章分为四节,该本章是第一节内容。TIM定时中断,主要讲定时器基本定时功能,即定一个时间,每隔这个时间定时器产生一个中断,从而实现每隔一个固定时间执行一段程序的目的。


第二节内容,主要讲输出比较功能。最常用于PWM波形,用于驱动电机等设备。


第三节内容,主要讲定时器输入捕获功能。使用输入捕获模块实现测量方波频率。


第四节内容,主要讲定时器的编码器接口。使之读取正交编码器的输出波形。常用于编码测速。


1.TIM简介:


bd9e0586b6144b159453949895005e85.png


解释:计数器是执行计数定时的寄存器。预分频器是分频计数器的时钟。自动重装寄存器设计使用几个时钟申请中断。时基单元由这三部分构成,也是定时器最重要的部分。当计时器,预分频器,自动重装寄存器均设置为最大(2的16次方,即65536时),定时器最大定时时间为59.65s。


即中断频率f=72M/65536/65536.....T=1/f=59.65s。STM32可级联,即一个定时器输出当另一个定时器输入(原理图在后面)。此时为59.65*65536*65536,约为8000多年。当然,还可以再级联,为59.65秒*65536*65536*65539*65539,约为34万亿年。


2.定时器类型:


88bc13a4e3f84b718b02329565c638f9.png


解释:定时器是高级到低级向下兼容的。高级定时器拥有通用定时器全部功能,以此类推。


STM32F103C8T6拥有1个高级定时器TIM1和三个通用定时器TIM2,TIM3,TIN4。不同设备定时器不一样,因此,一定要注意有没有要操作的外设。


3.基本定时器结构图:


69aabdb3c5b04135bd5dce4111e5caba.png


解释:基本定时器完成定时中断,主模式触发DAC功能。


RCC的CLK如图步骤进入预分频器,选择分频(写1,为2分频,输出频率=输入频率/2;写2,为3分频,输出频率=输入频率/3...)或者不分配(寄存器写0)。


此处可知,实际分频系统=预分频器值+1.预分频器16位,最大值为65535,实际分频为65536.


计数器:对预分频后的时钟计数。计数时钟每一个上升沿,计数器值+1,最大值为65535(16位)。再次增加又变为0重新开始。计数器会自增,当自增到目标值时,产生中断,完成定时任务。


自动重装寄存器存储固定目标。当计数器值等于自动重装寄存器值时,计数时间到。产生中断信号并清零计数器。计数器自动开始下一次计数计时并激活图中1或2.


图中1向上箭头为产生中断信号,也叫更新中断,连接NVIC。


图中2向下箭头对应的叫更新事件。不会触发中断,但会触发内部其他电路的工作。


不使用DAC时:走图中1向上箭头,传递给DAC。定时器产生中断,即更新中断,每隔一段时间就手动触发一次DAC转换,使DAC输出。影响主程序的运行和其他中断响应。


主模式触发DAC功能原理(图中右上角):走图中2向下箭头,并同内部时钟CK_INT处传递给触发控制器。不需要经过中断触发DAC。


4.通用定时器:


0ee1b69ec20d4e74bd6a4c079b86c2fc.png


中间部分仍为时基单元。但是,通用定时器,高级定时器计数模式不只有向上计数模式,还有向下计数模式和中央对齐模式。


上部分,简单定时器只能选择72MHz,但是通用定时器可以选择外部时钟。如最左侧输入部分的TIM_ETR外部时钟。画出来的路线均为外部时钟输入模式。


外部时钟引脚包括:ETR引脚,其他定时器,CH1引脚边缘,CH1引脚,CH2引脚。


下半部分右圈内为输出比较电路,共有四个通道,分别对应CH1到CH4的引脚。用于输出PWM波形,驱动电机等。


下半部分左权为输入捕获电路,也是有四个通道,对应也是CH1到CH4的引脚。用于测量方波的频率等。


输入输出不能同时使用。


5.高级定时器:


1d30c3f0a4144deebd92ee6d1923d80f.png


解释:第二个圈里上方多了个重复次数计数器,作用:实现可调节几个周期才更新一次的命令,而不是之前的一个周期更新一次。


DTG为死区生成电路,为了防止互补输出的PWM驱动桥臂时,在开关切换的瞬间造成短暂的直通现象。输出引脚可以生成一队互补的PWM波形,完成驱动三项无刷电机。


最下方为当外界产生刹车信号或内部失效产生故障时,控制电路自动切断电机的输出。达到刹车输入功能。


6.定时中断基本结构:


ca47e3f6dbeb413a874f496f9b44a7c7.png


运行控制,控制寄存器的一些位,如启动停止,向上或向下计数等,操作这些寄存器就能控制时基单元。


中断输出控制:筛选中断申请,需要则运行,否则不允许。


7.预分频器时序:


1bb7e695fb5841d395c01b0702c59d70.png


注:此处要结合基本定时器图对照理解。


CNT_EN:计数器使能。高电平正常运行,低电平停止。


主要定时器时钟,后半段,预分频器系数变为2,计数器时钟也变为之前的一半。且计数器寄存器也在此时从FC变为00.ARR的自动重装值为FC,当计数值和重装值相等,并且下一个时钟来临时,计数值清零。同时产生更新事件。


如图上箭头处,将0改为1,会使频率发生改变,因此设计缓冲机器(也叫影子寄存器).使变化延迟到周期结束,产生更新事件才会生效。


8.计数器时序:


d005a46e1a1f4415a7d44ce53f915548.png


计数器寄存器自增,当增到0036时,溢出变为0000,产生更新事件和更新中断标志。但是更新中断标志需要手动清0.


9.计数器有/无预装时序图:


83446b5398e84fffb28a0a503c2671a7.png


箭头处,输入36,计数器寄存器到达36直接清零,计时器溢出,更新事件和更新中断标志


7f03023508584ef48076d9716ec63b3e.png


箭头处,输入36,并不能直接起作用,真正起作用是影子寄存器,使计数器寄存器完成原来的F5变为00之后才自动溢出,而不是到达36溢出。


注:再通用寄存器,高级寄存器等图中可观察有无阴影即可看出有无缓冲寄存器。可手动调节是否使用缓冲寄存器。(设置ARPE位)


10.RCC时钟树:


6638a22a2bc042b284265dc7eeed99c7.png


注:RCC时钟树是最先需要配置的东西。


该配置较麻烦,ST工作已配置好SystemInit函数.


左侧为时钟产生电路,右侧为时钟分配电路。


配置SystemInit函数如图。选择8MHz,9倍倍频,变为72MHz。此时上部分RSI部分不连通。


相关文章
|
Linux 调度
按键消抖的两种方法--中断延迟工作与定时器
按键消抖的两种方法--中断延迟工作与定时器
656 0
|
23天前
|
数据采集 传感器
定时中断基本结构
【10月更文挑战第21天】定时中断是在微控制器或计算机系统中,按预设时间间隔自动触发中断请求的机制。它由定时器硬件模块(含计数器、时钟源、控制寄存器)、中断控制器(处理中断请求、设置优先级、中断屏蔽)和中断服务程序(保存现场、执行任务、恢复现场)组成,实现定时任务的精确执行。
|
6月前
MCS接口技术----定时/计数,中断
MCS接口技术----定时/计数,中断
76 0
Linux驱动中断与时间篇——高精度定时器hrtimer
Linux驱动中断与时间篇——高精度定时器hrtimer
|
缓存 程序员 内存技术
STM32定时器配置(TIM1-TIM8)高级定时器+普通定时器,定时计数模式下总结
STM32定时器配置(TIM1-TIM8)高级定时器+普通定时器,定时计数模式下总结
734 0
【STM32】高级定时器TIM1计数中断配置
【STM32】高级定时器TIM1计数中断配置
516 0
【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制
【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制
387 0
【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系
【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系
1054 0