STM32F103系列NVIC中斷優先順序分組講解

2021-09-22 21:25:19 字數 1261 閱讀 8324

一、簡介

cm3核心支援256個中斷,16個核心中斷,240個外部中斷,並且擁有256級的可程式設計中斷設定。

但是stm32只用到了cm3核心的一部分,stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計中斷優先順序。

stm32f103系列只有60個可遮蔽中斷。

二、中斷管理

1.對stm32進行中斷分組,組0-4,同時對每個中斷設定乙個搶占優先順序和乙個響應優先順序。組分配好後搶占位和響應位就已經確定。

組bit[7-4](共4位)

分配結果

0:40位搶占優先順序,4位響應優先順序

1:31位搶占優先順序,3位響應優先順序

2:22位搶占優先順序,2位響應優先順序

3:13位搶占優先順序,1位響應優先順序

4:04位搶占優先順序,0位響應優先順序

2.搶占優先順序和響應優先順序的區別

(1)高優先順序的搶占優先順序可以打斷低搶占優先順序的中斷。

(2)搶占優先順序相同的中斷,高響應優先順序不能打斷低響應優先順序。

(3)搶占優先順序相同的中斷,當中斷同時發生時,響應級高的先執行。

(4)搶占和響應優先順序都一樣則哪個中斷先發生,則執行哪個。

注意:一般優先順序分組只設定一次,否則會出現中斷管理混亂。

3.優先順序配置

nvic_prioritygroupconfig(nvic_prioritygroup_2);//只設定一次

//在引腳配置中設定

nvic_inittypedef nvic_initstructure;

nvic_initstructure.nvic_irqchannel = usart1_irqn;       //串列埠1

nvic_initstructure.nvic_irqchannelpreemptionpriority=3 ;//搶占優先順序

nvic_initstructure.nvic_irqchannelsubpriority = 3;        //響應優先順序

nvic_initstructure.nvic_irqchannelcmd = enable;            //使能通道

nvic_init(&nvic_initstructure);    //初始化

4.中斷優先順序的掛起解掛,檢視當前啟用狀態

nvic_getpendingirq(irqn_type irqn)

nvic_setpendingirq(irqn_type irqn)

nvic_clearpendingirq(irqn_type irqn)

STM32F103系列驅動舵機

舵機的控制一般需要乙個20ms左右的時基脈衝,該脈衝的高電平部分一般為0.5ms 2.5ms範圍內的角度控制脈衝部分。以180度角度伺服為例,那麼對應的控制關係是這樣的 0.5ms 0度 1.0ms 45度 1.5ms 90度 2.0ms 135度 2.5ms 180度 由公式 定時器溢位時間 s ...

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32F103啟動檔案

目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...