[STM32F1] 【问题探讨】对比试验后,谈谈stm32单片机中断程序中加延时可能引发程序死机问题

[复制链接]
5206|15
 楼主| 970253146 发表于 2016-10-5 09:53 | 显示全部楼层 |阅读模式
我很少在中断函数里面调用延时程序,主要是最初接触单片机的时候前辈们就这样教的。说程序容易跑飞,之前也一直没出现过这样的情况。最近做一个东西,无意中在中断中加了一个us级的延时,用for();去做的,结果程序真的跑飞了,主程序直接死在某个位置不动了。我本来以为是,这个中断有特殊要求,必须以最快的速度结束中断并返回。后来呢,我就把那个for延时改成了个printf,给上位机发送几个字符,结果发现程序这次没死了。还有,我把某些用于计算的子函数放到中断里面调用,而这些子函数运行的时间,绝对要比for(x=0;x<5;x++)要长多了。。。。

我起初是以为这个中断执行的时间不能超过for(x=0;x<5;x++),超过就会出错,只是后来的试验反驳了这个观点。
那就提个问题大家看一下,为什么这个延时会导致程序跑飞呢?
mmuuss586 发表于 2016-10-5 10:41 | 显示全部楼层
你加在哪个中断程序里啊?
shcshc1234 发表于 2016-10-5 20:04 | 显示全部楼层
卡在中断里了吧比如1ms一个中断中断里有一个10ms延时
zhaolei2612 发表于 2016-10-5 20:50 | 显示全部楼层
中断程序能贴上来么
icecut 发表于 2016-10-5 21:14 | 显示全部楼层
汗啊...让我无话可说.中断加延时会跑飞,你跟那个三脚猫学的?
 楼主| 970253146 发表于 2016-10-5 22:54 来自手机 | 显示全部楼层
mmuuss586 发表于 2016-10-5 10:41
你加在哪个中断程序里啊?

是一个ad中断,ad转换完成中断,中断中是有清标志位的
 楼主| 970253146 发表于 2016-10-5 22:55 来自手机 | 显示全部楼层
shcshc1234 发表于 2016-10-5 20:04
卡在中断里了吧比如1ms一个中断中断里有一个10ms延时

不是的,中断频率2k,而延时只有几个us
 楼主| 970253146 发表于 2016-10-5 22:57 来自手机 | 显示全部楼层
icecut 发表于 2016-10-5 21:14
汗啊...让我无话可说.中断加延时会跑飞,你跟那个三脚猫学的?

不一定会跑飞,我也试过有些中断里面加过的。只是这次恰好遇到了这个问题,所以提出来
 楼主| 970253146 发表于 2016-10-5 22:59 来自手机 | 显示全部楼层
icecut 发表于 2016-10-5 21:14
汗啊...让我无话可说.中断加延时会跑飞,你跟那个三脚猫学的?

那你觉得是什么原因呢,中断中把那个延时换成别的子程序,就一切都可以运行。而且那个子程序运行的时间要比那个for循环要长的
290399937 发表于 2016-10-6 08:05 来自手机 | 显示全部楼层
你的FOR循环是个死循环
mcu5i51 发表于 2016-10-6 09:01 | 显示全部楼层
只要没有冲突,就不会出问题;要注意的是正常退出之前不要重复进入
icecut 发表于 2016-10-6 18:20 | 显示全部楼层
970253146 发表于 2016-10-5 22:57
不一定会跑飞,我也试过有些中断里面加过的。只是这次恰好遇到了这个问题,所以提出来 ...

这次遇到肯定是其他问题.要是有问题你早就遇到了.并且不会这么让你迷茫
kejian2000 发表于 2016-10-7 10:51 | 显示全部楼层
for里面有静态货全局变量?
 楼主| 970253146 发表于 2016-10-9 11:47 | 显示全部楼层
kejian2000 发表于 2016-10-7 10:51
for里面有静态货全局变量?

没有静态的,但是for里面的i=0;i<5的i是个全局变量
kejian2000 发表于 2016-10-11 19:47 | 显示全部楼层
970253146 发表于 2016-10-9 11:47
没有静态的,但是for里面的i=0;i

这个i在其他地方也在使用吧
 楼主| 970253146 发表于 2016-10-12 17:12 | 显示全部楼层
统一回复一下大家,问题解决了。解决的办法是换了一块stm32,一模一样的程序,一开始我自己也不相信,后来找了玩stm32比较厉害的同学来一起分析,他们也说第一次见到这样的情况,换个芯片,中断里面加的延时,只要低于中断频率,随便加什么,结果都是正确的,现在怀疑是板子干扰或者是该板子稳定性不好,确实是第一次见到这样的情况。谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

93

主题

289

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部