STM32的 NVIC中斷優先順序分組

2021-10-09 01:47:39 字數 1356 閱讀 8884

cm3 核心支援 256 個中斷,其中包含了 16 個核心中斷和 240 個外部中斷,並且具有 256

級的可程式設計中斷設定。

stm32 並沒有使用 cm3 核心的全部東西,而是只用了它的一部分。

stm32 有 84 個中斷,包括 16 個核心中斷和 68 個可遮蔽中斷,具有 16 級可程式設計的中斷優先順序。

我們常用的就是這 68 個可遮蔽中斷, 但是 stm32 的 68 個可遮蔽中斷,在 stm32f103 系列

上面,又只有 60 個(在 107 系列才有 68 個)。

但是中斷太多了,我們需要乙個管理方法來管理。首先,對stm32中斷進行分組,組0~4。同時,對每個中斷設定乙個搶占優先順序和乙個響應優先順序值。

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

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

②搶占優先順序相同的中斷,高優先順序的響應優先順序不可以打斷低響應優先順序的中斷。

④搶占優先順序相同的中斷,當兩個中斷同時發生的情況下,哪個響應優先順序高,哪個先執行。

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

nvic_initstructure.nvic_irqchannel = usart1_irqn;

//通道,在stm32f10x.**件裡面

nvic_initstructure.nvic_irqchannelpreemptionpriority=3;

//搶占優先順序3

nvic_initstructure.nvic_irqchannelsubpriority =3;

//子優先順序(響應優先順序)3

nvic_initstructure.nvic_irqchannelcmd = enable;

//irq通道使能

nvic_init

(&nvic_initstructure)

;//根據制定的引數初始化nvic暫存器

nvic_prioritygroupconfig

(nvic_prioritygroup_2)

;//設定nvic中斷分組2:2位搶占優先順序,2位響應優先順序

//該段放在主函式初始化位置

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

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

STM32NVIC中斷優先順序

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

STM32 NVIC 中斷優先順序管理

這裡以stm32f4系列為例。先簡單介紹下stm32f4的中斷分組,stm32f4將中斷分為5個組,組0 4.該分組的設定是有scb aircr暫存器的bit 10 8來定義的。具體分配關係如下表 假設說組設定為2,那麼此時每個中斷的中斷優先暫存器的高四位中的最高兩位是搶占優先順序,低兩位是響應優先...