有几种可能:
1、你的外部中断是电平触发,当你中断执行完毕后,电平还是没有变,就等于又中断了,建议你改为边沿触发
2、你在进入中断后,没有保存现场,内存的数据乱了,结果中断完成后就回不去了
3、中断程序有问题,这要对照具体的程序才知道
发生中断申请后,CPU 响应中断时,自动把主程序的断点地址压入堆栈。
如果,在中断程序中,你修改了堆栈的内容,
那么,中断执行完之后,就能返回到你指定的位置。
1,有些ARM处理器有复位寄存器,只要在中断函数里向复位寄存器写规定的数值就会产生复位。
2,有些ARM处理器带看门狗WatchDog,只要在中断函数里启动软件狗,并且进入死循环不喂狗,看门狗会产生复位信号。
3,上述硬件都没有ARM处理器,让硬件工程师加一个软件复位电路,可以用一个GPIO引脚触发复位的。然后在中断函数里改变GPIO引脚状态触发复位。
以上就是关于为什么中断后不能返回主程序继续执行全部的内容,包括:为什么中断后不能返回主程序继续执行、汇编语言 中断执行完之后能返回到主程序指定位置吗怎么做、ARM9中断中(C语言)如何实现复位功能,而不是返回中断前的状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)