GD32F303固件庫開發(fā)(15)----外部中斷EXTI
概述
本章配置GD32F303使用EXTI進行驅動LED。 需要GD樣片的可以加群申請:615061293 。
視頻教學
https://www.bilibili.com/video/BV1ig411Y7bB/

csdn課程
課程更加詳細。?
https://download.csdn.net/course/detail/37144
生成例程
這里準備了自己繪制的開發(fā)板進行驗證。?

?查看原理圖,PB14為按鍵管腳。?

LED管腳為PB7.?

配置中斷口
GPIO 口連接到 16 個外部中斷 / 事件線如下圖 ??梢钥吹絇C13應該是在EXTI14上。?

?外部中斷/事件控制器用于產生事件/中斷請求的邊沿檢測器。每根輸入線都可單獨進行配置,以選擇類型(中斷或事件)和相應的觸發(fā)事件(上升沿觸發(fā)、下降沿觸發(fā)或邊沿觸發(fā))。每根輸入線還可單獨屏蔽。掛起寄存器用于保持中斷請求的狀態(tài)線。?

?所以需要配置中斷口是上升沿觸發(fā)或者下降沿觸發(fā)。?

中斷服務函數
配置完中斷優(yōu)先級之后,接著要做的就是編寫中斷服務函數。中斷服務函數的名字是在 HAL 庫中事先有定義的。?

?

?

?中斷線 10-15 共用中斷函數。一般情況下,我們可以把中斷控制邏輯直接編寫在中斷服務函數中。?

配置中斷優(yōu)先級(NVIC),并使能中斷
同樣的,在mian.c的MX_GPIO_Init中,設置好中斷線和 GPIO 映射關系,然后又設置好了中斷的觸發(fā)模式等初始化參數。既然是外部中斷,涉及到中斷我們當然還要設置 NVIC 中斷優(yōu)先級。 HAL_NVIC_SetPriority的中間0表示搶占優(yōu)先級為0,最右邊的0表示子優(yōu)先級為0。
搶占優(yōu)先級比子優(yōu)先級的優(yōu)先權更高,這意味搶占優(yōu)先級更高的中斷會先執(zhí)行,而不管子優(yōu)先級的優(yōu)先權,數值越低優(yōu)先級越高。
同理,如果搶占優(yōu)先級相同,那么就會比較子優(yōu)先級,子優(yōu)先級更高的中斷將會先被執(zhí)行,數值越低優(yōu)先級越高。
當兩個中斷源的搶占式優(yōu)先級相同時,這兩個中斷將沒有嵌套關系,當一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達,則中斷控制器根據他們的響應優(yōu)先級高低來決定先處理哪一個;如果他們的搶占式優(yōu)先級和響應優(yōu)先級都相等,則根據他們在中斷表中的排位順序決定先處理哪一個。
GPIO配置
PB7為板上LED燈,配置PB7為輸出口,當中斷發(fā)生時候改變IO口極性。

EXTI15_10_IRQHandler
在按鍵觸發(fā)時候翻轉LED電平。