当前位置: 首页 > article >正文

STM32滴答时钟是否每次计时1ms都要中断一下,更新ms数

        滴答时钟(SysTick)在STM32中确实被配置为每1ms产生一次中断,但这并不意味着每次计时1ms都必须中断以更新毫秒数。不过,在标准的配置和使用方式下,SysTick定时器确实是以这种方式工作的。

工作原理

        SysTick是一个24位的倒计时定时器,它依赖于系统时钟信号。每接收到一个时钟信号,计数器就会加1。当计数器的值达到0时,SysTick重装载寄存器会自动重新装载预设的初值(在STM32 HAL库中,这个初值通常被设置为产生1ms中断的对应值)。同时,SysTick会触发一个中断,表明一个计时周期已经结束。

中断处理

        在中断服务程序(ISR)中,通常会执行一些与计时相关的操作,比如更新全局的时间变量、处理定时任务等。但是,这些操作并不是必需的,它们完全取决于应用程序的需求。

更新毫秒数

        如果应用程序需要跟踪毫秒级的时间(比如实现一个精确的延时函数),那么它可能会在SysTick的中断服务程序中更新一个全局的毫秒数变量。这样,每次SysTick中断发生时,这个变量就会增加1,从而反映出时间的流逝。

        然而,如果应用程序不需要这种精确的时间跟踪,那么它就可以忽略SysTick中断中的这部分操作。在这种情况下,SysTick中断仍然会每1ms发生一次,但中断服务程序可能只会执行一些简短的操作(比如检查某个条件是否满足),而不会更新毫秒数变量。

性能影响

        SysTick中断的频繁发生确实可能会对主程序的运行产生一定的影响。但是,由于中断服务程序通常都很简短(微秒级别),因此这种影响通常是微不足道的。在大多数情况下,开发者可以安全地依赖SysTick定时器来提供精确的时间基准,而无需担心它会显著影响主程序的性能。

结论

        滴答时钟(SysTick)在STM32中确实是以每1ms产生一次中断的方式工作的。但是否需要在每次中断中更新毫秒数变量则完全取决于应用程序的需求。如果不需要精确的时间跟踪,那么可以省略这部分操作以减少中断服务程序的开销。


http://www.kler.cn/a/381683.html

相关文章:

  • 抢单人机交互「新红利」!哪些细分赛道“多金”?
  • Unity中有什么情况下是需要用UniTask替代其他异步方式的吗?
  • 分数阶傅里叶变换
  • 前端开放性技术面试—面试题
  • ruoyi 请求参数类型不匹配,参数[giftId]要求类型为:‘java.lang.Long‘,但输入值为:‘orderGiftUnionList
  • 【看海的算法日记✨优选篇✨】第二回:流动之窗,探索算法的优雅之道
  • git fork(派生)使用操作
  • python实现tkinter解密剧情文本游戏
  • 深度学习基础—序列采样
  • SAP RFC 用户安全授权
  • 理解为什么要有C++设计模式
  • 移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (9) - 编译现有的AWTK应用程序
  • wps表格数据竖排变成横排方法
  • qt QDropEvent详解
  • 【JavaEE初阶 — 多线程】Thread的常见构造方法&属性
  • AI教育革命:辅导孩子的新神器,你用对了吗?‍
  • 【Wi-Fi】802.11n Vs 802.11ac 整理
  • 大屏可视化:舞动数据与美观的“设计秘籍”
  • 使用 JPA 的 `save()` 方法更新数据库中的数据
  • 【数据湖及大数据方案】数据湖建设方案|数据源|数据流|元数据|数据仓库|指标池|数据清洗
  • 【VScode】C/C++多文件夹下、多文件引用、分别编译——仅一个设置【适合新人入手】
  • Python - PDF 分割成单页、PDF 转图片(PNG)
  • Ubuntu 安装CUDA, cuDNN, TensorRT(草稿)
  • 【LeetCode】【算法】236. 二叉树最近公共祖先
  • 消息队列面试——打破沙锅问到底
  • 【系统架构设计师】论文:论基于 ABSD 的软件开发