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)場的保存和恢復
l 動態(tài)改變優(yōu)先級
l 確定的中斷時間
l 可屏蔽中斷
在中斷發(fā)生時,內(nèi)核比較中斷優(yōu)先級,并自動獲取入口地址,并保護現(xiàn)場,將指定寄存器中數(shù)據(jù)入棧,此過程無需軟件參與。中斷服務程序結(jié)束后,由硬件完成出棧工作。同時支持“尾鏈”模式及“遲滯”模式,有效的優(yōu)化了中斷發(fā)生及背對背中斷的執(zhí)行效率,提高了中斷的實時性。嵌套向量中斷控制器管理著包括核異常等中斷。關于更多的異常和NVIC編程的說明請參考SWM190數(shù)據(jù)手冊及M0權威指南。
02.
外部中斷/事件控制器(EXTI)
EXTI的全程是External interrupt/event controller,即外部中斷/事件控制器,管理了控制器的32個中斷/事件線。每個中斷/事件線都對應一個電平或者邊沿檢測,電平檢測支持高電平/低電平檢測;邊沿檢測包括上升沿/下降沿/雙邊沿觸發(fā)。
EXTI 可以實現(xiàn)對每個中斷/事件線進行單獨配置,可以單獨配置為中斷或者事件,以及觸發(fā)事件的屬性。
SWM190提供了32個中斷供外設與核交互,其排列如表格 1所示??梢酝ㄟ^中斷配置模塊,將任意模塊或具體IO的中斷連接至指定中斷編號。具體使用參考中斷配置模塊。
03.
SWM190 EXTI功能配置庫函數(shù)
下面我們以最簡單的按鍵輸入為例,用外部中斷的方法實現(xiàn)按鍵控制。在此例程中,我們將A4設為按鍵輸入引腳,A5設為輸出引腳,外接LED燈,通過按鍵翻轉(zhuǎn)LED的狀態(tài)來觀察現(xiàn)象。
我們之前有講到GPIO的配置方法,在這里就不在做贅述,將按鍵引腳通過GPIO_Init函數(shù)設為上拉輸入,并與外部按鍵電路連接,將LED輸出引腳通過GPIO_Init設置為輸出,與外部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ù)在相應的應用程序的前面包含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,將對應中斷線連接至NVIC。并將引腳外部中斷打開。具體配置函數(shù)如下所示:
接下來我們看下中斷服務子函數(shù),中斷服務子函數(shù)與上面配置的外部中斷線相對應,在中斷服務函數(shù)中我們清中斷并進行LED的翻轉(zhuǎn)。
04.
實驗現(xiàn)象
下載好程序后,按下按鍵時LED點亮,再按下按鍵時LED熄滅,如此循環(huán)。
編輯:jq
-
led
+關注
關注
242文章
23388瀏覽量
663625 -
ARM
+關注
關注
134文章
9180瀏覽量
369465 -
控制器
+關注
關注
112文章
16468瀏覽量
179644 -
函數(shù)
+關注
關注
3文章
4346瀏覽量
63022 -
NVIC
+關注
關注
0文章
35瀏覽量
11750
原文標題:華芯微特小課堂--MCU之EXTI
文章出處:【微信號:gh_ed4f95bde4df,微信公眾號:華芯微特32位MCU】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
串口中斷是內(nèi)部中斷還是外部中斷,串口中斷是怎么觸發(fā)的
納芯微參與車身域控制器測試方法團體標準審定
RISC-V內(nèi)核的32位通用微控制器 GD32VF103芯片簡介
控制器解碼器的使用方法
STM32CUBEMX(11)--外部中斷(EXTI)
stm32怎樣觸發(fā)軟件中斷
【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)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)
華芯微特屏驅(qū)MCU-SWM320系列
CKS32F107xx系列MCU的中斷和事件
![CKS32F107xx系列<b class='flag-5'>MCU</b>的<b class='flag-5'>中斷</b>和事件](https://file1.elecfans.com/web2/M00/FE/86/wKgaomadthKAVRbMAAEE9O3njnc706.png)
PLC中斷功能的作用及使用方法
PLC控制器的使用方法和注意事項
![](https://file1.elecfans.com/web2/M00/EE/3C/wKgaomZqtZyAU9VMAAHe9U_zjLI026.png)
評論