中断路径被分为三个阶段,外部设备、PIE、CPU。
中断传播路径如下:
1、该中断被锁定在PIEIFRx.y中;
2、如果设置了PIEIERx.y,则中断会传播;
3、如果PIEACK.x是清除的,则中断传播并设置PIEACK.x;
4、中断用IFR.x;
5、如果设置了IER.x,则中断将传播;
6、如果INTM是清除的,则CPU将接收到该中断;
7、在管道的D2或后期阶段的任何指令都将运行到完成,将刷新早期阶段的指令;
8、CPU将其上下文保存在堆栈上;
9、IFR.x和IER.x已被清除,INTM设置,EALLOW已清除;
10、CPU从PIE中获取ISR向量,PIEIFRx.y已被清除;
11、CPU分支到ISR。
我们理解完这个,中断这么多,谁先被执行呢,这就有一个中断优先级,我们可以查中断向量表。
X 列,Y行数字越小优先级越高。