stm32的中斷優先順序介紹

2021-08-21 03:38:48 字數 1550 閱讀 1806

一、搶占優先順序和響應優先順序

stm32 的中斷向量具有兩個屬性,乙個為搶占屬性,另乙個為響應屬性,其屬性編號

越小,表明它的優先級別越高。

搶占,是指打斷其他中斷的屬性,即因為具有這個屬性會出現巢狀中斷(在執行中斷

服務函式a 的過程中被中斷b 打斷,執行完中斷服務函式b 再繼續執行中斷服務函式

a),搶占屬性由nvic_irqchannelpreemptionpriority 的引數配置。

而響應屬性則應用在搶占屬性相同的情況下,當兩個中斷向量的搶占優先順序相同時,

如果兩個中斷同時到達, 則先處理響應優先順序高的中斷, 響應屬性由

nvic_irqchannelsubpriority 引數配置。例如,現在有三個中斷向量,如下表。

若核心正在執行c 的中斷服務函式,則它能被搶占優先順序更高的中斷a 打斷,由於b

和c 的搶占優先順序相同,所以c 不能被b 打斷。但如果b 和c 中斷是同時到達的,核心

就會首先響應響應優先級別更高的b 中斷。

二、nvic 的優先順序組

在配置優先順序的時候,還要注意乙個很重要的問題,即中斷種類的數量。nvic 只可

以配置16 種中斷向量的優先順序,也就是說,搶占優先順序和響應優先順序的數量由乙個4 位的

數字來決定,把這個4 位數字的位數分配成搶占優先順序部分和響應優先順序部分。有5 組分

配方式:

 第0 組: 所有4 位用來配置響應優先順序。即16 種中斷向量具有都不相同的響應優先

級。  第1 組:最高1 位用來配置搶占優先順序,低3 位用來配置響應優先順序。表示有2 種

級別的搶占優先順序(0 級,1 級),有8 種響應優先順序,即在16 種中斷向量之中,有

8 種中斷,其搶占優先順序都為0 級,而它們的響應優先順序分別為0~7,其餘8 種中斷向

量的搶占優先順序則都為1 級,響應優先級別分別為0~7。

 第2 組:2 位用來配置搶占優先順序,2 位用來配置響應優先順序。即4 種搶占優先

級,4 種響應優先順序。

 第3 組:高3 位用來配置搶占優先順序,最低1 位用來配置響應優先順序。即有8 種搶占

優先順序,2 種響應2 優先順序。

 第4組:所有4 位用來配置搶占優先順序,即nvic 配置的16 種中斷向量都是只有

搶占屬性,沒有響應屬性。

要配置這些優先順序組,可以採用庫函式nvic_prioritygroupconfi g(),可輸入的引數為nvic_prioritygroup_0 ~ nvic_prioritygroup_4,分別為以上介紹的5 種分配組。

於是,有讀者覺得疑惑了,如此強大的stm32,所有gpio都能夠配置成外部中斷,usart、adc 等外設也有中斷,而nvic 只能配置16 種中斷向量,那麼在某個工程中使用超過16 個中斷怎麼辦呢?注意nvic 能配置的是16 種中斷向量,而不是16 個,當工程中有超過16 個中斷向量時,必然有兩個以上的中斷向量是使用相同的中斷種類,而具有相同中斷種類的中斷向量不能互相巢狀。

STM32之NVIC中斷優先順序的介紹

2018 4 9 stm32 1.說在前面 1.中斷 中斷就是cpu在處理一件事的時候,遇到緊急情況,所以就去響應而處理另外一件事 粗略介紹 2.對於51而言,只有5個中斷源,所以難度不算太大,但是,對於cm3核心支援256個中斷 16個核心中斷加240個內部中斷 stm32f103而言,有著60會...

stm32中斷優先順序

cm3 核心支援 256 個中斷,stm32 並沒有使用 cm3 核心的全部只用了它的一部分。stm32 有 84 個中斷,包括 16 個核心中斷和 68 個可遮蔽中斷,stm32f103 系列上面只有 60 個 107 系列才有 68 個 下面針對stm32f103 系列說明。與 nvic 相關的...

STM32的 NVIC中斷優先順序分組

cm3 核心支援 256 個中斷,其中包含了 16 個核心中斷和 240 個外部中斷,並且具有 256 級的可程式設計中斷設定。stm32 並沒有使用 cm3 核心的全部東西,而是只用了它的一部分。stm32 有 84 個中斷,包括 16 個核心中斷和 68 個可遮蔽中斷,具有 16 級可程式設計的...