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

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.mrgr.cn/news/63229.html

相关文章:

  • 使用Mac如何才能提高OCR与翻译的效率
  • 永久免费单域名SSL证书申请教学——极速签发
  • 发布 NPM 包时,终端显示发布成功但实际上版本并没有更新,可能是由于以下原因
  • 【02基础】- RabbitMQ基础
  • 深入理解 Spring Boot 中的 @PathVariable 注解
  • Android 音量调节流程分析
  • 【测试工具篇一】全网最强保姆级教程抓包工具Fiddler(1)
  • VB中的日志记录(Logging)机制及其重要性
  • Vatee万腾平台:企业数字化之旅的全能助手与伙伴
  • FemtoMega阵列同步采集示例
  • 十五、mysql锁
  • 【C++动态规划 分组背包】1981. 最小化目标值与所选元素的差|2009
  • PLC数据采集案例分享
  • 配电室智能巡检机器人 挂轨简易 24小时 无人值守
  • Linux---硬盘管理
  • idea 导入Spring源码遇到的坑并解决
  • 数据结构——单向循环链表
  • 大模型SFT数据选择方法综述
  • PCL 法线微分(DoN)分割(C++详细过程版)
  • 抗疫物资管理:SpringBoot技术应用
  • 学习记录:js算法(八十二):组合总和
  • 华为OD机试 - 快递员的烦恼 - 动态规划(Python/JS/C/C++ 2024 D卷 200分)
  • Halcon 2D测量Metrology找线/圆/矩形/椭圆
  • Git进阶(十七):特性分支
  • 用二维码展示信息,有哪些常见应用场景
  • Idea常用插件