2011-04-19 31 views
0

我在我的代码中有一点需要检查程序是否从中断或任务来到这里。我正在使用SMX。任何使用SMX的人都可以回答他的问题。我没有从文档中获得足够的信息。所以,基本上我需要一些变量/参数来区分ISR和任务。区分任务和中断

+0

ISR与许多方面的任务不同: 处理器将禁用中断允许标志IE为0。因此递归中断是不可能的。 在跳转到ISR处理器之前,将保存/推送PSW,PC等重要寄存器的状态,以及保存当前任务所需的更多内容。完成后,这个状态将会回到主程序。 (切换上下文) 据我所知,ISR没有返回值和参数。 – kapilddit 2014-04-09 18:02:22

回答

1

当然代码路径是唯一的。我不知道SMX,但它肯定不会覆盖通常的机制,即由中断调用的函数具有特殊处理来建立堆栈帧,保存寄存器以及建立到模块变量的静态链接。在这种情况下,检查ISR与其他路线的明显方法是ISR在入口时设置一个标志,并在退出时将其清除。