正如我们所知,我们编写Embedded C编程,用于task management, memory management, ISR, File system和所有。
我想知道是否有一些task or process is running同时有一个interrupt occurred,然后how SW or process or system comes to know that, the interrupt has occurred?pauses电流task executionstarts serving ISR
假设我会像这样写下面的代码;

// Dummy Code
void main()
{
    for(;;)
        printf("\n forever");
}

// Dummy code for ISR for understanding
void ISR()
{
    printf("\n Interrupt occurred");
}

在上述代码中,如果external interrupt(ISR) occurs,那么main()如何知道中断发生了所以它会先开始为ISR服务?

最佳答案

你的问题:我理解你的答案。但我想知道当中断发生时,当前任务执行如何停止/暂停,ISR如何开始执行?
好吧,拉希米回答你下面的问题,
当微控制器检测到中断时,在执行当前指令后停止程序的执行。然后将PC(program counter)推到堆栈上,用中断的向量位置加载PC,程序流被引导到中断服务例程ISR完成后,微控制器再次从堆栈弹出存储的程序计数器并将其加载到PC上,因此,程序执行从下一个停止的位置再次恢复。
这是否回答了你的问题?

关于c - 软件如何识别发生了中断?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10996400/

10-11 19:44