Cortex-M4的中断控制器NVIC
中断控制器(Nested Vectored Interrupt Controller, NVIC),支持系统外设和外部中断, 具体中断号参见Reference Manual。 每个中断有0-15个优先级可以配置,0对应最高优先级,15对应最低优先级,中断优先级是可以动态调整的。
1. ISERx
中断使能寄存器,每一位对应一个中断,写1使能,写0无效果;读0表示中断关闭,读1表示中断使能。
2. ICERx
中断关闭寄存器,类似于ISERx,不同之处在于写1关闭中断。
3. ISPRx
中断Pending置位寄存器,每一位对应一个中断,写1设置相应中断进入Pending状态,等待系统处理。其余同ISERx。
4. ICPRx
中断Pending清除寄存器,与ISPRx不同之处是,写1时如果中断没有进入Active状态,则清除Pending状态退出等待处理。
5. IABRx
中断Active状态寄存器。只读,读1时表示中断处于Active状态,正在被处理器内核处理。
6. IPRx
中断优先级寄存器。对应每个中断都有8位寄存器,可以Byte的形式访问。[3:0]位读访问返回0,忽略对其的写访问。
7. STIR
软件触发中断寄存器(Software Trigger Interrupt Register)。 只有低8位寄存器用作软件触发中断号(Software Generated Interrupt ID, SGI ID)。 写入的值直接对应中断号,例如0x03将产生IRQ3中断。取值范围为[0,239]。