cortex-m:中断中断的异常号存储在哪里

cortex-m: where is exception number of interrupted interrupt stored

为了让 NVIC 能够比较优先级,它需要知道它们。

乍一看似乎很简单(可以从异常号中获取,当前中断的异常号在SCB->ICSR bits [5:0]中)但是当中断被中断时会发生什么?中断中断的异常号(或优先级)存放在哪里?

我看过 Yiu 的书,但在那里找不到答案。

根据 ARM 文档,中断程序状态寄存器包含 "contains the exception type number of the current Interrupt Service Routine (ISR)"。

NVIC_IPRn(中断优先级寄存器)按照位描述存储中断优先级。 它的地址从 0xE000E400 + 4n (secure)

以下是NVIC_IPRn(0..128) 寄存器的位分配。

例如,NVIC_IPR0 的 LSB 包含 INTR0 的优先级。