一、搶占優先順序和響應優先順序
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 級可程式設計的...