在嵌入式開發中,STM32微控制器因其高性能和豐富的外設而廣受歡迎。GPIO(通用輸入/輸出)中斷是STM32微控制器中常用的功能之一,它允許開發者在特定引腳上檢測到外部信號變化時快速響應。
1. 理解GPIO中斷
在STM32中,GPIO中斷允許微控制器在引腳狀態變化時(如從低到高或從高到低)立即響應,而無需不斷輪詢引腳狀態。這對于處理外部事件(如按鈕按下、傳感器信號等)非常有用。
2. 硬件準備
3. 軟件配置
3.1 STM32CubeMX配置
- 打開STM32CubeMX ,選擇你的STM32芯片型號。
- 配置GPIO :在左側的“Pinout & Configuration”視圖中,找到你想要配置為中斷的GPIO引腳。例如,選擇PA0,并將其模式設置為“GPIO_Input”。
- 啟用中斷 :在“GPIO”設置中,將“Mode”設置為“Interrupt”。
- 配置中斷觸發條件 :在“GPIO”設置中,選擇“Interrupt Trigger”為“Rising”或“Falling”或“Both”,根據你的需求。
- 保存項目 :點擊“Project”菜單,選擇“Generate Code”,保存項目到你的電腦上。
3.2 Keil MDK配置
- 打開Keil MDK ,導入STM32CubeMX生成的項目。
- 編譯項目 :點擊“Build”菜單,選擇“Build target”,編譯項目。
4. 編寫中斷服務例程
在STM32中,每個中斷都有一個對應的中斷服務例程(ISR)。你需要在代碼中實現這個ISR來處理中斷。
#include "stm32f1xx_hal.h"
// GPIO中斷服務例程
void EXTI0_IRQHandler(void)
{
if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET)
{
// 清除中斷標志位
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
// 你的中斷處理代碼
// 例如:翻轉LED狀態
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
}
}
5. 配置NVIC
STM32需要配置嵌套向量中斷控制器(NVIC)來使能中斷。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_0)
{
// 你的中斷回調代碼
}
}
6. 測試
- 下載代碼 :使用USB數據線將代碼下載到STM32開發板上。
- 測試中斷 :按下連接到PA0的按鈕,觀察LED狀態是否如預期那樣變化。
7. 常見問題
- 中斷不觸發 :檢查GPIO引腳是否正確配置為中斷模式,以及中斷觸發條件是否設置正確。
- 中斷服務例程不執行 :確保NVIC配置正確,并且ISR函數名與啟動文件中的聲明一致。
8. 結論
通過本教程,你應該能夠理解如何在STM32上配置GPIO中斷,并能夠編寫代碼來響應外部事件。GPIO中斷是STM32微控制器中一個非常有用的功能,可以大大提高程序的響應速度和效率。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
微控制器
+關注
關注
48文章
7840瀏覽量
153292 -
STM32
+關注
關注
2282文章
10986瀏覽量
361097 -
嵌入式開發
+關注
關注
18文章
1063瀏覽量
48306 -
GPIO
+關注
關注
16文章
1237瀏覽量
53261
發布評論請先 登錄
相關推薦
基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制GPIO中斷
1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板上使用IOT庫的GPIO中斷模式,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO

GPIO模塊與其他外設的連接方法
輸入或輸出模式。在輸入模式下,GPIO引腳可以讀取外部信號的狀態;在輸出模式下,它們可以向外部設備發送信號。此外,GPIO引腳還可以被配置為特殊功能,如中斷觸發、PWM(脈沖寬度調制)
GPIO錯誤排查與解決
在嵌入式系統和微控制器編程中,通用輸入輸出(GPIO)是最常見的接口之一。然而,在使用GPIO時,我們可能會遇到各種錯誤。 1. 理解GPIO GPIO是微控制器上的一組引腳,可以被
如何配置GPIO引腳
在嵌入式系統設計中,GPIO(通用輸入/輸出)引腳是連接微控制器與外部世界的重要橋梁。它們可以被配置為輸入或輸出模式,用于讀取傳感器數據、控制LED燈、驅動電機等。 GPIO引腳的基本概念 G
STM32 GPIO的八種工作模式
GPIO (general purpose input output)是通用輸入輸出端口的簡稱,簡單來說就是軟件可控制的引腳,STM32芯片的GPIO引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能。

SOC GPIO操作
sapphire Soc提供了兩個GPIO組每組有4個GPIO,定義為GPIO[3:0],其中只有GPIO[1:0]可以支持中斷。
STM32CUBEMX(11)--外部中斷(EXTI)
高速時鐘和低速時鐘,在本文中使用內置的時鐘源,故都選擇Disable選項,如下所示:
配置時鐘樹
STM32F0的最高主頻到48M,所以配置48即可:
中斷口
發表于 09-10 15:44
stm32怎樣觸發軟件中斷
了解STM32中斷系統 STM32微控制器具有豐富的中斷系統,包括NVIC(嵌套向量中斷控制器)和SYSTICK定時器。NVIC可以處理多達
stm32用串口燒錄怎么設置
準備工作 確保您擁有STM32開發板和相應的硬件設備,如USB轉串口模塊。 安裝STM32CubeMX和STM32CubeProgrammer軟件,這些是ST官方提供的工具,用于配置和
如何解決ESP32 GPIO中斷丟失的問題?
ESP32 共有 40 個 GPIO, 每個 GPIO 都可響應外部中斷, 中斷觸發模式有邊沿觸發和電平觸發.其中GPIO0 ~
發表于 06-26 06:30
ESP32 wroom UE在使用GPIO32的時候,IO不響應中斷是什么原因?
我用的是ESP32 wroom UE 模塊,使用中斷例程,在使用GPIO32 的時候,發現這個IO不響應中斷(試過一部分IO都能響應中斷的),請問這是什么原因,怎么修改。設置代碼如下:
發表于 06-18 07:10
BLE開啟后,GPIO39如果配置為輸入并且開啟中斷,中斷會被一直觸發怎么解決?
問題:BLE開啟后,GPIO39如果配置為輸入并且開啟中斷,中斷會被一直觸發,有知道怎么解決的嗎?
背景:
IDF版本: ESP-IDF
發表于 06-17 07:37
STM32的GPIO引腳能同時用作外部中斷和定時器輸入捕獲嗎?
今天突然在項目中想到一種用法,將GPIO的某一個引腳,同時配置外部中斷(在中斷中做一些邏輯)和復用為定時器的輸入捕獲引腳。
查看GPIO的原
發表于 05-09 08:22
評論