STM32單片機(jī)----外部中斷EXTI學(xué)習(xí)
可屏蔽中斷和不可屏蔽中斷:
按照是否可以被屏蔽,可將中斷分為兩大類:不可屏蔽中斷(又叫非屏蔽中斷)和可屏蔽中斷。不可屏蔽中斷源一旦提出請求,CPU必須無條件響應(yīng),而對可屏蔽中斷源的請求,CPU可以響應(yīng),也可以不響應(yīng)。CPU一般設(shè)置兩根中斷請求輸入線:可屏蔽中斷請求INTR(InterruptRequire)和不可屏蔽中斷請求NMI(NonMaskableInterrupt)。對于可屏蔽中斷,除了受本身的屏蔽位控制外,還都要受一個(gè)總的控制,即CPU標(biāo)志寄存器中的中斷允許標(biāo)志位IF(IinterruptFlag)的控制,IF位為1,可以得到CPU的響應(yīng),否則,得不到響應(yīng)。
GPIO口與EXTI外中斷的映像圖:
EXTI線16連接到PVD輸出,EXTI線17連接到RTC鬧鐘事件,EXTI線18連接到USB喚醒事件。
以上為EXTI外部中斷的各寄存器,在直接操作寄存器編程時(shí)需要了解,了解怎樣配置EXTI寄存器。
NVIC的概念:
NVIC,中文名嵌套中斷向量控制器,是Cortex-M3系列控制器內(nèi)部獨(dú)有集成單元,與CPU結(jié)合緊密,降低中斷延遲時(shí)間并且能更加高效處理后續(xù)中斷。舉個(gè)例子,比如火車站買票,那些火車站的規(guī)章制度就是NVIC,規(guī)定學(xué)生和軍人有比一般人更高優(yōu)先級(jí),它們則給你單獨(dú)安排個(gè)窗口,同學(xué)與同學(xué)之間也有區(qū)別,那就是你也得排隊(duì),也就是你的組別(搶斷優(yōu)先級(jí))和你的排隊(duì)序號(hào)(響應(yīng)優(yōu)先級(jí))決定你何時(shí)能買到票。搶斷優(yōu)先級(jí),顧名思義,能再別人中斷是搶占別人中斷,實(shí)現(xiàn)中斷嵌套。響應(yīng)優(yōu)先級(jí)則只能排隊(duì),不能搶在前面插別人的對,即不能嵌套。STM32中指定優(yōu)先級(jí)的寄存器為4位,其定義如下:第0組:所有4位用于指定響應(yīng)優(yōu)先級(jí)第1組:最高1位用于指定搶占式優(yōu)先級(jí),最低3位用于指定響應(yīng)優(yōu)先級(jí)第2組:最高2位用于指定搶占式優(yōu)先級(jí),最低2位用于指定響應(yīng)優(yōu)先級(jí)第3組:最高3位用于指定搶占式優(yōu)先級(jí),最低1位用于指定響應(yīng)優(yōu)先級(jí)第4組:所有4位用于指定搶占式優(yōu)先級(jí)以上定義也稱作中斷優(yōu)先級(jí)分組,相關(guān)內(nèi)容在STM32固件庫的misc.h文件中有詳細(xì)定義。STM32--EXTI外部中斷的編程步驟:可分為2大步,第1步初始化EXTI,第2步初始化NVIC.1.配置EXTI的外部中斷源。2.定義結(jié)構(gòu)體EXTI_InitTypeDef的結(jié)構(gòu)體類型。配置EXTI的中斷線、配置EXTI的模式(中斷模式和事件模式)、配置EXTI的觸發(fā)方式(上升沿,下降沿,上升下降沿觸發(fā))、配置使能EXTI的外部中斷線。3.初始化EXTI的參數(shù)設(shè)置(EXTI_Init)4.配置NVIC的優(yōu)先級(jí)組(共有5組,分別是NVICNVIC_PriorityGroup_0~NVIC_PriorityGroup_4)5.定義結(jié)構(gòu)體NVIC_InitTypeDef的結(jié)構(gòu)體類型。配置NVIC的向量通道、配置搶占優(yōu)先級(jí)、配置響應(yīng)優(yōu)先級(jí)、使能NVIC6.初始化NVIC的參數(shù)設(shè)置(NVIC_Init)。