1.中斷的基本概念
1.1處理器中的中斷:在處理器中,CPU正在執(zhí)行某一段代碼時遇到內(nèi)部或者外部的緊急事件需要處理,暫停當前執(zhí)行的代碼、轉(zhuǎn)而去處理緊急事件,處理完畢后繼續(xù)執(zhí)行之前的代碼。
1.2中斷的意義:中斷可以提高CPU運行的效率、避免對某一事件狀態(tài)的不斷輪詢損耗CPU資源,同時可以對緊急事件做實時處理;中斷在計算機多任務處理中尤為重要(如:uCOS、FreeRTOS),可以實現(xiàn)多線程、多任務的處理;
1.3中斷處理的過程:進入中斷之前處理器將自動保存現(xiàn)場到堆棧中(現(xiàn)場:程勛運行的當前位置、變量的值等),根據(jù)中斷向量表中的地址運行對應的中斷服務程序,在退出中斷前處理器會將之前保存在堆棧中的現(xiàn)場進行恢復(稱之為出棧)、完成現(xiàn)場恢復后程序?qū)⒗^續(xù)從原來的位置運行
備注:在處理中斷服務程序的過程、以及出棧的過程都是可以被其他中斷打斷的,這種稱為中斷的嵌套
中斷處理過程
1.4STM32F4中斷體系結(jié)構(gòu)
中斷體系結(jié)構(gòu)
2.NVIC(嵌套向量控制器)
2.1中斷管理
Cortex-M4內(nèi)核支持256個中斷(16個內(nèi)核中斷、250個外部中斷)、具有256級的可編程中斷優(yōu)先級設(shè)置,STM32F407中使用了其中部分中斷,10個內(nèi)核中斷、82個外部中斷。
Cortex-M4處理器中,每一個外部中斷都可以被使能、禁止、掛起、清除
NVIC寄存器列表
2.2支持異常及中斷向量化處理
當異常或中斷發(fā)生時,處理器會把PC設(shè)置為一個特定的地址,該地址就是異常向量,每一類異常源都對應一個特定的入口地址,這些地址按照優(yōu)先級排列后就組成了一張異常向量表。(中斷是內(nèi)核外部發(fā)送的如:串口等,異常是內(nèi)核內(nèi)部發(fā)生的)
向量化處理中斷的好處:從發(fā)生異常到異常處理的中間的時間被縮減;采用向量表處理異常,處理器會從存儲器的向量表中自動定位到異常對應的程序入口。
中斷向量表
中斷優(yōu)先級
3.中斷優(yōu)先級
3.1STM32F4中斷的優(yōu)先級:3個固定優(yōu)先級、都是負值不能改變;16個可編程優(yōu)先級、4個bit位表示(中斷優(yōu)先級寄存器NVIC_IPRX,F407使用高4位配置);優(yōu)先級越小優(yōu)先級越高;
3.2STM32F4中斷優(yōu)先級分組:NVIC_IPR中的4位又分為搶占優(yōu)先級、響應優(yōu)先級
而這兩個優(yōu)先級各占幾位是根據(jù)SCB->AIRCR中的中斷分組來設(shè)置決定的,STM32F4將中斷分為5組0-4
3.3中斷優(yōu)先級總結(jié):
搶占優(yōu)先級級別高于響應優(yōu)先級,數(shù)值越小優(yōu)先級越高;
同一時刻發(fā)生的中斷,優(yōu)先處理優(yōu)先級高的中斷;
搶占優(yōu)先級高的任務可以打斷搶占優(yōu)先級低的任務,若搶占優(yōu)先級相同、響應優(yōu)先級高的不可以打斷響應優(yōu)先級低的任務;
若搶占優(yōu)先級、響應優(yōu)先級相同則看哪個中斷先發(fā)生、則先執(zhí)行,如果同時發(fā)生則處理編號較小的任務
中斷優(yōu)先級分組
-
處理器
+關(guān)注
關(guān)注
68文章
19329瀏覽量
230134 -
cpu
+關(guān)注
關(guān)注
68文章
10873瀏覽量
212084 -
STM32
+關(guān)注
關(guān)注
2270文章
10906瀏覽量
356455 -
中斷
+關(guān)注
關(guān)注
5文章
899瀏覽量
41538 -
中斷系統(tǒng)
+關(guān)注
關(guān)注
1文章
96瀏覽量
61026
發(fā)布評論請先 登錄
相關(guān)推薦
評論