巢狀的向量式中斷控制器 NVIC

2021-07-27 13:54:16 字數 1081 閱讀 3308

幾個基本概念:1.arm cortex_m3 核心支援 256 個中斷(16 個核心+240 外部)和可程式設計 256 級中斷優先順序的設定,與其相關的中斷控制和中斷優先順序控制暫存器(nvic、systick 等)也都屬於cortex_m3 核心的部分。其中,stm32 目前支援的中斷共為 84 個(16 個核心+68 個外部) ,和 16 級可程式設計中斷優先順序的設定(僅使用中斷優先順序設定 8bit 中的高 4 位) 。

2.巢狀向量中斷控制器( nvic ) 和處理器核的介面緊密相連,可以實現低延遲的中斷處理和高效地處理晚到的中斷。

3.nvic 共支援 1 至 240 個外部中斷輸入(通常外部中斷寫作 irqs) 。具體的數值由晶元廠商在設計晶元時決定。此外,nvic 還支援乙個「永垂不朽」的不可遮蔽中斷(nmi)輸入。nmi 的實際功能亦由晶元製造商決定。在某些情況下,nmi 無法由外部中斷源控制。

4. nvic 的訪問位址是 0xe000_e000。 所有 nvic 的中斷控制/狀態暫存器都只能在特權級下訪問。 

不過有乙個例外——軟體觸發中斷暫存器可以在使用者級下訪問以產生軟體中斷。 所有的中斷控制/狀態暫存器均可按字/半字/位元組的方式訪問。 此外, 有幾個中斷遮蔽暫存器也與中斷控制密切相關,它們屬於「特殊功能暫存器」 ,只能通過 mrs/msr及 cps 來訪問。

5.每個外部中斷都在 nvic 的下列暫存器中「**」 :

對於中斷優先順序分組

中斷優先順序控制位還必須分成 2 組看:從高位開始,前面是定義搶先式優先順序的位,後面用於定義子優先順序。4bit 的分組組合可以有以下幾種形式:

ps:對這4位進行分組,根據「分步用乘法」的規律,不管怎樣(2^2 * 2^2 = 4 * 4 = 16 或者2^^4 = 16等)都是滿足16位優先順序的說法。 如:

中斷分組設定函式

在 sys.c 裡面只有乙個函式就是 void nvic_configuration()中斷配置函式,在這個函式裡面我們只呼叫了韌體庫的中斷分組配置函式,這只整個系統的中斷分組為組別 2.這個函式在系統初始化的時候呼叫即可,並且永遠只需要呼叫一次。

void nvic_configuration(void)

巢狀向量中斷控制器(NVIC)詳解

在平時的工作中,我們經常會遇到這樣的情況 有人來找你做一些事情,而且這些事情要比手頭的工作更重要。那現在就需要停下手中的工作,先去完成突然到來的這部分工作。這樣的情況也類似於圖論中的關鍵路徑中,突然在當前事件之前插入了乙個新的事件,那我們不得不先去完成之前的那個任務,才能繼續完成後面的工作。上述情況...

STM32 巢狀向量中斷控制器NVIC學習

stm32中有兩個優先順序的概念 搶占式優先順序和響應優先順序 也叫副優先順序 他們的特性是 1 高搶占式優先順序的中斷可以巢狀在低搶占式優先順序的中斷中 即低搶占式優先順序的中斷可以被高搶占式優先順序的中斷打斷 2 當兩個中斷源的搶占式優先順序相同時,這兩個中斷將沒有巢狀關係,當乙個中斷到來後,如...

STM32 NVIC巢狀向量中斷控制器函式分析

中斷管理函式 cm3核心支援256個中斷,其中包含了16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定。但stm32並沒有使用cm3核心的全部東西,而是只用了它的一部分。stm32有76個中斷,包括16個核心中斷和60個可遮蔽中斷,具有16級可程式設計的中斷優先順序。而我們常用的...