Cortex—M4内核支持128级中断嵌套,他有一个8位寄存器,用户可以通过这个寄存器设置中断优先级,但考虑到现在有些芯片不可能有这么多中断源,且支持这么多级中断嵌套堆栈也吃不消,大部分厂家都根据自己生产的芯片做出了调整,STM32F1和F4只是用了这个8位寄存器的高四位,低四位取零,这样=16也就是表示支持16级中断嵌套,对于这个NVIC还有一个新概念就是抢占优先级pre-emption和子优先级subpriority
·具有高抢占优先级的中断可以在具有低抢占优先级的中断处理过程中被响应,即中断嵌套,或者说高响应级别的中断可以嵌套低抢占优先级的中断
·在抢占优先级相同的情况下,如果有低副优先级的中断正在执行,高副优先级的中断必须等待低优先级的中断执行完程序才能得到响应。如果同时中断同时到来那么高优先级的中断优先被响应。
·系统优先级Reset、NMI、Hard Fault优先级为负高于普通优先级且不可调整。
EXTI寄存器
中断屏蔽寄存器 (EXTI_IMR)
偏移地址:0x00
复位值:0x0000 0000
位 31:23 保留,必须保持复位值。
位 22:0 MRx:x 线上的中断屏蔽 (Interrupt mask on line x)
0:屏蔽来自 x 线的中断请求
1:开放来自 x 线的中断请求
事件屏蔽寄存器 (EXTI_EMR)
偏移地址:0x04
复位值:0x0000 0000
位 31:23 保留,必须保持复位值。
位 22:0 MRx&