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