【STM32】TIM定时中断(江科大)

在这里插入图片描述
1.定时器最基本功能:定时触发中断
2.定时器就是一个计数器,当这个计数器的输入是一个准确可靠的基准时钟的时候,它在对这个基准时钟进行计数的过程,实际上就是计时的过程(比如在STM32中,定时器的基准时钟一般都是主频72MHz,如果对72MHz计72个数,那就是1MHz,也就是1us的时间;如果计72000个数,那就是1KMz,也就是1ms的时间)
3.计数器:用来执行计数定时的一个寄存器,每来一个时钟,计数器加1。 预分频器:可以对计数器的时钟进行分频,让这个计数更加灵活。 自动重装寄存器:即计数的目标值,想计多少个时钟申请中断
这些寄存器构成了定时器最核心的部分,这一块电路称为时基单元,这个时基单元里面的计数器、预分频器、自动重装寄存器都是16位的,2的16次方是65536,也就是预分频器设置最大,自动重装也设置最大,那定时器的最大的定时时间就是59.65s,接近一分钟(72M/65536/65536,得到的是中断频率,然后取倒数,就是59.65s多)
STM32的定时器还支持级联的模式,也就是一个定时器的输出,当做另一个定时器的输入,加一起,最大定时时间就是59.65s6553665536,时间大概是8千多年,如果再级联一个定时器,定时时间还会再延长65536*65536倍,时间大概是34万亿年
在这里插入图片描述
在这里插入图片描述
计数器、预分频器、自动重装寄存器这3个最重要的寄存器,构成了最基本的计数计时电路,所以这一块电路就叫做时基单元。
预分频器之前,连接的就是基准计数时钟的输入,由于基本定时器只能选择内部时钟,可以认为这根线直接连到了输入端,也就是内部时钟CK_INT,内部时钟的来源是RCC_TIMxCLK,这里的频率值一般都是系统的主频72MHz,所以通向时基单元的计数基准频率就是72M。
再来看时基单元,首先是预分频器(对输入的基准频率提前进行一个分频的操作),它可以对这个72MHz的计数时钟进行预分频(比如这个寄存器写0,就是不分频,或者说是1分频,这时候输出频率=输入频率=72MHz;如果预分频器写1,就是2分频,输出频率=输入频率/2=36MHz;如果预分频器写2,就是3分频,输出频率=输入频率/3,以此类推),所以预分频器的值和实际的分频系数相差了1,即实际分频系数=预分频器的值+1,这个预分频器是16位的,所以最大值可以写65535,也就是65536分频。
然后是计数器,这个计数器可以对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就加1,这个计数器也是16位的,所以里面的值可以从0一直加到65535,如果再加,计数器就会回到0重新开始,所以计数器的值在计时过程中会不断地自增运行,当自增运行达到目标值时,产生中断,就完成了定时的任务,所以还需要一个存储目标值的寄存器,就是自动重装寄存器。
自动重装寄存器也是16位的,它存的就是写入的计数目标,当计数值=自动重装值时,也就是计时时间到了,它就会产生一个中断信号,并且清零计数器,计数器自动开始下一次的计数计时。
图中向上的一个折线箭头,代表这里会产生中断信号,计数值=自动重装值产生的中断叫做“更新中断”,这个更新中断之后就会通往NVIC,在配置好NVIC的定时器通道,那定时器的更新中断就能够得到CPU的响应了。
图中向下的箭头,代表的是会产生一个事件,对应的事件就叫做“更新事件”,更新事件不会触发中断,但可以触发内部其他电路的工作。


主从触发模式:让内部的硬件在不受程序的控制下实现自动运行,如果能把主从触发模式掌握好,在某些情景下将会极大地减轻CPU的负担。
主模式触发DAC:在使用DAC时,可能会用DAC输出一段波形,那就需要每隔一段时间来触发一次DAC,让它输出下一个电压点,如果用正常的思路来实现的话,就是先设置一个定时器产生中断,每隔一段时间在中断程序中调用代码手动触发一次DAC转换,然后DAC输出。
但是这样会使主程序处于频繁被中断的状态,这会影响主程序的运行和其他中断的响应,所以定时器就设计了一个主模式,使用主模式可以把这个定时器的更新事件映射到这个触发输出TRGO的位置,然后TRGO直接接到DAC的触发转换引脚上,这样定时器的更新就不需要再通过中断来触发DAC转换了,整个过程不需要软件的参与,实现了硬件的自动化,这就是主模式的作用


在这里插入图片描述
向上计数模式:计数器从0开始,向上自增,计到重装值,清零同时申请中断然后开始下一轮,依次循环。(常用)
除了向上计数模式,通用定时器和高级定时器还支持向下计数模式和中央对齐模式。
向下计数模式:从重装值开始,向下自减,减到0之后,回到重装值同时申请中断,然后继续下一轮,依次循环。
中央对齐计数模式:从0开始,先向上自增,计到重装值,申请中断,然后再向下自减,减到0,再申请中断,然后继续下一轮,依次循环。


上面部分是内外时钟源选择和主从模式的结构(实现定时器级联的功能)
内外时钟源选择,对于基本定时器而言,定时器只能选择内部时钟,也就是系统频率72MHz。通用定时器的时钟源不仅可以选择内部的72MHz的时钟,还可以选择外部时钟。第一个外部时钟就是来自TIMx_ETR引脚的外部时钟(ETR引脚的位置可以参考引脚定义表),这里可以在这个TIM2的ETR引脚,也就是PA0上接一个外部方波时钟然后配置一下内部的极性选择、边沿检测和预分频器电路,再配置一下输入滤波电路,这两块电路可以对外部时钟进行一定的整形,对输入的波形进行滤波,同时也可以选择一些极性和预分频器,最后,滤波后的信号,兵分两路,上面一路ETRF进入触发控制器,紧跟着就可以选择作为时基单元的时钟了。
如果想在ETR外部引脚提供时钟,或者想对ETR时钟进行计数,把这个定时器当作计数器来用的话,就可以配置这一路的电路,在STM32中,这一路也叫做“外部时钟模式2”。
除了外部ETR引脚可以提供时钟外,TRGI也可以提供时钟,它主要是用作触发输入来使用的,这个触发输入可以触发定时器的从模式。当这个TRGI当做外部时钟来使用时,这一路就叫做“外部时钟模式1”。
通过这一路的外部时钟,第一个就是ETR引脚的信号,这里ETR引脚既可以通过上面这一路进来当做时钟,又可以通过下面这一路进来当做时钟(会占用触发输入通道);第二个就是ITR信号,这一部分的时钟信号是来自其他定时器的,从右边可以看出,这个主模式的输出TRGO可以通向其他定时器,通向其他定时器的时候,就接到了其他定时器的ITR引脚上来了,这个ITR0-ITR3分别来自其他4个定时器的TRGO输出(参考手册)


在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1484082.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

verilog实现ram16*8 (vivado)

module ram_16x2 (input clk, // 时钟信号input we, // 写使能input en, // 使能信号input [3:0] addr, // 地址线input [1:0] datain, // 输入数据线output reg [1:0] dataout // 输出数据线 );// 定义存储器数组reg [1:0] mem [15:0];always (posedge…

JAVA基础:运用分包思想编写汽车管理系统

目录 前言 分包 主界面 添加页面 service层 domain层 查看界面 总结 前言 在编写Java业务的时候我们应该充分运用分包思想将不同功能的类放在不同的包里,如果我们将所有的类都放在同一个包中,以后维护起来也会很麻烦。我们今天就要用这种思想编写…

前端组件化探索与实践:Vue自定义暂无数据组件的开发与应用

摘要 随着前端开发技术的不断进步,组件化开发已成为提升开发效率、降低维护成本的关键手段。本文旨在通过介绍一款Vue自定义暂无数据组件的开发与实践,深入探讨前端组件化开发的重要性、优势及其在实际项目中的应用。 一、引言 在前端开发中&#xff0…

【杰理蓝牙开发】AC695x 按键 I/O key 互推接法接口分析

本文主要记录 杰理蓝牙AC695x 按键I/O key 互推接法接口分析 【杰理蓝牙开发】AC695x 按键 I/O key 互推接法接口分析 0. 个人简介 && 授权须知1. IOKEY 使用硬件设计1.1 一个按键接一个 IO1.1 一个按键接两个 IO2. IOKEY 【互推】接法原理分析2.1 定义按键的三个属性2…

味蕾盛宴:红酒的丰富口感与不同的风味

在繁华的都市中,总有那么一些瞬间,我们希望用味蕾去探寻世界的美好。而红酒,便是这场味蕾盛宴中的一位优雅舞者,以其丰富的口感和不同的风味,为我们带来一场视觉与味觉的双重享受。今天,就让我们一起走进红…

Python环境下的JD京东平台商品SKU数据批量采集分析

本教程内容旨在帮助没有基础的同学快速掌握 numpy 的常用功能,保证日常绝大多数场景的使用。可作为机器学习或深度学习的先修课程,也可作为快速备查手册。 值得一提的是,深度学习的各大框架很多 API 和 numpy 也是一脉相承的哦,可…

Qt第十二章 样式表

样式表 文章目录 样式表1.样式表盒子模型 2.选择器选择器类型伪状态选择器Pseudo-State 3.控件示例4继承自QWidget的类,设置qss样式表没有效果,需要重写paintEvent 1.样式表 盒子模型 2.选择器 样式表语法,选择器{属性1:值;属性2:值;}如果只…

链表(4) ----跳表

跳表(Skip List)是一种随机化的数据结构,用于替代平衡树(如 AVL 树或红黑树)。它是基于多层链表的,每一层都是上一层的子集。跳表可以提供与平衡树相似的搜索性能,即在最坏情况下,搜…

「AI得贤招聘官」通过首批“AI产业创新场景应用案例”评估

近日,上海近屿智能科技有限公司的「AI得贤招聘官」,经过工业和信息化部工业文化发展中心数字科技中心的严格评估,荣获首批“AI产业创新场景应用案例”。 据官方介绍,为积极推进通用人工智能产业高质量发展,围绕人工智能…

springboot 实体类加注解校验入参数据

导入的是springboot自身的依赖包 import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid;

lua 游戏架构 之 SceneLoad场景加载(二)

设计上 定义 NormalSceneLoad的类,该类继承自BaseSceneLoad。 lua 游戏架构 之 SceneLoad场景加载(一)-CSDN博客文章浏览阅读48次。设计一个为BaseSceneLoad class,用于处理场景加载的相关操作 ,主要作用是提供了一个…

Unity免费领7月开发者周冰雪世界着色器环境包180种冰材质544种预制变体冰天雪地环境效果限时免费领取20240719

7月19号的Unity开发者周限时免费资产更新啦,这次是冰雪材质和环境素材包,质量挺不错。 之前进过捆绑包, 结帐时输入NATUREMANUFACTURE2024优惠券代码即可免费获得。无需购买。 Unity免费领7月开发者周冰雪世界着色器环境包180种冰材质544种…

ubuntu上模拟串口通信

前言 有时候写了一些串口相关的程序,需要调试的时候,又没有硬件,或者需要等其他模块完成才能一起联调。这样搭建环境费时费力,很多问题等到最后联调才发现就已经很晚了。 本文提供一种在ubuntu环境下模拟串口,直接就可…

Python for循环

1.基础格式 for 变量名 in range(数字):循环语句 其中,数字指的是变量名的取值,默认情况下每次循环加一。通常情况下变量名为i。使用break结束当前循环。 例: for i in range(10):print(i) 运行后应会看到输出0到9(如下&…

边缘设备使用记录--阿加犀AIBox 6490

边缘设备使用记录--阿加犀AIBox 6490 设备介绍设备连接glog && gflagsonnx2tfliteAidLite SDK for C模型输入输出的shape执行推断 OpenCV使用 设备介绍 阿加犀AIBox 6490是一款基于高通QCS6490平台的高性价比智能边缘计算终端,具有14TOPS AI算力&#xff0…

【机器学习】使用Python的dlib库实现人脸识别技术

🔥 个人主页:空白诗 文章目录 一、引言二、传统人脸识别技术1. 基于几何特征的方法2. 基于模板匹配的方法3. 基于统计学习的方法 三、深度学习在脸识别中的应用1. 卷积神经网络(CNN)2. FaceNet和ArcFace 四、使用Python和dlib库实…

有了这5个高效视频剪辑工具,你一定会爱上剪辑

如果你是个剪辑新手,不知道如何挑选剪辑视频的工具,又或者是自己目前使用的剪辑工具不理想,想寻找新的剪辑软件;那就请你看看这篇文章,这里介绍的5款剪辑软件都是专业,简单,又高效的剪辑工具。 …

算法日记day 12(栈实现队列|队列实现栈|有效的括号)

队列是先进先出的,就像排队一样,谁在前谁先获得服务 栈是一种先进后出的数据结构 一、用栈实现队列 题目: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)&#xf…

mac docker no space left on device

mac 上 docker 拉取镜像报错 Error response from daemon: write /var/lib/docker/tmp/docker-export-3995807640/b8464f52498789c4ebbc063d508f04e8d2586567fbffa475e3cd9afd3c5a7cf2/layer.tar: no space left on device解决: 增加 docker 虚拟磁盘大小。如下图

笔记 | 算法时间复杂度T(n)的计算方法

👻 基本思想:找出关键语句总执行次数 T 与 输入规模 n 的关系式 (本博客仅提供一种解题思路与通用方法,具体问题请具体分析) 👻 类型:while循环 🚀 思路 找出不满足while条件时&…