STM32关于定时器跳不出主函数一直在中断里循环的问题

  • Post author:
  • Post category:其他


最近在调步进电机SPTA加减速的时候,遇上了困扰了我一个星期的问题。

问题如下:

每当使能定时器,开始SPTA加速时(加减速过程在中断函数里执行),总是一直在中断函数里,跳不出主函数。非得等到加速过程执行完了才跳转到主函数里去。

问题分析:

首先,我先想到的是难道中断标志位没去除吗?再次查看确实是去除了。不是这个问题。但是我还是不甘心,然后我又在SPTA各个运动阶段加上去除中断标志位,发现有效果!这就奇怪了,我不是已经去除中断标志位了吗,为啥非要去除两次,三次呢?由此得出推测:应该是中断服务函数里指令过长导致中断在下一次更新中断来临之前,中断服务函数里的指令还是没有执行完毕。为了验证这一个推测,我取一个输出引脚,进入中断给个上升沿,中断结束前给个下降沿,再用示波器测量其脉宽长度,震惊的发现中断服务函数里指令执行的时间超过了正常更新中断的时间,由此可知,每当执行完中断服务函数的所有指令前,中断已经又溢出了。所以就又进一次中断,如此循环往复。

解决办法:优化代码,让中断服务函数里的指令执行效率更高。我是调高了程序的优化等级就好了。



版权声明:本文为Jaken5213原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。