NVIC中斷優先順序分組

2021-08-20 05:24:42 字數 1162 閱讀 2527

cm7核心支援256個中斷,其中包含了16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定。

f7並沒有是由cm4核心的全部東西,而是只用了它的一部分。

stm32f76x總共118個中斷,10個核心中斷,108個可遮蔽中斷。stm32具有16級可程式設計的中斷優先順序,而我們常用的就是這些可遮蔽中斷。 

???幾十個中斷,怎麼管理?

首先,對stm32中斷進行分組,組0~4,同時,對每個中斷設定乙個搶占優先順序和乙個響應優先順序值。

分組配置是在暫存器scb->aircr中配置的。

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

1、高優先順序的搶占優先順序是可以打斷正在進行的搶占優先順序中斷的。

2、搶占優先順序相同的中斷,高響應由縣級不可以打斷低響應優先順序的中斷。

3、搶占優先順序相同的中斷,當兩個中斷同時發生的情況下,哪個顯影優先順序高,哪個先執行。

4、如果兩個終端的搶占優先順序和響應優先順序都是一樣的,則看哪個中斷先發生就先執行。

特別說明:一般情況下,系統**執行過程中,只設定一次中斷優先順序分組,比如分組2,設定好分組之後一般不會再改變分組。隨意改變分組會導致終端管理混亂,程式出現意想不到的執行結果。

中斷優先順序分組函式:

void hal_nvic_setprioritygrouping(uint32_tprioritygroup);

asset_param(is_nvic_priority_group(prioritygroup));

nvic_setprioritygrouping(prioritygroup);

中斷優先順序設定:分組設定好之後,設定單個中斷的搶占優先順序和響應優先順序。

中斷優先順序控制的暫存器組 ip[240]

全稱是interrupt priority registers

240個8位暫存器,每個中斷使用乙個暫存器來確定優先順序。每個ip暫存器的高4位用來設定搶占和響應優先順序(根據分組),低4位沒有用到。 void hal_nvic_setpriority(irqn_type irqn,uint32_t 

preemptpriority,uint32_t subpriority);

*中斷優先順序設定步驟:

1、系統執行後在hal_init函式中設定優先順序分組,呼叫函式;

2、針對每個中斷,何止對應的搶先優先順序和響應優先順序;

3、使能中斷通道。

NVIC中斷優先順序管理

1.stm32的中斷分組 每個中斷設定乙個搶占優先順序和乙個響應優先順序值,分組配置是在暫存器scb aircr中配置。注意 一般情況下,系統 執行過程中,只設定一次中斷優先順序分組 數值越小所代表的優先順序就越高。1 高優先順序的搶占優先順序可以打斷正在進行的低搶占優先順序中斷的。2 搶占優先順序...

NVIC中斷優先順序管理

1 參考資料 stm32f1開發指南 庫函式版本 4.5 小節 中斷優先順序分組管理 stm32中文參考手冊v10 第9章 中斷和事件 2 nvic中斷優先順序分組 cm3核心支援256個中斷,其中包含了16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定。stm32並沒有使用cm...

NVIC中斷優先順序管理

首先,對 stm32 中斷進行分組,組 0 4。同時,對每個中斷設定乙個搶占優先順序和乙個響應優先順序值。分組配置是在暫存器 scb aircr 中配置 組 aircr 10 8 ip bit 7 4 分配情況 分配結果 0 111 0 4 0位搶占優先順序,4位響應優先順序 1 110 1 3 1...