stm32——定时器级联

news/2024/7/7 1:38:00 标签: stm32, 嵌入式硬件, 单片机

    在STM32当中扩展定时范围:单个定时器的定时长度可能无法满足某些应用的需求。通过级联,可以实现更长时间的定时;提高定时精度:能够在长定时的基础上,通过合理配置,实现更精细的定时控制;处理复杂定时任务:适用于需要多个不同定时阶段或复杂定时顺序的应用场景,方便实现更复杂的定时逻辑。换句话说,在STM32当中,我们所应用到的定时器都是16位的定时器,那么怎么提高时钟的精度,改为32位的定时器,这个问题就出来了。举个例子,以频率计为例,我只用只用一个时钟源作为计数器,它顶到天了,也就只能计数到65535(2^16-1)。而你将两个计数器级联之后,我们就有了一个32位的计数器,当我们的主计数器计完数之后,发生中断的时候,从计数器计一个数。周而复始,依此类推。所得到的频率也就越广越精。经过试验,使用TIM2和TIM3作为主从计数器,能测到0.0167Hz~400kHz。而单用TIM3在1kHz以下误差就很差了。

       那怎么级联呢?大家可以通过参考手册里面有个详细的原理框图。如下图。

主从定时器级联原理框图

      在 STM32 中,主从计数器的运行原理主要是通过主定时器的事件来控制从定时器的操作。主定时器通常按照自身的配置进行计数和产生相关事件,比如更新事件。从定时器则可以设置为响应主定时器的特定事件,如在主定时器更新时开始计数、停止计数、复位计数等。这种主从配置的优势在于能够实现更复杂和精确的定时控制。例如,可以通过主定时器的长周期定时来触发从定时器的短周期操作,从而在不同的时间尺度上协同工作。具体来说,主定时器的计数模式、时钟源、预分频系数、自动重载值等决定了其定时周期和产生事件的时机。从定时器根据主定时器的事件以及自身的配置进行相应的动作。例如,将 TIM2 设为主定时器,TIM3 设为从定时器,并配置 TIM3 在 TIM2 产生更新事件时开始计数。这样,TIM2 的定时周期结束产生更新事件,触发 TIM3 开始计数,实现了主从协同工作。这种主从模式的配置为实现多样化的定时需求提供了灵活的手段,适用于各种需要复杂定时逻辑的应用场景。

配置定时器1为主模式,它可以在每一个更新事件UEV时输出一个周期性的触发信号。在 TIM1_CR2寄存器的MMS=’010’时,每当产生一个更新事件时在TRGO1上输出一个上升沿信号。连接定时器1TRGO1输出至定时器2,设置TIM2_SMCR寄存器的TS=’000’,配置定时器2 为使用ITR1作为内部触发的从模式。然后把从模式控制器置于外部时钟模式1(TIM2_SMCR寄存器的SMS=111);这样定时器2即可由定时器1周期性的上升沿(即定时器1的计数器溢出)信号驱动。最后,必须设置相应(TIMx_CR1寄存器)的CEN位分别启动两个定时器。这里在TRGO1和ITR1这两个参数是重要的地方,它们就像钥匙和门一样,钥匙是“TRGO1”,门是ITR1。只有两个都通了,时钟才能级联。程序就是下面这几句,这里我用的是TIM2作为主时钟,TIM3作为从时钟。

       那么完整的时钟配置程序会是什么样的呢?

          那么换其他的主从定时器怎么办呢?这就得继续调整参数TIM_TS_ITRx了,这里参考手册里面有个表格供大家参考。

        好了,今天的STM32就聊到这里,大家多练多消化。反正我就单纯换了个主从顺序就晕晕乎乎换了半天。我的天啊!

        欲知后事如何,且听下回分解。OVO......


http://www.niftyadmin.cn/n/5534708.html

相关文章

米国政府呼吁抛弃 C 和 C++

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 很多观点认为C 或 C永远不可被…

Zoom使用的基本步骤和注意事项

Zoom是一款功能强大的视频会议软件,广泛应用于远程办公、在线教育、团队协作等多个场景。以下是Zoom使用的基本步骤和注意事项: 一、注册与登录 注册Zoom账户: 访问Zoom官方网站(如zoom.us),点击“注册”…

如何清理电脑内存?让电脑运行如飞!

电脑内存(RAM)的清理对于维持系统的流畅运行至关重要。随着使用时间的增加,系统内存会被各种应用程序和后台进程占用,导致系统响应变慢,甚至出现卡顿现象。通过有效地清理内存,可以提升电脑的性能&#xff…

代码随想录算法训练营第70天图论9[1]

代码随想录算法训练营第70天:图论9 ‍ 拓扑排序精讲 卡码网:117. 软件构建(opens new window) 题目描述: 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的…

学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系 (2)建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…

解决mybastis-plus加入逻辑删除SQL语句自动拼接未删除的问题

配置逻辑删除 在bootstrap.yaml中加入逻辑删除配置 mybatis-plus:global-config:db-config:logic-delete-field: isDeleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: true # 逻辑已删除值(默认为 1)logic-not-delete-value: …

动态规划解决0/1背包问题详解

一、引言 在日常生活中,我们经常面临各种选择和决策。有些决策涉及到资源的有限性和选择的最优性,这就需要我们运用一些算法来帮助我们做出最佳的选择。0/1背包问题就是这样一个经典的优化问题,它要求我们在给定的背包容量和物品集合中,选择出总价值最大的物品组合。本文将…

mac上挂载linux目录

在 macOS 上挂载 CentOS 目录步骤: 在挂载前确保 macOS 和 CentOS 在同一个局域网内,并且可以相互访问。如果有网络配置问题,可能会导致挂载失败或连接被拒绝的错误。 要在 macOS 上将 CentOS 的 /disk2/go 目录通过 NFS 挂载到 /Users/zon…