用STM32F107单片机的外部中断对脉冲信号计数,脉冲信号频率略高,计数就变少,为什么?

这个脉冲信号为20HZ的时候,还能准确计数,但是200HZ的时候,计数变少了。STM32不可能连这么点频率的脉冲都处理不了吧,求指教

嘿嘿 俺来帮你解答
用 外部中断对脉冲信号计数造成丢失脉冲的原因:
1 脉冲信号频率过高 超过外部中断对脉冲信号的处理速度
2 系统其它中断会造成影响 会延迟外部中断对脉冲信号的处理时间
3 外部中断对脉冲信号的处理程序如果比较长 执行时间也长 也会影响外部中断对脉冲信号的处理速度
建议:
1 将对脉冲信号计数的外部中断的优先级设成高级中断
2 外部中断对脉冲信号的处理程序要尽量想办法缩短
3 当然建议最好使用计数器 每当计满 才中断1次 就不会丢失脉冲了
STM32F107单片机内部可是有4个定时计数器啊

呵呵 满意就给加分吧追问

整个程序中就这一个外部中断,并无其他中断了。要说频率高,其实也不过200hz就出现了计数丢失现象,这个对于stm32来说说不过去啊。中断函数里面就对计数值counter++了,其他什么也没干。望解答

追答

呵呵 为什么不用计数器啊?
按理不会的 频率不算高 硬件上脉冲传感器没问题吧

追问

要求用这个,而且碰到问题总不能回避吧

追答

那很好 你是如何判断 计数时 少了多少个脉冲的?
有准确的数值吗?

追问

这个脉冲信号由光耦的相关电路产生。我把某滚轮转一圈,固定产生20个脉冲。如果转的不快,这20个脉冲都能被计数。如果转快了,计数就丢失了。。。加Q聊吧370276468

追答

脉冲信号由光耦的相关电路产生 是你设计的吗? 有可能是硬件问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-28
公司用了这个片子做的红外遥控控制,检测红外都没啥问题。
你这个情况是不是计数器已经跑溢出了。你看到的是不确定的计数。
200HZ用中断处理应该没啥问题。
你中断出了计数还有别的东西吗?
第2个回答  2012-09-16
这个没试过,但是用外部中断计数,未免太耗单片机资源,一直中断。。不太好。。可以试试定时器。
相似回答