天天看點

STM32_中斷系統_概述

作者:秋天滴風

1.中斷的基本概念

2.NVIC(嵌套向量控制器)、中斷及異常向量表

3.中斷優先級

---

1.中斷的基本概念

1.1處理器中的中斷:在處理器中,CPU正在執行某一段代碼時遇到内部或者外部的緊急事件需要處理,暫停目前執行的代碼、轉而去處理緊急事件,處理完畢後繼續執行之前的代碼。

1.2中斷的意義:中斷可以提高CPU運作的效率、避免對某一事件狀态的不斷輪詢損耗CPU資源,同時可以對緊急事件做實時處理;中斷在計算機多任務進行中尤為重要(如:uCOS、FreeRTOS),可以實作多線程、多任務的處理;

1.3中斷處理的過程:進入中斷之前處理器将自動儲存現場到堆棧中(現場:程勳運作的目前位置、變量的值等),根據中斷向量表中的位址運作對應的中斷服務程式,在退出中斷前處理器會将之前儲存在堆棧中的現場進行恢複(稱之為出棧)、完成現場恢複後程式将繼續從原來的位置運作

備注:在進行中斷服務程式的過程、以及出棧的過程都是可以被其他中斷打斷的,這種稱為中斷的嵌套

STM32_中斷系統_概述

中斷處理過程

1.4STM32F4中斷體系結構

STM32_中斷系統_概述

中斷體系結構

2.NVIC(嵌套向量控制器)

2.1中斷管理

Cortex-M4核心支援256個中斷(16個核心中斷、250個外部中斷)、具有256級的可程式設計中斷優先級設定,STM32F407中使用了其中部分中斷,10個核心中斷、82個外部中斷。

Cortex-M4處理器中,每一個外部中斷都可以被使能、禁止、挂起、清除

STM32_中斷系統_概述

NVIC寄存器清單

2.2支援異常及中斷向量化處理

當異常或中斷發生時,處理器會把PC設定為一個特定的位址,該位址就是異常向量,每一類異常源都對應一個特定的入口位址,這些位址按照優先級排列後就組成了一張異常向量表。(中斷是核心外部發送的如:序列槽等,異常是核心内部發生的)

向量化進行中斷的好處:從發生異常到異常處理的中間的時間被縮減;采用向量表處理異常,處理器會從存儲器的向量表中自動定位到異常對應的程式入口。

STM32_中斷系統_概述

中斷向量表

STM32_中斷系統_概述

中斷優先級

3.中斷優先級

3.1STM32F4中斷的優先級:3個固定優先級、都是負值不能改變;16個可程式設計優先級、4個bit位表示(中斷優先級寄存器NVIC_IPRX,F407使用高4位配置);優先級越小優先級越高;

3.2STM32F4中斷優先級分組:NVIC_IPR中的4位又分為搶占優先級、響應優先級

而這兩個優先級各占幾位是根據SCB->AIRCR中的中斷分組來設定決定的,STM32F4将中斷分為5組0-4

3.3中斷優先級總結:

搶占優先級級别高于響應優先級,數值越小優先級越高;

同一時刻發生的中斷,優先處理優先級高的中斷;

搶占優先級高的任務可以打斷搶占優先級低的任務,若搶占優先級相同、響應優先級高的不可以打斷響應優先級低的任務;

若搶占優先級、響應優先級相同則看哪個中斷先發生、則先執行,如果同時發生則處理編号較小的任務

STM32_中斷系統_概述

中斷優先級分組