01.
嵌套向量中斷控制器(NVIC)
NVIC的全稱是Nested vectoredinterrupt controller,即嵌套向量中斷控制器。
Cortex-M0和Cortex-M4提供了“嵌套向量中斷控制器(NVIC)”用以管理中斷事件。其中M0和M4提供的中斷優(yōu)先級(jí)及個(gè)數(shù)不一致,為了讓您更加簡(jiǎn)單的使用這一功能,下面小編將以SWM190為例,給大家展示如何使用SWM系列產(chǎn)品的NVIC。
SWM190系列32位MCU(以下簡(jiǎn)稱SWM190)內(nèi)嵌ARM CortexTM-M0內(nèi)核,其中斷優(yōu)先級(jí)分為4級(jí),可通過中斷優(yōu)先級(jí)配置寄存器(IRQn)進(jìn)行配置。
特性
l 4位中斷優(yōu)先級(jí)
l 支持嵌套和向量中斷
l 硬件完成現(xiàn)場(chǎng)的保存和恢復(fù)
l 動(dòng)態(tài)改變優(yōu)先級(jí)
l 確定的中斷時(shí)間
l 可屏蔽中斷
在中斷發(fā)生時(shí),內(nèi)核比較中斷優(yōu)先級(jí),并自動(dòng)獲取入口地址,并保護(hù)現(xiàn)場(chǎng),將指定寄存器中數(shù)據(jù)入棧,此過程無需軟件參與。中斷服務(wù)程序結(jié)束后,由硬件完成出棧工作。同時(shí)支持“尾鏈”模式及“遲滯”模式,有效的優(yōu)化了中斷發(fā)生及背對(duì)背中斷的執(zhí)行效率,提高了中斷的實(shí)時(shí)性。嵌套向量中斷控制器管理著包括核異常等中斷。關(guān)于更多的異常和NVIC編程的說明請(qǐng)參考SWM190數(shù)據(jù)手冊(cè)及M0權(quán)威指南。
02.
外部中斷/事件控制器(EXTI)
EXTI的全程是External interrupt/event controller,即外部中斷/事件控制器,管理了控制器的32個(gè)中斷/事件線。每個(gè)中斷/事件線都對(duì)應(yīng)一個(gè)電平或者邊沿檢測(cè),電平檢測(cè)支持高電平/低電平檢測(cè);邊沿檢測(cè)包括上升沿/下降沿/雙邊沿觸發(fā)。
EXTI 可以實(shí)現(xiàn)對(duì)每個(gè)中斷/事件線進(jìn)行單獨(dú)配置,可以單獨(dú)配置為中斷或者事件,以及觸發(fā)事件的屬性。
SWM190提供了32個(gè)中斷供外設(shè)與核交互,其排列如表格 1所示。可以通過中斷配置模塊,將任意模塊或具體IO的中斷連接至指定中斷編號(hào)。具體使用參考中斷配置模塊。
03.
SWM190 EXTI功能配置庫函數(shù)
下面我們以最簡(jiǎn)單的按鍵輸入為例,用外部中斷的方法實(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引腳相連。然后進(jìn)行外部中斷配置:
在SWM190固件庫中對(duì)外部中斷的配置進(jìn)行了說明,下面將根據(jù)庫函數(shù)對(duì)SWM190的EXTI配置,首先來看一下EXTI_Init函數(shù)的原型void EXTI_Init(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t mode)。這個(gè)函數(shù)的實(shí)現(xiàn)是在SWM190_exti.c文件中,若要使用該函數(shù)在相應(yīng)的應(yīng)用程序的前面包含SWM190_exti.h頭文件。
函數(shù)的第一個(gè)參數(shù)為GPIO_ TypeDef,它是一個(gè)結(jié)構(gòu)體類型,該類型在SWM190_gpio.h中被定義。具體參數(shù)為指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD、GPIOE;
第二個(gè)參數(shù)為uint32_t n指定GPIO引腳,有效值包括PIN0、PIN1、PIN2、。。. 。。. PIN14、PIN15;
第三個(gè)參數(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,將對(duì)應(yīng)中斷線連接至NVIC。并將引腳外部中斷打開。具體配置函數(shù)如下所示:
接下來我們看下中斷服務(wù)子函數(shù),中斷服務(wù)子函數(shù)與上面配置的外部中斷線相對(duì)應(yīng),在中斷服務(wù)函數(shù)中我們清中斷并進(jìn)行LED的翻轉(zhuǎn)。
04.
實(shí)驗(yàn)現(xiàn)象
下載好程序后,按下按鍵時(shí)LED點(diǎn)亮,再按下按鍵時(shí)LED熄滅,如此循環(huán)。
編輯:jq
-
led
+關(guān)注
關(guān)注
241文章
23135瀏覽量
658445 -
ARM
+關(guān)注
關(guān)注
134文章
9046瀏覽量
366815 -
控制器
+關(guān)注
關(guān)注
112文章
16203瀏覽量
177401 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4306瀏覽量
62430 -
NVIC
+關(guān)注
關(guān)注
0文章
35瀏覽量
11679
原文標(biāo)題:華芯微特小課堂--MCU之EXTI
文章出處:【微信號(hào):gh_ed4f95bde4df,微信公眾號(hào):華芯微特32位MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論