前言
本文为笔者学习江科协stm32[6-1 TIM定时器中断]笔记,非常感谢作者的细致详解,让我理解更深刻。笔者才疏学浅,班门弄斧,详情请移步STM32入门教程-2023版 细致讲解 中文字幕
TIM 简介
- 定时器可以对输入的时钟进行计数,并在计数器达到设定值时触发中断;STM32定时器的基本时钟一般都是主频72MHZ,72MHZ计72个数,那就是1MHZ ,也就是1us 时间。
- STM32拥有16位计数器,预分频器,自动重装寄存器的时基单元,预分频器和自动重装寄存器都设置为最大(65536),可以最大计数59.65s,还可以支持级联模式,增长这个时间
1 / 72MHZ * 65536 * 65536 = 59.65232355555556s
16位计数器:计数定时的寄存器,每来个时钟,计数器加1;
16位预分频器:可以对计数器的时钟进行分频,让计数更灵活;
16位自动重装寄存器:计数的目标值,计多少个时钟申请中断。
- 不仅具备基本的定时中断功能,还可以包含内外时钟源选择,输入捕获,输出比较,编译器接口,主从触发模式等多种功能
- 定时器可以分为三种,高级定时器,通用定时器,基本定时器三种类型。
三种定时器
基本定时器框图
主要是时基单元,拥有基本的定时中断,多了一个TRGO ,这部分可以控制主模式触发DAC的功能;
cnt计数器这里是从0开始,向上自增,计到重装值,清零同时申请中断这种为向上计数,基本定时器仅支持这一种模式。
通用定时器框图
在通用计数器中,cnt计数器支持向上计数,向下计数,和中央对齐三种模式。
向下计数:从重装值开始,向下自减,回到重装值同事申请中断。
中央对齐模式:先从0开始,先向上自增,计到重装值,申请中断,然后再向下自减,减到0再申请中断,依次循环。
在通用定时器这里不仅可以选择内部72MHZ时钟,还可以选择TIMx_ETR引脚的外部时钟(外部时钟模式2),也可以选择TRGI输入时钟(外部时钟模式1),
外部时钟模式1输入可以是ETR引脚,其他定时器(ITR0-4),TIMx_CH1引脚边沿,TIMx_CH1和TIMx_CH2引脚,这里配置级联模式,较为复杂,后续在输入捕获和测频率时可以用到。6-5输入捕获
高级定时器框图
高级定时器与通用计数器不同的点在于
1.申请中断的地方,增加了重复次数计数器,可以实现每隔几个计数周期,才发生一个更新事件和更新中断。
2.高级定时器对输出比较模块的升级,通过DTG,可以生成互补的PWM波,主要驱动三相无刷电机,在四轴飞行器,电动车后轮,电钻等等
定时器中断基本结构
这里就是后续写程序需要用到的流程图,后续还有一些时序图,提取重要的是
1.计数器的计数频率,CK_CNT= CK/(PSC+1)
2.计数器溢出频率:也就是中断频率CK_CNT_OV= CK_CNT/(ARR+1) = CK/(PSC+1)/(ARR+1)