STM32学习笔记——定时器

news2024/9/24 17:09:28

目录

一、定时器功能概述

1、基本定时器(TIM6&TIM7)

工作原理

时序

2、通用计时器(TIM2&TIM3&TIM4&TIM5)

时钟源

外部时钟源模式1&2

外部时钟源模式2

外部时钟源模式1

定时器的主模式输出

输入捕获

3、高级定时器(TIM1&TIM8)

重复计数器

DTG(Dead Time Generate)死区生成

刹车输入

二、定时器相关寄存器

1、TIMx_CR1/2 (TIMx_Control Register1/2) TIMx控制寄存器

2、TIMx_SMCR (TIMx_Slave Mode Control Register) 从模式控制器寄存器

3、TIMx_DIER (TIMx_DMA/Interrupt Enable Register) DMA/中断使能寄存器

4、TIMx_SR (TIMx_Status Register) 状态寄存器

5、TIMx_EGR (TIMx_Event Generation Register) 事件生成寄存器

6、TIMx_CCMR1/2 (TIMx_Capture/Compare Mode Register 1/2) 捕获比较寄存器1/2

7、TIMx_CCER (TIMx_Capture/Compare Enable Register) 捕获比较使能寄存器

8、TIMx_CNT (TIMx_Counter) 计数寄存器

9、TIMx_PSC (TIMx_Prescaler) 预分频寄存器

10、TIMx_ARR (TIMx_Auto-Reload Register) 自动重载寄存器

11、TIMx_CCR1/2/3/4 (TIMx_Capture/Compare Register1/2/3/4) 捕获/比较寄存器1/2/3/4

12、TIMx_DCR (TIMx_DMA Control Register) DMA控制寄存器

13、TIMx_DMAR (TIMx_DMA Address for Full Transfer) 全DMA传输地址寄存器

三、定时器配置


一、定时器功能概述

        “在STM32中,定时器一共分为基本定时器、通用定时器、高级定时器三种,定时器是STM32众多外设中的一个。”

        定时器顾名思义,即用作定时的外设,主要部分是一个带有自动重装载的16位累加计数器,计数器的时钟通过一 个预分频器得到。

        计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重装载寄存器(TIMx_ARR)组成一个时基单元。

1、基本定时器(TIM6&TIM7)

        基本定时器有两大功能,一是定时功能,二是用于专门驱动数模转换器(DAC)。

        基本定时器分别是TIM6和TIM7,两者在功能上完全一致且互相独立,可同时使用。

工作原理

        基本定时器带有一个独立的、向上递增的可编程的计数器。当给自动重装载寄存器(TIMx_ARR)设置一个值并使能后,计数寄存器(TIMx_CNT)将从0开始向上计数。当计数寄存器与自动重装载寄存器相同的时候,就会产生一个向上溢出中断,并将计数寄存器中的值清零。

图1.1 基本定时器框图

        如图1.1,芯片本身无法完成计时,所以用户若想知道过去了多长时间则必须选择时钟源获取时间。一般来说,基本定时器只能从内部时钟获取时钟源。内部时钟(CK_INT)经过控制器后直接接到了预分频器寄存器(TIMx_PSC),并且变成了CK_PSC,可以认为CK_PSC就是CK_INT。根据不同需求,将会对时钟频率进行分割,得到一个新的输出的时钟频率CK_CNT。此后,时基单元正常工作。

时序

图1.2 预分频系数从1变到2的计数器时序图

        如图1.2,线1代表计数器开始使能(enable),在使能之前定时器时钟不运行;使能后定时器时钟在线3之前未分频,在线3之后二分频,并且此时计数器寄存器达到自动重装值,在线3时清零,之后从0重新计数。与此同时,在线3还会产生一个更新事件。下面的预分频器控制寄存器用于用户读写分频系数,并不直接影响分频。预分频器缓冲器又叫作影子寄存器,顾名思义,起缓冲作用,直接影响分频。它的作用是防止在计数过程中突然改变分频值造成的前后频率不一致。它会等到下一个计数周期,也就是线3时才会生效。预分频器计数器每次回到0时输出一个脉冲,对应线3和线4。

图1.2 预分频系数从1变到4的计数器时序图

        图1.2与图1.1原理相同,便不做赘述。


*内部时钟的频率一般是72MHz,预分频器写0代表一分频,写1代表二分频。可以这样简单记忆:分频就像切黄瓜,一刀(预分频器写1)两断(二分频),两刀三断...


2、通用计时器(TIM2&TIM3&TIM4&TIM5)

“通用定时器是在基本定时器的基础上,引入了外部引脚,通用定时器不仅仅能定时,还以定时为基础,发展出测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等功能。”

图2.1 通用定时器框图

时钟源

        通用定时器除了内部时钟外,还可以选择外部时钟作为时钟源。

图2.2 内部时钟源

选择外部时钟作为时钟源时,有四个输入通道,即TIMx_CH1/2/3/4,具体选择哪一个由用户配置。

外部时钟源模式1&2

图2.3 外部时钟源模式2外部触发输入模块

        外部时钟信号从TIM2_ETR (PA0引脚)进来后,经过极性选择和边沿检测器和预分频器,兵分两路。

外部时钟源模式2

        一路ETRF进入触发控制器,此后便可选择作为时基单元了。这一路叫做外部时钟源模式2。若想使用外部时钟或者把这个定时器当作计数器,那么配置这一路即可。

外部时钟源模式1

        另一路TRGI (Trigger In)有两个用途,第一个是触发从模式控制器;第二个是作为外部时钟源的输入,此时这一路叫做外部时钟源模式1。

        此外路径a、路径b、路径c也是外部时钟源模式1.

图2.4 外部时钟源模式1外部触发输入模块

        外部时钟源模式1和外部时钟源模式2是等价的,区别在于前者占用从模式触发器。

图2.5 通用定时器框图(局部)

        INR0/1/2/3是其他定时器的输入通道,相当于其他定时器的TRGO;同样地,该定时器的TRGO也连接至其他定时器的ITRx。如图2.7。这样可以实现定时器级联的功能。

图2.6 示意简图

具体连接如表2.1

表2.1

总而言之,外部时钟源模式1的输入可以是ETR引脚、TIM1_CH1、TIMx_CH2、其他定时器。

定时器的主模式输出

图2.7 定时器的主模式输出

        该电路可以把内部的一些事件映射到TRGO引脚上。

输出比较

图2.8 输出比较电路

        该电路用于输出PWM波、驱动电机等。

输入捕获

图2.9 输入捕获电路

        该电路用于测量输入信号的脉冲长度等。

3、高级定时器(TIM1&TIM8)

图3.1框内的电路与通用定时器相同。

图3.1 高级定时器

重复计数器

图3.2 重复计数器

        重复计数器可以实现每隔几个周期发生一次更新(基本定时器和通用定时器都是每个周期都要发生一次更新)

DTG(Dead Time Generate)死区生成

图3.3 死区生成电路

        可输出两个互补的PWM波,用于驱动三相无刷电机。

刹车输入

图3.4 刹车输入

        当TIMx_BKIN产生刹车信号,或者内部时钟失效,控制电路会自动切断电机的输出,确保安全。

图3.5 定时中断基本结构 (江科大自化协)

二、定时器相关寄存器

1、TIMx_CR1/2 (TIMx_Control Register1/2) TIMx控制寄存器

2、TIMx_SMCR (TIMx_Slave Mode Control Register) 从模式控制器寄存器

3、TIMx_DIER (TIMx_DMA/Interrupt Enable Register) DMA/中断使能寄存器

4、TIMx_SR (TIMx_Status Register) 状态寄存器

5、TIMx_EGR (TIMx_Event Generation Register) 事件生成寄存器

6、TIMx_CCMR1/2 (TIMx_Capture/Compare Mode Register 1/2) 捕获比较寄存器1/2

7、TIMx_CCER (TIMx_Capture/Compare Enable Register) 捕获比较使能寄存器

8、TIMx_CNT (TIMx_Counter) 计数寄存器

9、TIMx_PSC (TIMx_Prescaler) 预分频寄存器

10、TIMx_ARR (TIMx_Auto-Reload Register) 自动重载寄存器

11、TIMx_CCR1/2/3/4 (TIMx_Capture/Compare Register1/2/3/4) 捕获/比较寄存器1/2/3/4

12、TIMx_DCR (TIMx_DMA Control Register) DMA控制寄存器

13、TIMx_DMAR (TIMx_DMA Address for Full Transfer) 全DMA传输地址寄存器

三、定时器配置

使能寄存器时钟→定时器初始化→允许定时器中断→中断源配置→开启定时器→中断服务函数

若文章内容出现错误,恳请各位批评指正,感激不尽! 

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

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

相关文章

春节回家坐飞机后助听器就不好用了?如何过安检、拖运?

春节即将来临,很多人都要乘坐飞机回家或者出游。如果你是一位助听器使用者,你可能会有一些疑问:坐飞机能戴助听器吗?助听器会不会受到安检设备的影响?直接将助听器放在传送带上可以吗?……别担心&#xff0…

前端JavaScript篇之addEventListener()方法的参数和使用

目录 addEventListener()方法的参数和使用参数和使用typelisteneroptionsuseCapturewantsUntrusted addEventListener()方法的参数和使用 addEventListener() 是 JavaScript 中用于向指定元素添加事件监听器的方法。这个方法通常用于处理用户交互,比如点击、鼠标悬…

springboot163美食推荐商城的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

日历功能——C语言

实现日历功能&#xff0c;输入年份月份&#xff0c;输出日历 #include<stdio.h>int leap_year(int year) {if(year % 4 0 && year % 100 ! 0 || year % 400 0){return 1;}else{return 0;} }int determine_year_month_day(int *day,int month,int year) {if(mo…

计划任务功能优化,应用商店上架软件超过100款,1Panel开源面板v1.9.6发布

2024年2月7日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.9.6版本。 在v1.9.5和v1.9.6这两个小版本中&#xff0c;1Panel针对计划任务等功能进行了多项优化和Bug修复。此外&#xff0c;1Panel应用商店新增了3款应用&#xff0c;上架精选软件应用超过1…

vue 实现一个持续时间定时器组件

vue 实现一个定时器组件 效果图子组件父组件 效果图 子组件 新建一个timer.vue文件 <template><span :class"{red: string > 600}">{{ string | formatDurationS }}</span> </template> <script>export default {name: timer,pro…

Redis篇之持久化

一、为什么要进行持久化 Redis是一个基于内存的键值存储系统&#xff0c;但为了保证数据在服务器重启、故障等情况下不丢失。 二、应该怎么持久化 1.RDB持久化 &#xff08;1&#xff09;RDB是什么 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff…

互联网加竞赛 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …

VRRP配置

目录 网络拓扑图 配置要求 配置步骤 网络拓扑图 配置要求 按照图示配置 IP 地址和网关在 SW1&#xff0c;SW2&#xff0c;SW3 上创建 Vlan10 和 Vlan20&#xff0c;对应 IP 网段如图&#xff0c;交换机之间链路允许所有 VLAN 通过在 SW1 和 SW2 上配置 VRRP&#xff0c;要求…

qt/c++实现表情选择框

&#x1f482; 个人主页:pp不会算法^ v ^ &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 实现功能 。编解码的设计 。映射关系设计 。匹配机制设计 演示效…

DFS深度优先搜索与回溯算法

目录 递归遍历的三步骤&#xff1a; DFS/回溯模板 练习 1.三角形路径和最大搜索 &#xff08;一&#xff09;前序DFS&#xff08;从上至下搜索&#xff0c;实际是暴力解法&#xff0c;测试超时&#xff09; &#xff08;二&#xff09;后序DFS&#xff08;自底向上搜索&am…

pycharm像jupyter一样在控制台查看后台变量

更新下&#xff1a;这个一劳永逸不用一个一个改 https://blog.csdn.net/Onlyone_1314/article/details/109347481 右上角运行

【misc】ctfshow--CTF的一生如履薄冰

解压的附件如下&#xff1a; 666.zip这个压缩包是要密码的&#xff0c;打开txt看一下 这个应该spam encode了 直接解密&#xff1a;spammimic - decode 解密结果为&#xff1a;hppy_n3w_y3ar_every_ctf3r_2024_g0g0g0!!!这个就是压缩包的密码&#xff0c;解压 又是一个加密的…

Centos8保姆级安装教程

1.下载地址 Downloadhttps://www.centos.org/download/ 2.安装教程 第一步创建新的虚拟机 第二步自定义高级 第三步这里是选择系统的兼容性&#xff0c;默认就可以 之后直接下一步 第四步选择稍后安装操作系统 之后点击下一步 第五步选择操作系统Linux 安装的是centos8 64位…

WordPress如何自建txt文本经典语录并随机显示一句话经典语录?

前面跟大家分享的『WordPress集成一言&#xff08;Hitokoto&#xff09;API经典语句功能』一文中就提供有自创API&#xff0c;其中懿古今顶部左上角显示的经典语录用的就是自建一个txt文本文件&#xff0c;然后再在前端网页指定位置随机显示语录。具体操作方法如下&#xff1a;…

网神 SecGate 3600 防火墙 route_ispinfo_import_save 文件上传漏洞复现

0x01 产品简介 网神SecGate 3600防火墙是基于状态检测包过滤和应用级代理的复合型硬件防火墙,是专门面向大中型企业、政府、军队、高校等用户开发的新一代专业防火墙设备,支持外部攻击防范、内网安全、网络访问权限控制、网络流量监控和带宽管理、动态路由、网页内容过滤、邮…

踩坑实录(Third Day)

临近年关&#xff0c;同事们该回家的也都回家了&#xff0c;所以我对工作的欲望不是很强烈&#xff0c;所以就主要是自己学习了一下&#xff0c;在 B 站看看视频&#xff0c;自己敲代码&#xff0c;所以今天没遇到什么坑&#xff0c;但是可以分享一下之前踩到的两个坑。 此为第…

PCIE Order Set

1 Training Sequence Training Sequence是由Order Set(OS) 组成&#xff0c;它们主要是用于bit aligment&#xff0c;symbol aligment&#xff0c;交换物理层的参数。当data_rate 2.5GT or 5GT 它们不会被扰码(scramble)&#xff0c;当date_rate 8GT or higher 根据特殊的规…

Rust开发WASM,WASM Runtime运行

安装wasm runtime curl https://wasmtime.dev/install.sh -sSf | bash 查看wasmtime的安装路径 安装target rustup target add wasm32-wasi 创建测试工程 cargo new wasm_wasi_demo 编译工程 cargo build --target wasm32-wasi 运行 wasmtime ./target/wasm32-wasi/d…

3060ti显卡+cuda12.1+win10编译安装生成fastdeploy的c++与python库

在cuda12中,调用官方发布的fastdeploy会出现报错,故此自行编译fastdeploy库。 官网编译教程:https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/gpu.md 可选编译选项 编译选项 无论是在何平台编译,编译时仅根据需求修改如下选项,勿…