中断处理过程

中断全过程指的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断服务程序执行完毕,CPU再返回原来的程序继续执行的整个过程。

步骤

  1. 请求中断→响应中断→关闭中断
  2. 保留断点
  3. 引出中断服务程序
  4. 保护现场
  5. 开启中断
  6. 执行中断服务程序
  7. 关闭中断
  8. 恢复现场
  9. 打开中断
  10. 中断返回

中断处理过程_第1张图片

 2.保存断点:保证中断程序执行完能够回来继续执行后面的程序,其实保存的是程序计数器

3.引出中断服务程序:其实就是读取我们要执行的程序的地址,以便一会去执行

4.保存现场:保存寄存器中的数据,以便回来执行的时候恢复数据。为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。

开中断和关中断:加锁

  • 将CPU不响应更高级中断请求

  • 在进入中断服务程序时, CPU已经自动禁止了本CPU上的中断响应,因为CPU不能假定中断服务程序是可重入的。

  • 如果在保存寄存器值时被中断了,那么另外的操作很可能就把寄存器改写了,现场无法恢复

10.中断返回

在中断服务子程序的最后要安排一条中断返回指令IRET,执行该指令,系统自动将堆栈内保存的IP/EIP和CS值弹出,从而恢复主程序断点处的地址值,同时还自动恢复标志寄存器FR或EFR的内容,使CPU转到被中断的程序中继续执行

你可能感兴趣的:(操作系统,stm32,嵌入式硬件)