STM32学习笔记——定时器

目录

一、定时器功能概述

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.mzph.cn/news/675969.shtml

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

相关文章

PySpark(四)PySpark SQL、Catalyst优化器、Spark SQL的执行流程、Spark新特性

目录 PySpark SQL 基础 SparkSession对象 DataFrame入门 DataFrame构建 DataFrame代码风格 DSL SQL SparkSQL Shuffle 分区数目 DataFrame数据写出 Spark UDF Catalyst优化器 Spark SQL的执行流程 Spark新特性 自适应查询(SparkSQL) 动态合并 动态调整Join策略 …

一周学会Django5 Python Web开发-Django5创建项目(用命令方式)

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频,包括:2024版 Django5 Python we…

js中new操作符详解

文章目录 一、是什么二、流程三、手写new操作符 一、是什么 在JavaScript中,new操作符用于创建一个给定构造函数的实例对象 例子 function Person(name, age){this.name name;this.age age; } Person.prototype.sayName function () {console.log(this.name) …

编曲学习:旋律创作基础概念 和弦进行作曲 和弦外音使用 作曲技巧

旋律创作基础概念 和弦进行作曲 和弦外音使用 作曲技巧https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_65be1ba7e4b064a83b92a3d7?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv文档https://app8epdhy0u9502.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/camp_pro/cour…

【Larry】英语学习笔记语法篇——从句=连词+简单句

目录 三、从句连词简单句 1、必须有连词 主从结构 疑问词的词性 2、名词性从句 同位语从句 形式主语 形式宾语 that的省略 3、形容词性从句(上) 关系代词 关系词的作用 介词前置问题 4、形容词性从句(中) 定语关系…

【开源】SpringBoot框架开发医院门诊预约挂号系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

vue3 之 商城项目—home

home—整体结构搭建 根据上面五个模块建目录图如下&#xff1a; home/index.vue <script setup> import HomeCategory from ./components/HomeCategory.vue import HomeBanner from ./components/HomeBanner.vue import HomeNew from ./components/HomeNew.vue import…

基于SSM的网络在线考试系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的网络在线考试系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring …

《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)

文章目录 6.1 设置和管理复制6.1.1 基础知识6.1.2 重点案例&#xff1a;使用 Python 设置 MySQL 主从复制6.1.3 拓展案例 1&#xff1a;自动故障转移6.1.4 拓展案例 2&#xff1a;设置双主复制 6.2 复制的类型和策略6.2.1 基础知识6.2.2 重点案例&#xff1a;使用 Python 设置半…

架构整洁之道-软件架构-测试边界、整洁的嵌入式架构、实现细节

6 软件架构 6.14 测试边界 和程序代码一样&#xff0c;测试代码也是系统的一部分。甚至&#xff0c;测试代码有时在系统架构中的地位还要比其他部分更独特一些。 测试也是一种系统组件。 从架构的角度来讲&#xff0c;所有的测试都是一样的。不论它们是小型的TDD测试&#xff…

windowsserver 2016 PostgreSQL9.6.3-2升级解决其安全漏洞问题

PostgreSQL 身份验证绕过漏洞(CVE-2017-7546) PostgreSQL 输入验证错误漏洞(CVE-2019-10211) PostgreSQL adminpack扩展安全漏洞(CVE-2018-1115) PostgreSQL 输入验证错误漏洞(CVE-2021-32027) PostgreSQL SQL注入漏洞(CVE-2019-10208) PostgreSQL 安全漏洞(CVE-2018-1058) …

数据库管理-第146期 最强Oracle监控EMCC深入使用-03(20240206)

数据库管理145期 2024-02-06 数据库管理-第146期 最强Oracle监控EMCC深入使用-03&#xff08;20240206&#xff09;1 概览2 性能中心3 性能中心-Exadata总结 数据库管理-第146期 最强Oracle监控EMCC深入使用-03&#xff08;20240206&#xff09; 作者&#xff1a;胖头鱼的鱼缸&…

dddddddddddddddddddd

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

安全之护网(HVV)、红蓝对抗

文章目录 红蓝对抗什么是护网行动&#xff1f;护网分类护网的时间 什么是红蓝对抗红蓝对抗演练的目的什么是企业红蓝对抗红蓝对抗价值参考 红蓝对抗 什么是护网行动&#xff1f; 护网的定义是以国家组织组织事业单位、国企单位、名企单位等开展攻防两方的网络安全演习。进攻方…

基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络&#xff08;CNN&#xff09; 4.2 损失函数和优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................…

Bert下载和使用(以bert-base-uncased为例)

Bert官方github地址&#xff1a;https://github.com/google-research/bert?tabreadme-ov-file 【hugging face无法加载预训练模型】OSError&#xff1a;Can‘t load config for ‘./bert-base-uncased‘. If you‘re trying 如何下载和在本地使用Bert预训练模型 以bert-base-u…

计算机网络基本知识(一)

文章目录 概要速率带宽、吞吐量带宽吞吐量 时延发送&#xff08;传输&#xff09;时延传播时延排队时延处理时延时延带宽积 利用率 概要 速率、带宽、吞吐量、时延、利用率 速率 记忆要点&#xff1a;10的三次方 记忆要点&#xff1a;2的10次方 带宽、吞吐量 带宽 单位&…

【lesson11】高并发内存池性能优化

文章目录 高并发内存池性能问题基数树优化性能代码一层基数树两层基数树三层基数树 一层基数树替代mapPageCache.hPageCache.cpp基数树线程安全的原因 高并发内存池性能问题 我们知道&#xff0c;我们实现的高并发内存池存在大量的申请锁和&#xff0c;释放锁&#xff0c;而这…

为什么要进行FTP替代?专业的FTP替代方案了解一下!

FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;的历史可以追溯到20世纪70年代&#xff0c;这是一个由美国国防部资助的早期计算机网络&#xff0c;后来发展成为互联网的前身。随着时间的推移&#xff0c;FTP经历了多次迭代和改进&#xff0c;以适…

一条 SQL 查询语句是如何执行的

MySQL 的基本架构示意图 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分 Server 层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函数等…