stm32 韌體庫之 中斷

2021-07-25 03:37:28 字數 2151 閱讀 9164

stm32 可以支援的 68 個外部中斷通道,已經固定的分配給相應的外部裝置。每個中斷通道都具備自己的中斷優先順序控制位元組 pri_n(8 位,但在 stm32 中只使用 4 位,高 4 位有效)共可以有 5 種分組:

第 0 組方式:所有 4 位用於響應中斷

bit7 bit6 bit5 bit4 bit3 bit2 bit1  bit0

第 1 組方式:最高 1 位用於搶占式優先順序,較低 3 位用於響應式中斷

bit7

bit6 bit5 bit4 bit3 bit2 bit1  bit0

第 2 組方式:最高 1 位用於搶占式優先順序,較低 3 位用於響應式中斷

bit7 bit6

bit5 bit4 bit3 bit2 bit1  bit0

第 3 組方式:最高 1 位用於搶占式優先順序,較低 3 位用於響應式中斷

bit7 bit6 bit5

bit4 bit3 bit2 bit1  bit0

第 4 組方式:所有 4 位用於響應式中斷

bit7 bit6 bit5 bit4

bit3 bit2 bit1  bit0

nvic_prioritygroupconfig(nvic_prioritygroup_2);	      //中斷分組2

nvic_initstructure.nvic_irqchannel = usart1_irqn; //usart1接收中斷

nvic_initstructure.nvic_irqchannelpreemptionpriority = 0; //先佔優先順序0

nvic_initstructure.nvic_irqchannelsubpriority = 0; //次佔優先順序

nvic_initstructure.nvic_irqchannelcmd = enable;

nvic_init(&nvic_initstructure);

對於整個程式,需要先設定乙個中斷分組,設定函式如下:

void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup)
引數的取值如下:

nvic_prioritygroup_0

nvic_prioritygroup_1

nvic_prioritygroup_2

nvic_prioritygroup_3

nvic_prioritygroup_4

然後例項化乙個 nvic 結構體體:

typedef struct

nvic_inittypedef;

a. 只能高搶先優先順序(數字小的)的中斷打斷低搶先優先順序的中斷服務,構成中斷巢狀。

b. 當 2(n)個相同搶先優先順序的中斷出現,它們之間不能構成中斷巢狀,但 stm32 首先響應子優先順序高的中斷。

c. 當 2(n)個相同搶先優先順序和相同子優先順序的中斷出現,stm32 首先響應中斷通道所對應的中斷向量位址低的那個中斷。

d. 0 號搶先優先順序的中斷,可以打斷任何中斷搶先優先順序為非 0 號的中斷;1 號搶先優先順序的中斷,可以打斷任何中斷搶先優先順序為 2、3、4 號的中斷;……;構成巢狀

e. 如果兩個中斷的搶先優先順序相同,誰先出現,就先響應誰,不構成巢狀。如果一起出現(或掛在那裡等待),就看它們 2 個誰的子優先順序高了,如果子優先順序也相同,就看它們的中斷向量位置了。位址越低,中斷優先順序越高

根據 nvic 結構體初始化 nvic 外設:

void nvic_init(nvic_inittypedef* nvic_initstruct)

stm32之中斷系統

前言 這一節以及後面的定時器部分都是學習所有的微控制器時的最重要的部分,我也花了很多時間去理解手冊和程式,我爭取盡量全面並且細緻的記錄我的體會。這裡就省略了,相信你學過微控制器就會懂。nvic的中文意思是巢狀向量中斷控制器,控制著中斷的相關功能 其中包括中斷源 搶占優先順序 響應優先順序 中斷的使能...

STM32基礎之中斷

stm32中斷很強大,stm32中斷可以巢狀,任何外設都可以產生中斷,其中中斷和異常是等價的.中斷,在微控制器中占有非常重要的地位。預設地從上向下執行,遇到條件或者其他語句,會按照指定的地方跳轉。而在微控制器執行 的過程中,難免會有一些突發的情況需要處理,這樣就會打斷當前的 待處理完突發情況之後,程...

STM32之中斷和異常

1 stm32的所有gpio都可以用作外部中斷源的輸入端,用來捕捉外部訊號,可以配置為下降沿中斷 上公升沿中斷和上公升下降沿中斷三種模式。2 cortex核心具有很強大的異常響應系統,它把能夠打斷當前 執行流程的時間分為異常 exception 和中斷 interrupt 並把它們用乙個表管理起來,...