打印
[STM32F4]

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

[复制链接]
152|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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寄存器,比你基于中断去读要更快捷点。
基于定时器捕获测量脉宽的 ...

谢谢香版!还好这个捕获中断是偶尔进不去,今天我在软件上加了点判断,在实时性要求不太高的时候是可以避免的。你发的这个我仔细研究下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

4233

帖子

10

粉丝