怎么让中断后不返回到中断前执行的代码?

2019-12-22 13:45发布

不修改返回的PC地址,如何让中断返回到其它函数?好像不修改PC地址实现不了?

我的问题实际就是,在主函数执行过程中,突发事件来了,突发就是串口中断接收到某数据,这时
我不能返回到原来的地址继续执行,想跳到另外一个处理函数A去,这个函数可以是空的,但要一直在
这个函数循环等待,等待只要串口再次接收到某数据,则可以退出A函数,继续执行主函数。

这个,没有操作系统。
但如果不上系统,能实现吗?
用上系统是不是好实现一些?

希望大家指点下!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
Error.Dan
1楼-- · 2019-12-24 19:22
本来还想说,确实有硬改堆栈这种黑科技的。。。
不过LZ的帖子看下来,还是软中断最适合你。。。
串口中断->匹配->软中断(any source->while(1){do something})->串口中断->一般程序

倒是一个简单粗暴的办法,mark一下~
LearningASM
2楼-- · 2019-12-24 19:35
 精彩回答 2  元偷偷看……
boat030
3楼-- · 2019-12-24 21:00
楼主您需要的是嵌入式实时操作系统!
ddcour
4楼-- · 2019-12-24 22:29
串口中断最高优先级不行?你要多快响应?
not_at_all
5楼-- · 2019-12-25 00:51
你那个属于嵌套中断   并且在低级中断触发另一个中断,另一个中断处理完,返回后,原来的中断接着返回,执行原有的地址继续执行
t3486784401
6楼-- · 2019-12-25 06:49
在执行到 RET 之类的指令之前,向堆栈额外压入(PUSH)返回地址,是可以实现任意跳转的,但这个已经破坏了 C 的结构了,还不如直接 JMP

一周热门 更多>