01.
嵌套向量中斷控制器(NVIC)
NVIC的全稱是Nested vectoredinterrupt controller,即嵌套向量中斷控制器。
Cortex-M0和Cortex-M4提供了“嵌套向量中斷控制器(NVIC)”用以管理中斷事件。其中M0和M4提供的中斷優(yōu)先級及個數(shù)不一致,為了讓您更加簡單的使用這一功能,下面小編將以SWM190為例,給大家展示如何使用SWM系列產(chǎn)品的NVIC。
SWM190系列32位MCU(以下簡稱SWM190)內(nèi)嵌ARM CortexTM-M0內(nèi)核,其中斷優(yōu)先級分為4級,可通過中斷優(yōu)先級配置寄存器(IRQn)進行配置。
特性
l 4位中斷優(yōu)先級
l 支持嵌套和向量中斷
l 硬件完成現(xiàn)場的保存和恢復(fù)
l 動態(tài)改變優(yōu)先級
l 確定的中斷時間
l 可屏蔽中斷
在中斷發(fā)生時,內(nèi)核比較中斷優(yōu)先級,并自動獲取入口地址,并保護現(xiàn)場,將指定寄存器中數(shù)據(jù)入棧,此過程無需軟件參與。中斷服務(wù)程序結(jié)束后,由硬件完成出棧工作。同時支持“尾鏈”模式及“遲滯”模式,有效的優(yōu)化了中斷發(fā)生及背對背中斷的執(zhí)行效率,提高了中斷的實時性。嵌套向量中斷控制器管理著包括核異常等中斷。關(guān)于更多的異常和NVIC編程的說明請參考SWM190數(shù)據(jù)手冊及M0權(quán)威指南。
02.
外部中斷/事件控制器(EXTI)
EXTI的全程是External interrupt/event controller,即外部中斷/事件控制器,管理了控制器的32個中斷/事件線。每個中斷/事件線都對應(yīng)一個電平或者邊沿檢測,電平檢測支持高電平/低電平檢測;邊沿檢測包括上升沿/下降沿/雙邊沿觸發(fā)。
EXTI 可以實現(xiàn)對每個中斷/事件線進行單獨配置,可以單獨配置為中斷或者事件,以及觸發(fā)事件的屬性。
SWM190提供了32個中斷供外設(shè)與核交互,其排列如表格 1所示??梢酝ㄟ^中斷配置模塊,將任意模塊或具體IO的中斷連接至指定中斷編號。具體使用參考中斷配置模塊。
03.
SWM190 EXTI功能配置庫函數(shù)
下面我們以最簡單的按鍵輸入為例,用外部中斷的方法實現(xiàn)按鍵控制。在此例程中,我們將A4設(shè)為按鍵輸入引腳,A5設(shè)為輸出引腳,外接LED燈,通過按鍵翻轉(zhuǎn)LED的狀態(tài)來觀察現(xiàn)象。
我們之前有講到GPIO的配置方法,在這里就不在做贅述,將按鍵引腳通過GPIO_Init函數(shù)設(shè)為上拉輸入,并與外部按鍵電路連接,將LED輸出引腳通過GPIO_Init設(shè)置為輸出,與外部LED引腳相連。然后進行外部中斷配置:
在SWM190固件庫中對外部中斷的配置進行了說明,下面將根據(jù)庫函數(shù)對SWM190的EXTI配置,首先來看一下EXTI_Init函數(shù)的原型void EXTI_Init(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t mode)。這個函數(shù)的實現(xiàn)是在SWM190_exti.c文件中,若要使用該函數(shù)在相應(yīng)的應(yīng)用程序的前面包含SWM190_exti.h頭文件。
函數(shù)的第一個參數(shù)為GPIO_ TypeDef,它是一個結(jié)構(gòu)體類型,該類型在SWM190_gpio.h中被定義。具體參數(shù)為指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD、GPIOE;
第二個參數(shù)為uint32_t n指定GPIO引腳,有效值包括PIN0、PIN1、PIN2、。。. 。。. PIN14、PIN15;
第三個參數(shù)為uint32_t mode,為EXTI觸發(fā)方式配置,有效值包括EXTI_FALL_EDGE(下降沿觸發(fā)中斷)、EXTI_RISE_EDGE(上升沿觸發(fā)中斷)、EXTI_BOTH_EDGE(雙邊沿觸發(fā)中斷)、EXTI_LOW_LEVEL(低電平觸發(fā)中斷)、EXTI_HIGH_LEVEL(高電平觸發(fā)中斷);
配置GPIO中斷引腳后,需要使能NVIC,將對應(yīng)中斷線連接至NVIC。并將引腳外部中斷打開。具體配置函數(shù)如下所示:

接下來我們看下中斷服務(wù)子函數(shù),中斷服務(wù)子函數(shù)與上面配置的外部中斷線相對應(yīng),在中斷服務(wù)函數(shù)中我們清中斷并進行LED的翻轉(zhuǎn)。

04.
實驗現(xiàn)象
下載好程序后,按下按鍵時LED點亮,再按下按鍵時LED熄滅,如此循環(huán)。
編輯:jq
-
led
+關(guān)注
關(guān)注
243文章
24594瀏覽量
690819 -
ARM
+關(guān)注
關(guān)注
135文章
9552瀏覽量
391855 -
控制器
+關(guān)注
關(guān)注
114文章
17787瀏覽量
193105 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67501 -
NVIC
+關(guān)注
關(guān)注
0文章
37瀏覽量
12516
原文標題:華芯微特小課堂--MCU之EXTI
文章出處:【微信號:gh_ed4f95bde4df,微信公眾號:華芯微特32位MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
CW32F030中斷解析
RISC-V怎么實現(xiàn)核間中斷?核心本地中斷控制器(CLINT)深度解析
MCU微控制器CH32L103高速電吹風(fēng)方案
易靈思Sapphire SoC中RISC-V平臺級中斷控制器深度解析
RVMCU課堂「12」: 手把手教你玩轉(zhuǎn)RVSTAR—外部中斷篇
關(guān)于蜂鳥E203內(nèi)核中斷硬件實現(xiàn)中斷嵌套的設(shè)計
瑞薩RA系列MCU的外部引腳中斷詳解
【RA4M2-SENSOR】5、外部中斷按鍵+低功耗模式+功耗測量
AS32X601驅(qū)動系列教程 PLIC_中斷應(yīng)用詳解
華芯微特MCU的嵌套向量中斷控制器與外部中斷/事件控制器的使用方法
評論