我很少在中断函数里面调用延时程序,主要是最初接触单片机的时候前辈们就这样教的。说程序容易跑飞,之前也一直没出现过这样的情况。最近做一个东西,无意中在中断中加了一个us级的延时,用for();去做的,结果程序真的跑飞了,主程序直接死在某个位置不动了。我本来以为是,这个中断有特殊要求,必须以最快的速度结束中断并返回。后来呢,我就把那个for延时改成了个printf,给上位机发送几个字符,结果发现程序这次没死了。还有,我把某些用于计算的子函数放到中断里面调用,而这些子函数运行的时间,绝对要比for(x=0;x<5;x++)要长多了。。。。
我起初是以为这个中断执行的时间不能超过for(x=0;x<5;x++),超过就会出错,只是后来的试验反驳了这个观点。
那就提个问题大家看一下,为什么这个延时会导致程序跑飞呢? |