在微控制器運用中,exti的使用算是常規操作了。在32微控制器中,exti的每個中斷均可單獨配置來選擇型別(即中斷和事件)以及相應的觸發事件(上公升沿觸發、下降沿觸發、邊沿觸發等),也可以進行單獨遮蔽的操作。
如下是32中的exti框圖,其中線路1–>2–>3–>4–>5為「中斷」、而1–>2–>3–>6–>7–>8為「事件」
在上圖可以看到,由於使用的是pclk2,所以我們需要使能apb2時鐘(關於stm32的時鐘系統可以參考我的另一篇部落格:**stm32f4xx時鐘系統)
在32之中,exti共有23個線路(即0~22),其中前16個線路為對應的io口的輸入中斷,也是本文所介紹的內容,之後的中斷在我學習到之後會再與大家進行分享。
在exti0~15中,數字0-15對應的是每個埠的引腳編號。以下圖為例,exti0則來自於由a—h埠的0號管腳。
在配置步驟中,主要有以下五步:
(1)使能io口,設定為輸入
(2)開啟syscfg時鐘,設定io口與中斷間的對映關係
(3)配置中斷分組nvic,使能中斷nvic_inittypedef nvic_initstruct;
//設定兩結構體變數
exti_inittypedef exti_initstruct;
rcc_apb2periphclockcmd
(rcc_apb2periph_syscfg,enable)
;//使能外設時鐘
syscfg_extilineconfig
(exti_portsourcegpioa,exti_pinsource0)
;//對應對映為pa0管腳
(4)初始化exti,選擇觸發方式nvic_initstruct.nvic_irqchannel=exti0_irqn;
nvic_initstruct.nvic_irqchannelpreemptionpriority=2;
//設定搶占優先順序
nvic_initstruct.nvic_irqchannelsubpriority=2;
//設定響應優先順序
nvic_initstruct.nvic_irqchannelcmd=enable;
nvic_init
(&nvic_initstruct)
;
(5)編寫中斷函式exti_initstruct.exti_line=exti_line0;
//設定線路為0(因為連線的是pa0管腳)
exti_initstruct.exti_mode=exti_mode_interrupt;
//型別為中斷
exti_initstruct.exti_trigger=exti_trigger_rising;
//上公升沿觸發
exti_initstruct.exti_linecmd=enable;
exti_init
(&exti_initstruct)
;
void
exti0_irqhandler
(void)}
exti_clearitpendingbit
(exti_line0)
;//清空中斷符號
}
STM32 使用EXTI處理外部中斷
使用exti處理外部中斷 1.任務描述 使用開發板上的key1按鍵,達到開 關led彩燈的目的 2.程式設計思路及要點 程式設計思路 檢測gpio中斷,在中斷服務函式裡面,實現開 關led彩燈 程式設計要點 1 初始化用來產生中斷的 gpio 2 初始化 exti 3 配置 nvic 4 編寫中斷服...
Stm32 外部中斷EXTI使用說明
硬體情況 採用pa11管腳 需要明確的是,pxn管腳共用外部中斷線extin和外部中斷向量extin irqn和中斷服務程式入口extin irqhandler,但是需要注意的是 9.5 共用exti9 5 irqn和exti9 5 irqhandler 15.10 共用exti15 10 irqn...
STM32配置外部中斷
stm32 中斷非常強大,每個外設都可以產生中斷,核心水平上搭載了乙個異常響應系統,分為 系統異常和外部中斷。nvic相當於乙個中斷總開關,總開關開啟,相應的中斷才能使用。在講如何配置中斷優先順序之前,我們需要先了解下 nvic。nvic 是巢狀向量中斷控制 器,控制著整個晶元中斷相關的功能,是核心...