????STM32可以產生中斷的事件多種多樣,比如:定時器時間結束、串口接收到數據、某個GPIO檢測到電平變化等等等等。
1、STM32 gpio 中斷處理流程介紹
????1、從引腳進入的高低電平首先由輸入驅動器處理,如下圖
????2、經過輸入驅動器處理后的信號會進入邊沿檢測電路
????3、邊沿檢測電路會按照我們配置的上升沿還是下降沿,滿足之后會輸入1給請求掛起寄存器。
????4、請求掛起寄存器會經過一個與門,如果我們開啟了此中斷,信號1就會傳送給NVIC中斷控制器。
????5、最后會進入中斷向量表,查找對應的中斷函數,執行。執行完后記得清除請求中斷掛起寄存器(這一步CubeMX已經幫我們做好了),防止NVIC誤導再次執行相關函數。
2、優先級
????1、stm32為每個中斷向量準備了4個二進制位來存儲中斷優先級信息。可以自由分配幾位用來設置搶占優先級,幾位用來設置響應優先級。CubeIDE在如下位置配置。
????2、優先級數字越小,代表越優先。
????3、當兩中斷同時發生時,先比較搶占優先級,相同的話再比較響應優先級。如果還相同,就按照中斷向量表中的順序執行。
3、測試中斷
????將按鍵引腳設置為中斷模式,當按鍵按下中斷觸發,執行中斷函數,完成小燈亮滅。
3.1、按鍵中斷配置
????點擊左側NVIC,勾選上EXTI 15:10中斷向量。
3.2、coding編寫中斷服務函數
????中斷函數進入,延時10ms,再次確認按鍵是否按下,如果按下則翻轉小燈電平。
目的是為了消抖。