上圖是(Exception Nuber 1~15) ARM Cortex-M 架構的 內部定義的 Exception,16~255 就是 Interrupt 是開發人員要自己定義,在ARM的架構上來說,Interrupt是一種Exception。
每個Exception都有自己的優先權,在ARM Cortex-M中數值越小代表優先權越高,因為IRQ 都是從0開始設定優先權數值,Exception Nuber 1~15 通常在軟體會被定義成-14~-1。
在發生Exception時,會直接備份一些暫存器(xPSR,R15,R14,R12,R3,R2,R2,R1,R0),比較特別的是這些備份機制在硬體層就直接做掉了,不需要軟體額外來做,return 就把他還原。
在ARM Cortex-M裡,設定優先權的register bits被分為兩個欄位
【嵌入式放牛班】Cortex-M Interrupt
淺談優先權,從ARM Cortex-M到FreeRTOS設定