我遇到的问题是,我希望在受保护的环境中运行此外部函数,以便如果它创建故障异常或执行时间过长,它不会干扰主固件。因此,我想要做的是,在硬故障ISR(用于故障异常)或计时器滴答ISR(用于执行时间问题)中,操纵堆栈以终止外部函数,并将执行返回到主固件。我意识到在RTOS中这将是简单明了的,但是主固件已经开发完成,目前切换将需要大量的努力。
我考虑使用C++中的try-catch,但编译器似乎不支持它。因此,我看到的另一种选择是编写一些汇编代码,在调用外部函数之前保存堆栈指针,并从ISR恢复SP和上下文,并跳转到主固件中的返回点。是否有更简单的方法来完成这项工作?能否给出如何最好地完成此操作的任何指针?