1. 中断处理是程序执行流程(顺序执行,跳转执行,中断处理)之一,发生中断后,arm处理器在执行完当前指令后跳转到中断对应的中断处理程序处执行,中断处理程序执行完成后,又回到原来跳转处的下一条指令处开始接着执行。

2. 中断处理流程: (1)中断发生后,中断控制器给 cpu 发送中断请求。

          (2)如果 cpu 能够响应中断,则将运行环境保存起来,跳到中断异常处进行执行中断处理。

          (3)识别中断来源,跳到相应中断服务程序处执行。

          (4)中断服务执行完成后,恢复之前的运行环境,返回到原来的程序处继续执行。

 

3.  中断控制器及其相关寄存器

 (1) 由上图,中断相关寄存器对中断的管理有分类汇总的特点。

 (2) 如果发生相应中断则在没有被INTMAK 和 INTSUBMAK屏蔽的前提下,SRCPND 和 SUBSRCPND 及 EINTPEND 和 INTPND中的对应位将被置1,  cpu 通过EINTPEND 和 INTPND来确定是哪个中断发生了。

 (3) 例如,如果ENT4中断发生了,则SUBSRCPND将被置1,如果在INTSUBMAK没有屏蔽的情况下,则SRCPND将被置1,如果在INTMAK没有屏蔽的情况下EINTPEND 和 INTPND中的对应位将被置1。

4. 中断模式(IRQ,FIQ)和中断优先级的设置。

5. 中断处理函数

  声明时,需要将中断处理函数的地址写到中断向量的相应的位置处。中断处理函数需要清中断标志,并执行相应的操作。先清除 SRCPND再清除 INTPND 。

6. 中断发生后具体的跳转过程,以及中断处理完成后返回的具体过程,在各个过程中arm 自动完成的操作和需要手动编程完成的操作。