2

维基百科条目指出:

在计算机系统编程中,中断处理程序,也称为中断服务程序或 ISR,是微控制器固件、操作系统或设备驱动程序中的回调函数,其执行由接收到中断触发。

ISR 是如何回调的。存储在堆栈上的 PC 值本身就是回调函数吗?

即,ISR 回调被中断的函数。因此,被中断的函数是一个回调。

4

3 回答 3

3

一段设置代码将 ISR 函数的地址存储在中断向量表中,以表示“当中断发生时在此地址给我回电”。

需要明确的是,ISR 本身就是被“回调”的函数。中断的代码不是回调;它只是“中断”然后“恢复”。

于 2014-08-02T10:12:35.677 回答
2

ISR 回调被中断的函数

不,它没有,程序计数器寄存器像返回指令一样从堆栈中恢复。ISR 是一个“回调”,因为它是通过其地址(存储在中断向量表中)而不是直接调用的。

于 2014-08-02T10:05:17.953 回答
1

微控制器在其闪存中的已知位置有一个中断向量表。该表包含所有 ISR 的地址(复位中断、定时器中断、GPIO 中断等)。当一个中断被启用时,在一个特定的触发器上调用 ISR 函数:应用程序被中断,程序计数器和处理器寄存器被保存在堆栈中,并调用中断代码。当中断代码完成时,应用程序被恢复,应用程序重新开始。

于 2014-08-02T10:00:16.267 回答