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中斷優先級總結:
搶占優先級級別高于響應優先級,數值越小優先級越高;
同一時刻發生的中斷,優先處理優先級高的中斷;
搶占優先級高的任務可以打斷搶占優先級低的任務,若搶占優先級相同、響應優先級高的不可以打斷響應優先級低的任務;
若搶占優先級、響應優先級相同則看哪個中斷先發生、則先執行,如果同時發生則處理編號較小的任務
中斷優先級分組
-
處理器
+關注
關注
68文章
19178瀏覽量
229200 -
cpu
+關注
關注
68文章
10829瀏覽量
211193 -
STM32
+關注
關注
2266文章
10876瀏覽量
354926 -
中斷
+關注
關注
5文章
895瀏覽量
41401 -
中斷系統
+關注
關注
1文章
96瀏覽量
61008
發布評論請先 登錄
相關推薦
評論