STM32外部中斷 exti 配置

2021-10-06 02:55:05 字數 1875 閱讀 2391

在微控制器運用中,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口與中斷間的對映關係

nvic_inittypedef nvic_initstruct;

//設定兩結構體變數

exti_inittypedef exti_initstruct;

rcc_apb2periphclockcmd

(rcc_apb2periph_syscfg,enable)

;//使能外設時鐘

syscfg_extilineconfig

(exti_portsourcegpioa,exti_pinsource0)

;//對應對映為pa0管腳

(3)配置中斷分組nvic,使能中斷

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)

;

(4)初始化exti,選擇觸發方式

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)

;

(5)編寫中斷函式

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 是巢狀向量中斷控制 器,控制著整個晶元中斷相關的功能,是核心...