EXTI 外部中斷 事件控制器

2021-09-07 11:19:04 字數 2883 閱讀 1595

外部中斷/事件控制器(exti)管理了控制器的 23 個中斷/事件線。每個中斷/事件線都對

應有乙個邊沿檢測器,可以實現輸入訊號的上公升沿檢測和下降沿的檢測。 exti 可以實現對

每個中斷/事件線進行單獨配置,可以單獨配置為中斷或者事件,以及觸發事件的屬性。

exti功能框圖

exti 的功能框圖包含了 exti 最核心內容,掌握了功能框圖,對 exti 就有乙個整體

的把握,在程式設計時就思路就非常清晰。 exti 功能框圖見圖 17-1。

在圖 17-1 可以看到很多在訊號線上打乙個斜槓並標註「 23」字樣,這個表示在控制器

內部類似的訊號線路有 23 個,這與 exti 總共有 23 個中斷/事件線是吻合的。所以我們只

要明白其中乙個的原理,那其他 22 個線路原理也就知道了。

可分為兩大部分功能,乙個是產生中斷,另乙個是產生事件,這兩個功能從硬體

上就有所不同。

產生中斷線路目的是把輸入訊號輸入到

nvic

,進一步會執行中斷服務函式,實現功

能,這樣是軟體級的。而產生事件線路目的就是傳輸乙個脈衝訊號給其他外設使用,並且

是電路級別的訊號傳輸,屬於硬體級的。

另外,

exti

是在 apb2

匯流排上的,在程式設計時候需要注意到這點。

exti 有 23 個中斷/事件線,每個 gpio 都可以被設定為輸入線,占用 exti0 至

exti15,還有另外七根用於特定的外設事件,見表 17-1。

七根特定外設中斷/事件線由外設觸發,具體用法參考《 stm32f4xx 中文參考手冊》

中對外設的具體說明。

可以通過

syscfg

外部中斷配置暫存器

1(syscfg_exticr1)

的 exti0[3:0]

位選擇配置為

pa0、

pb0、

pc0、

pd0、

pe0、

pf0、

pg0、

ph0

或者 pi0

exti初始化結構體詳解

標準庫函式對每個外設都建立了乙個初始化結構體,比如 exti_inittypedef,結構體

成員用於設定外設工作引數,並由外設初始化配置函式,比如 exti_init()呼叫,這些設定

引數將會設定外設相應的暫存器,達到配置外設工作環境的目的。

初始化結構體和初始化庫函式配合使用是標準庫精髓所在,理解了初始化結構體每個

成員意義基本上就可以對該外設運用自如了。初始化結構體定義在 stm32f4xx_exti.h 檔案中,

初始化庫函式定義在 stm32f4xx_exti.c 檔案中,程式設計時我們可以結合這兩個檔案內注釋使用。

下面說一下程式設計框架:

使用 gpio 之前必須開啟 gpio 埠的時鐘;用到

exti

必須開啟

syscfg

時鐘。作為中斷

/時間輸入線把

gpio

配置為輸入模式,這裡不使用上拉或下拉,由外部電路

完全決定引腳的狀態。

syscfg_extilineconfig 函式用來指定中斷/事件線的輸入源,它實際是設定

syscfg 外部中斷配置暫存器的值,該函式接收兩個引數,第乙個引數指定 gpio 埠源,

第二個引數為選擇對應 gpio 引腳源編號。

1

int main(void)2

16 }

主函式結構,先初始化硬體led,用於按鍵中斷控制的效果展示。

1/**

2* @brief 配置巢狀向量中斷控制器nvic

3* @param 無

4* @retval 無5*/

6static

void

nvic_configuration(void)7

2728/**

29* @brief 配置 pa0 為線中斷口,並設定中斷優先順序

30* @param 無

31* @retval 無

32*/

33void exti_key_config(void)34

在stm32f4xx_it.c中編寫中斷服務函式,其中中斷服務函式名要對應啟動檔案的中斷向量表,為了可讀性可以用巨集給中斷向量表取乙個適合中斷目的的名字。

還有乙個需要注意的:需要使能 syscfg 時鐘 ,使用gpio外部中斷時必須使能syscfg時鐘。

上面是韌體庫的函式定義內部,這個是韌體庫程式設計的套路,都是這樣定義某個功能的結構體,然後初始化這個結果體,最後呼叫乙個init函式完成。

韌體庫這樣的套路明白之後,編寫應用程式會輕鬆愉快地多。至於韌體庫內部到底是如何實現的,在達到高手水平了再去,畢竟做專案是以速度和質量說話的,韌體庫肯定快於暫存器版的,但是想自己寫出庫函式,又不得不去學習暫存器程式設計,所以都是相輔相成的,先學好韌體庫,然後學暫存器版,然後達到自己可以編寫庫,就達到學習目的了。

EXTI 外部中斷 事件控制器 (摘自野火)

exti external interrupt event controller 外部中斷 事件控制器,管理了控制器的 20個中斷 事件線。每個中斷 事件線都對應有乙個邊沿檢測器,可以實現輸入訊號的上公升沿 檢測和下降沿的檢測。exti 可以實現對每個中斷 事件線進行單獨配置,可以單獨配置為 中斷或...

EXTI 外部中斷 事件控制器(摘自野火)

exti external interrupt event controller 外部中斷 事件控制器,管理了控制器的 20個中斷 事件線。每個中斷 事件線都對應有乙個邊沿檢測器,可以實現輸入訊號的上公升沿 檢測和下降沿的檢測。exti 可以實現對每個中斷 事件線進行單獨配置,可以單獨配置為 中斷或...

秉火429筆記之十 EXTI 外部中斷 事件

目錄 1.exti 簡介 2.exti 功能框圖 3.功能點 4.編碼要點 外部中斷 事件控制器 exti 管理了控制器的23個中斷 事件線。每個中斷 事件線都對應有乙個邊沿檢測器,可以實現輸入訊號的上公升沿檢測和下降沿的檢測。exti可以實現對每個中斷 事件線進行單獨配置,可以單獨配置為中斷或者事...