一、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)产生了刹车信号,或者内部时钟失效,产生了故障,那么控制电路就会自动切断电机的输出,防止意外的发生。

TIM定时中断(定时器介绍)相关推荐

  1. STM32 TIM定时中断

    总体介绍 TIM(Timer)定时器是STM32中功能最强大,结构最复杂的一个外设,以下对其做一下简介(以stm32为例): TIM可以对输入的时钟进行计数,并在数值达到设定值时触发中断. 在STM3 ...

  2. 备赛电赛学习STM32篇(五):TIM定时中断

    目录 一.TIM简介 1.1.简介 1.2.基本定时器 2.2.通用定时器 1.3.高级计数器 ​编辑 二.定时中断和内外时钟源选择 2.2 时基单元运行时序举例 2.2.1缓冲(影子)寄存器 2.2 ...

  3. STM32单片机(六)TIM定时器 -> 第一节:TIM定时中断

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分:建议先学习51单片机,其是STM32等高级单片机的基础:这样再学习STM32时才能融会贯通. ☀️ 专栏适 ...

  4. STM32入门笔记04_TIM定时器+案例:TIM定时器定时中断、定时器外部时钟

    TIM定时器 TIM简介 TIM(Timer) 定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz(系统主频)计数时 ...

  5. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)

    本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...

  6. STM32CubeMX与HAL库学习--基本定时器定时中断

    STM32CubeMX与HAL库学习--基本定时器定时中断 背景 STM32CubeMX生成初始化代码 在MDK-ARM里编辑代码 其他 背景 本人小白,最近在学着使用STM32CubeMX与HAL库 ...

  7. stm32定时器定时中断

    主频72MHz:最大计时59.65s 基本定时器: 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应 主模式触发DAC 硬件自动化 通用定时器: 计数模式不 ...

  8. 实现定时中断_EPIT 定时器,仅需做到如下几步,即可轻松配置使用

    EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的.学过 STM32 的话应该知道, STM32 ...

  9. 【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍

    80C51中断系统 结构 80C51有5个中断源(89C52有6个),2个优先级,可实现二级中断嵌套 TCON中断标志 IT0(TCON.0),外部中断0触发方式控制位 IE0(TCON.1),外部中 ...

最新文章

  1. 视频监控成AI芯片主战场,海康威视和大华股份占据半壁江山
  2. 特殊字符的正则表达式
  3. OS X 要改名为 MacOS 是因为 iOS 10 要来了?
  4. python回归取残差_如何用sklearn拟合线性回归后的残差方差
  5. ansible基本模块使用
  6. 10 进制转 2 进制、16 进制
  7. 2019牛客多校第七场E Find the median 权值线段树+离散化
  8. 阿里高工流生 | 云原生时代的 DevOps 之道
  9. vue中获取输入框中得到值_如何获取vue input的值
  10. 获取(可能)关联数组中的第一个键?
  11. 整数划分之四 【区间dp】讲解于思考方法
  12. 基于近邻用户协同过滤算法的音乐推荐系统
  13. 三星 9810 android 9,【极光ROM】-【三星NOTE9 N960X-9810】-【V19.0 Android-Q-TF5-OneUI2.1】...
  14. cisco 2811路由器详细配置
  15. 秒赞机器人好友_qq空间秒赞机器人好友 qq空间说说秒赞神器
  16. 定时任务task:annotation-driven配置
  17. php支付宝单笔转账到支付宝账户,用户提现业务
  18. 【6.24校内test】T2 不老梦
  19. 深入“无人地带”,快递企业能变更“快”吗?
  20. ChatOps 如何帮助你更好地开发 DevOps

热门文章

  1. 独立成分分析 与 功能连接之间的关联尝试 by 张高燕
  2. 关于localhost访问特别快而nginx配置代理后转发特别慢的解决
  3. java之jdk14安装和环境设置以及eclipse创建工程出现红叉
  4. Consumer接口和Supplier接口
  5. 10 竞争神经网络与SOM神经网络matlab参考程序
  6. JS高级进阶总结day01---面向对象编程介绍,new的工作原理以及构造函数,原型对象,实力函数三者之间的关系
  7. 东方证券首席架构师樊建:企业微服务架构转型实践
  8. 辛星解读php中一个有意思的事情
  9. sql递归查询(包含mysql、pgsql、oracle)
  10. 烤仔星选·NFT实验室 | 展望2021:是否是NFT爆发元年?