NVIC
NVIC
提供中斷控制器,用於總體管理異常,稱之為“內嵌向量中斷控制器:Nested Vectored Interrupt Controller (NVIC)”。NVIC和處理器內核緊密相連。
Cortex ‐ M3在內核水平上搭載了一顆中斷控制器——嵌套向量中斷控制器NVIC(Nested Vectored
Interrupt Controller)。它與內核有很深的“私交”——與內核是緊耦合的。NVIC 提供如下的功能:
1.可嵌套中斷支持
2.向量中斷支持
3.動態優先順序調整支持
4.中斷延遲大大縮短
5.中斷可屏蔽
它提供以下特徵。
支持嵌套和向量中斷
自動保存和恢復處理器狀態
動態改變優先順序
簡化的和確定的中斷時間
NVIC 依照優先順序處理所有支持的異常,所有異常在“處理器模式”處理。NVIC 結構支持32(IRQ[31:0]) 個離散中斷,每個中斷可以支持 4 級離散中斷優先順序。所有的中斷和大多數系統異常可以配置為不同優先順序。當中斷髮生時,NVIC 將比較新中斷與當前中斷的優先順序,如果新中斷優先順序高,則立即處理新中斷。當接受任何中斷時,ISR的開始地址可從內存的向量表中取得。不需要確定哪個中斷被響應,也不要軟體分配相關中斷服務程序(ISR)的開始地址。當獲取中斷入口地址時,NVIC 將自動保存處理狀態到棧中,包括以下寄存器“PC, PSR, LR, R0~R3, R12”的值。在ISR結束時,NVIC 將從棧中恢復相關寄存器的值,進行正常操作,因此花費少量且確定的時間處理中斷請求。NVIC 支持末尾連鎖”TailChaining”,有效處理背對背中斷”back-to-back interrupts”,即無需保存和恢復當前狀態從而減少在切換當前ISR時的延遲時間。NVIC 還支持遲到“Late Arrival”,改善同時發生的ISR的效率。當較高優先順序中斷請求發生在當前ISR開始執行之前(保持處理器狀態和獲取起始地址階段),NVIC 將立即處理更高優先順序的中斷,從而提高了實時性。