STM32 NVIC 中斷優先順序管理

2021-07-25 13:01:31 字數 1746 閱讀 2050

這裡以stm32f4系列為例。

先簡單介紹下stm32f4的中斷分組,stm32f4將中斷分為5個組,組0-4.該分組的設定是有scb->aircr暫存器的bit 10~8來定義的。具體分配關係如下表

假設說組設定為2,那麼此時每個中斷的中斷優先暫存器的高四位中的最高兩位是搶占優先順序,低兩位是響應優先順序。在每個中斷中,你可以設定搶占優先順序為0-4,響應優先順序為0-4。需要注意的是,搶占優先順序的級別高於響應優先順序,而且數值越小代表的優先順序越高。另外,在優先順序相同的情況下,則遵循先發生先執行的規則。

舉個例子,中斷1的搶占優先順序為2,響應優先順序為1,中斷2的搶占優先順序為2,響應優先順序為0,中斷3的搶占優先順序為3,響應優先順序為0,則3個中斷的優先順序順序為

2〉1〉3。

這裡還有乙個注意點,高搶占級別的中斷時可以打斷低搶占級別的中斷的,但在相同搶占優先的情況下,高響應級別的中斷是不能打斷低響應級別的中斷。即:中斷1,2可以打斷中斷3,但是中斷1,2不能相互打斷。

接下來我們介紹如何使用庫函式實現以上中斷分組設定以及中斷優先順序管理。

首先是中斷優先順序分組函式

void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);

這個函式的作用就是通過設定scb-〉aircr暫存器來設定中斷優先順序分組。例如:

nvic_prioritygroupconfig(nvic_prioritygroup_2);

這樣,就確定為「2位搶占優先順序,2位響應優先順序」。

設定好系統中斷分組,接下來要設定每個中斷點的搶占優先順序和響應優先順序。首先由介紹中斷初始化函式

void nvic_init(nvic_inittypedef* nvic_initstruct)

這裡,nvic_inittypedef是乙個結構體,其定義如下:

typedef struct

nvic_inittypedef;

nvic_irqchannel:定義初始化的是哪個中斷,這個我們可以在 stm32f10x.h 中找到每個中斷對應的名字。例如 usart1_irqn。

nvic_irqchannelpreemptionpriority:定義這個中斷的搶占優先級別。

nvic_irqchannelsubpriority:定義這個中斷的子優先級別,也叫響應優先順序。

nvic_irqchannelcmd

:該中斷通道是否使能。

比如我們要使能串列埠1的中斷,同時設定搶占優先順序為1,響應優先順序為2,初始化方法如下:

nvic_inittypedef nvic_initstructure;;

nvic_initstructure.nvic_irqchannel = usart1_irqn;//

串列埠 1

中斷nvic_initstructure.nvic_irqchannelpreemptionpriority=1 ;//

搶占優先順序為

1nvic_initstructure.nvic_irqchannelsubpriority = 2;//

響應優先順序位

2nvic_initstructure.nvic_irqchannelcmd = enable; //irq

通道使能

nvic_init(&nvic_initstructure); //

根據上面指定的引數初始化

nvic

暫存器

STM32NVIC中斷優先順序

cm3核心共支援256個中斷,其中包含了16個核心中斷,240個外部中斷,並且具有256級可程式設計中斷設定。但是stm32並沒有使用cm3核心全部的東西,stm32有84個中斷,其中包含了16個核心中斷,68個可遮蔽中斷,具有16級可變陳的中斷優先順序。typedef struct nvic ty...

STM32 NVIC中斷優先順序的理解

我們在學習stm32中串列埠啊,定時器啊等等,都會遇到設定相應的優先順序。下面來揭下這個神秘的面具。我們知道優先順序有兩種 搶占式優先順序preemptionpriority 和 子優先順序 響應優先順序 subpriority。具有高優先順序的中斷可以在低優先順序正在執行時打斷其執行,然後執行自己...

stm32 NVIC中段優先順序

nvic stm32f103有60個遮蔽中斷 管理辦法 首先對中斷進行分組0 4,在每個中斷設定乙個搶占優先順序和乙個響應優先順序值。在scb aircr中配置 在一般的情況下是設定的是2組,由兩個搶占優先順序和兩個響應優先順序分配。搶占優先順序和響應優先順序區別 1 搶占優先順序高的可以打斷搶占優...