[STM32F4] HAL_TIM_IC_CaptureCallback中断好像不是每次都能进去。

[复制链接]
 楼主| mbutterfly 发表于 2024-7-4 15:50 | 显示全部楼层 |阅读模式
最近用STM32的一个芯片测PWM输入,发现频率有的时候不对,原因是HAL_TIM_IC_CaptureCallback函数里测量的上升沿之间间隔和上升沿下降沿之间间隔,发现有的时候丢了一个上升沿或者下降沿。将这个定时器的优先级该成0,状况好点,但是还出错。输入频率是10000Hz的时候,__HAL_TIM_GetCounter函数测的值,比HAL_TIM_ReadCapturedValue要多2个,即使__HAL_TIM_GetCounter放到前面。
我用的是TIM10和TIM13分别做两路PWM输入捕获,每个定时器都是先测上升沿,之后再测下降沿,再测上升沿的方式,来计算频率和占空比。请各位版主和大佬帮看看,谢谢!@香水城, 呐咯密密, 小叶三千, STM新闻官, lihui567
香水城 发表于 2024-7-4 22:02 | 显示全部楼层
本帖最后由 香水城 于 2024-7-5 08:10 编辑

发生捕获事件时 是硬件将counter值放到ccr寄存器,比你基于中断去读要更快捷点。
另外,你觉得没进入捕获中断,可能是你的代码没区别开来,主要是当两个捕获事件发生太近,代码处理有点冗长时。

基于定时器捕获测量脉宽的应用示例

 楼主| mbutterfly 发表于 2024-7-5 08:10 | 显示全部楼层
香水城 发表于 2024-7-4 22:02
发生捕获事件时 是硬件将counter值放到ccr寄存器,比你基于中断去读要更快捷点。
基于定时器捕获测量脉宽的 ...

谢谢香版!还好这个捕获中断是偶尔进不去,今天我在软件上加了点判断,在实时性要求不太高的时候是可以避免的。你发的这个我仔细研究下。
cr315 发表于 2024-7-9 11:15 | 显示全部楼层
配置有误
jcky001 发表于 2024-7-9 20:00 | 显示全部楼层
是否有硬件故障
两只袜子 发表于 2024-7-10 11:00 | 显示全部楼层
中断处理延迟
过期的塔头 发表于 2024-7-30 15:02 | 显示全部楼层
如果你使用多个定时器(如TIM10和TIM13),确保它们之间没有同步问题。两个定时器可能需要共享时钟源或同步配置,以避免时间偏移导致的数据捕获错误。
mintspring 发表于 2024-7-30 15:50 | 显示全部楼层
中断嵌套太多了,导致的有时候会延迟一些时间才到达处理函数。
mintspring 发表于 2024-7-30 15:50 | 显示全部楼层
说的是那个函数嵌套太多。sorry。
米多0036 发表于 2024-8-31 13:04 | 显示全部楼层
虽然将定时器的优先级设置为 0 可以使其优先处理,但如果定时器中断频率很高,可能会影响其他中断的处理
 楼主| mbutterfly 发表于 2024-9-2 10:02 | 显示全部楼层
过期的塔头 发表于 2024-7-30 15:02
如果你使用多个定时器(如TIM10和TIM13),确保它们之间没有同步问题。两个定时器可能需要共享时钟源或同步 ...

谢谢,我用软件解决了,就是频率变化不快的时候,两次的上升沿之间差一致才算,不一致就丢了。定时器同步好像FPGA里有这个,我没太关注ST的这方面。
 楼主| mbutterfly 发表于 2024-9-2 10:04 | 显示全部楼层
mintspring 发表于 2024-7-30 15:50
说的是那个函数嵌套太多。sorry。

我今天只判断频率,就是不用捕获下降沿,频率是没问题的。应该是上升沿下降沿来回切换,频率高了来不及捕获。
 楼主| mbutterfly 发表于 2024-9-2 10:04 | 显示全部楼层
jcky001 发表于 2024-7-9 20:00
是否有硬件故障

谢谢,没有硬件故障的。
 楼主| mbutterfly 发表于 2024-9-2 10:05 | 显示全部楼层

应该是信号沿来回切换,来不及捕获。
 楼主| mbutterfly 发表于 2024-9-2 10:05 | 显示全部楼层

谢谢,应该是信号沿来回切换,来不及捕获。
LOVEEVER 发表于 2024-9-13 17:23 | 显示全部楼层
很好的问题,其实软件层面确实会有这个问题
呈兴 发表于 2024-9-20 22:56 来自手机 | 显示全部楼层
将这个定时器的优先级该成0,状况好点,但是还出错
泡椒风爪 发表于 2024-9-20 23:02 来自手机 | 显示全部楼层
有的时候丢了一个上升沿或者下降沿
4y1b3 发表于 2024-9-26 17:48 来自手机 | 显示全部楼层
用的是TIM10和TIM13分别做两路
610u 发表于 2024-9-26 17:50 来自手机 | 显示全部楼层
HAL_TIM_IC_CaptureCallback函数里测量的上升沿之间间隔和上升沿下降沿之间间隔
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

5304

帖子

10

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