最近做一个项目用到了STM32F103C8T6,使用TIM4对霍尔传感器输出的脉冲进行捕获,用来测电机的转速,实现思路是:TIM4使能Update和CC1中断,配置为上升沿捕获。每次Update中断触发时计时变量Tim4UpdateCnt自增,用于整体计时。每次CC1中断时,获取捕获的值,与Tim4UpdateCnt结合计算得到捕获发生的时刻,然后计算与上一个捕获时刻的时间差,即为所测的电机转动周期。实际运行时程序测得的周期能够达到us级的精度。但是偶尔会丢失一次捕获中断,导致测得的电机转动周期跳变为正常值的两倍,大概几分钟至十几分钟会出现一次。为了排除霍尔传感器给的脉冲信号不可靠的原因,我使用信号发生器产生50Hz,占空比为1%的方波,连接至捕获通道上,结果仍然有同样的现象。不知道坛里的兄弟有没有遇到过这种问题,又是如何解决的,请不吝赐教,谢谢! |