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文章
23388瀏覽量
663569 -
ARM
+關注
關注
134文章
9180瀏覽量
369440 -
控制器
+關注
關注
112文章
16467瀏覽量
179626 -
函數
+關注
關注
3文章
4346瀏覽量
63013 -
NVIC
+關注
關注
0文章
35瀏覽量
11748
原文標題:華芯微特小課堂--MCU之EXTI
文章出處:【微信號:gh_ed4f95bde4df,微信公眾號:華芯微特32位MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
納芯微參與車身域控制器測試方法團體標準審定
RISC-V內核的32位通用微控制器 GD32VF103芯片簡介
控制器解碼器的使用方法
【「ARM MCU嵌入式開發 | 基于國產GD32F10x芯片」閱讀體驗】+閱讀中斷篇
【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(3)NVIC 介紹
![【GD32 <b class='flag-5'>MCU</b> 入門教程】GD32 <b class='flag-5'>MCU</b> 常見外設介紹(3)NVIC 介紹](https://file1.elecfans.com/web2/M00/02/DF/wKgaoma5bUiAU4rBAAA6xy083Kc625.png)
華芯微特屏驅MCU-SWM320系列
PLC中斷功能的作用及使用方法
PLC控制器的使用方法和注意事項
![](https://file1.elecfans.com/web2/M00/EE/3C/wKgaomZqtZyAU9VMAAHe9U_zjLI026.png)
評論