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.hqwc.cn/news/459513.html

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

相关文章

【开源】SpringBoot框架开发超市账单管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 总体设计3.2 前端设计3.3 后端设计在这里插入图片描述 四、系统展示五、核心代码5.1 查询供应商5.2 查询商品5.3 新增超市账单5.4 编辑超市账单5.5 查询超市账单 六、免责说明 一、摘要 1.1 项目介绍 基于…

MySQL 日志管理

4.6)日志管理 MySQL 支持丰富的日志类型,如下: 事务日志:transaction log 事务日志的写入类型为 "追加",因此其操作为 "顺序IO"; 通常也被称为:预写式日志 write ahead…

服务器运存使用率多少正常?

服务器运存使用率多少正常,这是一个相对主观的问题,因为服务器的正常运行不仅取决于运存使用率,还与服务器的工作负载、应用程序的特性和需求、服务器的配置和用途等多种因素有关。然而,一般来说,大多数服务器在运存使…

WordPress如何实现随机显示一句话经典语录?怎么添加到评论框中?

我们在一些WordPress网站的顶部或侧边栏或评论框中,经常看到会随机显示一句经典语录,他们是怎么实现的呢? 其实,boke112百科前面跟大家分享的『WordPress集成一言(Hitokoto)API经典语句功能』一文中就提供…

Netty中解决粘包/半包

目录 什么是TCP粘包半包? TCP 粘包/半包发生的原因 解决粘包半包 channelRead和channelReadComplete区别 什么是TCP粘包半包? 假设客户端分别发送了两个数据包 D1 和 D2 给服务端,由于服务端一次读取到的字节数是不确定的,故可…

基于微信小程序的书籍阅读系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Redis核心技术与实战【学习笔记】 - 27.限制Redis Cluster规模的因素(通信开销)

简述 Redis Cluster 能保存的数据量以及支撑的吞吐量,跟集群实例规模相关。 Redis 官方给出了 Redis Cluster 的规模上线,就是一个集群运行 1000 个实例。 其实,限定 Redis Cluster 集群规模的一个关键因素就是,实例间的通信开销…

使用SD-WAN进行企业网络升级的必要性

随着企业业务的不断扩大,企业的网络建设成为业务成功的基础。对于中小企业而言,提高生产力和竞争力,电脑化和信息化已成为不可逆转的趋势。各种关键业务应用如办公室自动化、数据库、ERP、CRM、物流供应链等的增加,对网络的速度、…

JAVA生产使用登录校验模式

背景 目前我们的服务在用户登录时,会先通过登录接口进行密码校验。一旦验证成功,后端会利用UUID生成一个独特的令牌(token),并将其存储在Redis缓存中。同时,前端也会将该令牌保存在本地。在后续的接口请求…

基于51 单片机的交通灯系统 源码+仿真+ppt

主要内容: 1)南北方向的绿灯、东西方向的红灯同时亮40秒。 2)南北方向的绿灯灭、黄灯亮5秒,同时东西方向的红灯继续亮。 3)南北方向的黄灯灭、左转绿灯亮,持续20秒,同时东西方向的红灯继续…

【Git版本控制 03】远程操作

目录 一、克隆远程仓库 二、推送远程仓库 三、拉取远程仓库 四、忽略特殊文件 五、命令配置别名 一、克隆远程仓库 Git是分布式版本控制系统,同⼀个Git仓库,可以分布到不同的机器上。怎么分布呢? 找⼀台电脑充当服务器的⻆⾊&#xff…

grafana+prometheus+hiveserver2(jmx_exporter+metrics)

一、hiveserver2开启metrics&#xff0c;并启动jmx_exporter 1、修改hive-site.xml文件开启metrics <property><name>hive.server2.metrics.enabled</name><value>true</value> </property> <property><name>hive.service.m…