[STM32G4] 如何处理多个溢出中断

[复制链接]
987|10
 楼主| 空间规划科 发表于 2024-8-31 18:15 | 显示全部楼层 |阅读模式
在长时间捕获过程中,如何处理多个溢出中断?
夜阑风雨 发表于 2024-9-21 22:28 | 显示全部楼层
在长时间捕获过程中处理多个溢出中断是一个常见的问题,特别是在使用定时器进行高精度时间测量时。溢出中断通常发生在定时器的计数器达到其最大值并回滚到零时。如果捕获事件发生在两个溢出中断之间,你需要确保能够正确地计算出捕获事件的实际时间。
远山寻你 发表于 2024-9-22 02:00 | 显示全部楼层
在每次溢出中断发生时,增加一个计数器(例如 overflow_count)。当捕获事件发生时,读取当前定时器的计数值,并结合 overflow_count 计算出捕获事件的实际时间

三生万物 发表于 2024-9-22 03:00 | 显示全部楼层
如果硬件支持,使用一个更高位的定时器(例如 32 位定时器而不是 16 位定时器),这样可以减少溢出中断的频率

别乱了阵脚 发表于 2024-9-22 04:00 | 显示全部楼层
在捕获事件发生时,如果检测到在上一次捕获事件之后发生了溢出中断,可以通过软件计算来补偿时间差。

冰春彩落下 发表于 2024-9-22 05:00 | 显示全部楼层
允许定时器溢出中断嵌套在其他中断处理中,确保在捕获事件中断中能够及时处理溢出中断的计数

江河千里 发表于 2024-9-22 06:00 | 显示全部楼层
HAL_TIM_PeriodElapsedCallback 函数在每次定时器溢出时被调用,增加 overflow_count 计数器。HAL_TIM_IC_CaptureCallback 函数在捕获事件发生时被调用,读取当前捕获值,并结合 overflow_count 计算出实际捕获时间。

一秒落纱 发表于 2024-9-22 07:00 | 显示全部楼层
一般可以通过定时器来实现,你可以确保在长时间捕获过程中正确处理多个溢出中断,从而获得准确的捕获时间

光辉梦境 发表于 2024-9-22 08:00 | 显示全部楼层
其实弄个全局变量来实现记录溢出次数,然后到了次数之后,进行中断触发呗

淡漠安然 发表于 2024-9-22 09:00 | 显示全部楼层
什么叫多个溢出中断啊?是同时来好几个溢出中断?

暖了夏天蓝了海 发表于 2024-9-22 10:00 | 显示全部楼层
按顺序处理呗,可以把溢出的数值调大一些吧

您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

147

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部