ISR是怎样的回调函数

问题描述 投票:0回答:4

维基百科条目指出:

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

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

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

microcontroller interrupt-handling isr
4个回答
4
投票

一些设置代码将 ISR 函数的地址存储在中断向量表中,以表示“当中断发生时,在该地址上回调我”。 需要明确的是,ISR 本身就是“回调”的函数。被中断的代码不是回调;它只是“中断”然后“恢复”。


2
投票
ISR 回调被中断的函数

不,不是的,程序计数器寄存器是像返回指令一样从堆栈中恢复的。 ISR 是一个“回调”,因为它是
通过其地址

(存储在中断向量表中)调用的,并且不是直接


1
投票


0
投票

中断服务程序“回调”函数的地址存储在中断向量表中。

ISR 和回调之间的区别在于 ISR 是由硬件中断发起的意外事件。中断服务例程 (ISR) 是触发硬件中断时运行的函数。

中断服务例程 (ISR),也称为中断处理程序,是一种特殊的回调,不带输入参数且不返回任何内容。

ISR 处理程序由硬件中断触发。中断处理程序“回调”不会由软件直接调用(至少通常不会)。

这可能值得一读:

    https://en.wikipedia.org/wiki/Interrupt_handler
  • https://en.wikipedia.org/wiki/Interrupt_vector_table
  • https://en.wikipedia.org/wiki/Callback_(computer_programming)
© www.soinside.com 2019 - 2024. All rights reserved.