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

最近在调步进电机SPTA加减速的时候,遇上了困扰了我一个星期的问题。
问题如下:
每当使能定时器,开始SPTA加速时(加减速过程在中断函数里执行),总是一直在中断函数里,跳不出主函数。非得等到加速过程执行完了才跳转到主函数里去。

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

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

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值