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

2019-12-22 13:45发布

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

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

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

希望大家指点下!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
bg6agf
1楼-- · 2019-12-26 02:07
研究一下操作系统里处理任务切换的机制。
zyw19987
2楼-- · 2019-12-26 04:01
反思一下自己程序思路是否有问题。在中断中等待下一次串口不行?
redroof
3楼-- · 2019-12-26 06:19
zyw19987 发表于 2017-10-5 20:06
反思一下自己程序思路是否有问题。在中断中等待下一次串口不行?

在中断里面不能等任何东西啊~
最清晰的方式就是上RTOS,在中断里面收到数据后发送一个事件,唤醒平常一直等待的优先级比目前任务更高的数据处理任务来执行(这样实际上RTOS就是悄悄的替你做到了“中断后不返回中断前执行的代码”。被中断的是当前的任务,中断发送事件后在退出中断前RTOS的代码会替换堆栈为准备唤醒的数据处理任务)
cc224
4楼-- · 2019-12-26 09:36
邪恶的思路。中断就是中断,在中断里接收到数据,置相应的标志位,然后主函数里判断标志位就可以控制流程了。别想这些歪门邪道的搞法了。
jianfengxixi
5楼-- · 2019-12-26 11:44
 精彩回答 2  元偷偷看……
huangqi412
6楼-- · 2019-12-26 16:32
如果没有不方便分解长任务 主循环就够了 如果有 软中断或rtos切换任务

一周热门 更多>