1.中斷的基本概念
2.NVIC(嵌套向量控制器)、中斷及異常向量表
3.中斷優先級
---
1.中斷的基本概念
1.1處理器中的中斷:在處理器中,CPU正在執行某一段代碼時遇到内部或者外部的緊急事件需要處理,暫停目前執行的代碼、轉而去處理緊急事件,處理完畢後繼續執行之前的代碼。
1.2中斷的意義:中斷可以提高CPU運作的效率、避免對某一事件狀态的不斷輪詢損耗CPU資源,同時可以對緊急事件做實時處理;中斷在計算機多任務進行中尤為重要(如:uCOS、FreeRTOS),可以實作多線程、多任務的處理;
1.3中斷處理的過程:進入中斷之前處理器将自動儲存現場到堆棧中(現場:程勳運作的目前位置、變量的值等),根據中斷向量表中的位址運作對應的中斷服務程式,在退出中斷前處理器會将之前儲存在堆棧中的現場進行恢複(稱之為出棧)、完成現場恢複後程式将繼續從原來的位置運作
備注:在進行中斷服務程式的過程、以及出棧的過程都是可以被其他中斷打斷的,這種稱為中斷的嵌套
中斷處理過程
1.4STM32F4中斷體系結構
中斷體系結構
2.NVIC(嵌套向量控制器)
2.1中斷管理
Cortex-M4核心支援256個中斷(16個核心中斷、250個外部中斷)、具有256級的可程式設計中斷優先級設定,STM32F407中使用了其中部分中斷,10個核心中斷、82個外部中斷。
Cortex-M4處理器中,每一個外部中斷都可以被使能、禁止、挂起、清除
NVIC寄存器清單
2.2支援異常及中斷向量化處理
當異常或中斷發生時,處理器會把PC設定為一個特定的位址,該位址就是異常向量,每一類異常源都對應一個特定的入口位址,這些位址按照優先級排列後就組成了一張異常向量表。(中斷是核心外部發送的如:序列槽等,異常是核心内部發生的)
向量化進行中斷的好處:從發生異常到異常處理的中間的時間被縮減;采用向量表處理異常,處理器會從存儲器的向量表中自動定位到異常對應的程式入口。
中斷向量表
中斷優先級
3.中斷優先級
3.1STM32F4中斷的優先級:3個固定優先級、都是負值不能改變;16個可程式設計優先級、4個bit位表示(中斷優先級寄存器NVIC_IPRX,F407使用高4位配置);優先級越小優先級越高;
3.2STM32F4中斷優先級分組:NVIC_IPR中的4位又分為搶占優先級、響應優先級
而這兩個優先級各占幾位是根據SCB->AIRCR中的中斷分組來設定決定的,STM32F4将中斷分為5組0-4
3.3中斷優先級總結:
搶占優先級級别高于響應優先級,數值越小優先級越高;
同一時刻發生的中斷,優先處理優先級高的中斷;
搶占優先級高的任務可以打斷搶占優先級低的任務,若搶占優先級相同、響應優先級高的不可以打斷響應優先級低的任務;
若搶占優先級、響應優先級相同則看哪個中斷先發生、則先執行,如果同時發生則處理編号較小的任務
中斷優先級分組