0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

stm32 GPIO中斷配置教程

科技綠洲 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2024-11-19 15:53 ? 次閱讀

嵌入式開(kāi)發(fā)中,STM32微控制器因其高性能和豐富的外設(shè)而廣受歡迎。GPIO(通用輸入/輸出)中斷是STM32微控制器中常用的功能之一,它允許開(kāi)發(fā)者在特定引腳上檢測(cè)到外部信號(hào)變化時(shí)快速響應(yīng)。

1. 理解GPIO中斷

在STM32中,GPIO中斷允許微控制器在引腳狀態(tài)變化時(shí)(如從低到高或從高到低)立即響應(yīng),而無(wú)需不斷輪詢(xún)引腳狀態(tài)。這對(duì)于處理外部事件(如按鈕按下、傳感器信號(hào)等)非常有用。

2. 硬件準(zhǔn)備

  • STM32開(kāi)發(fā)板(如STM32F103C8T6)
  • USB數(shù)據(jù)線
  • 電腦(安裝有STM32CubeMX和Keil MDK)

3. 軟件配置

3.1 STM32CubeMX配置

  1. 打開(kāi)STM32CubeMX ,選擇你的STM32芯片型號(hào)。
  2. 配置GPIO :在左側(cè)的“Pinout & Configuration”視圖中,找到你想要配置為中斷的GPIO引腳。例如,選擇PA0,并將其模式設(shè)置為“GPIO_Input”。
  3. 啟用中斷 :在“GPIO”設(shè)置中,將“Mode”設(shè)置為“Interrupt”。
  4. 配置中斷觸發(fā)條件 :在“GPIO”設(shè)置中,選擇“Interrupt Trigger”為“Rising”或“Falling”或“Both”,根據(jù)你的需求。
  5. 保存項(xiàng)目 :點(diǎn)擊“Project”菜單,選擇“Generate Code”,保存項(xiàng)目到你的電腦上。

3.2 Keil MDK配置

  1. 打開(kāi)Keil MDK ,導(dǎo)入STM32CubeMX生成的項(xiàng)目。
  2. 編譯項(xiàng)目 :點(diǎn)擊“Build”菜單,選擇“Build target”,編譯項(xiàng)目。

4. 編寫(xiě)中斷服務(wù)例程

在STM32中,每個(gè)中斷都有一個(gè)對(duì)應(yīng)的中斷服務(wù)例程(ISR)。你需要在代碼中實(shí)現(xiàn)這個(gè)ISR來(lái)處理中斷。

#include "stm32f1xx_hal.h"

// GPIO中斷服務(wù)例程
void EXTI0_IRQHandler(void)
{
if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET)
{
// 清除中斷標(biāo)志位
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);

// 你的中斷處理代碼
// 例如:翻轉(zhuǎn)LED狀態(tài)
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
}
}

5. 配置NVIC

STM32需要配置嵌套向量中斷控制器(NVIC)來(lái)使能中斷。

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_0)
{
// 你的中斷回調(diào)代碼
}
}

6. 測(cè)試

  1. 下載代碼 :使用USB數(shù)據(jù)線將代碼下載到STM32開(kāi)發(fā)板上。
  2. 測(cè)試中斷 :按下連接到PA0的按鈕,觀察LED狀態(tài)是否如預(yù)期那樣變化。

7. 常見(jiàn)問(wèn)題

  • 中斷不觸發(fā) :檢查GPIO引腳是否正確配置為中斷模式,以及中斷觸發(fā)條件是否設(shè)置正確。
  • 中斷服務(wù)例程不執(zhí)行 :確保NVIC配置正確,并且ISR函數(shù)名與啟動(dòng)文件中的聲明一致。

8. 結(jié)論

通過(guò)本教程,你應(yīng)該能夠理解如何在STM32上配置GPIO中斷,并能夠編寫(xiě)代碼來(lái)響應(yīng)外部事件。GPIO中斷是STM32微控制器中一個(gè)非常有用的功能,可以大大提高程序的響應(yīng)速度和效率。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7925

    瀏覽量

    153868
  • STM32
    +關(guān)注

    關(guān)注

    2290

    文章

    11018

    瀏覽量

    362960
  • 嵌入式開(kāi)發(fā)

    關(guān)注

    18

    文章

    1072

    瀏覽量

    48638
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1278

    瀏覽量

    53692
收藏 0人收藏
  • efans_666e5e1

評(píng)論

相關(guān)推薦
熱點(diǎn)推薦

STM32CubeMX配置STM32G070RBT6TR時(shí)為什么無(wú)法使能PVD中斷?

STM32CubeMX 配置STM32G070RBT6TR時(shí)無(wú)法使能PVD中斷
發(fā)表于 06-18 07:59

STM32CubeMX配置STM32G070RBT6TR時(shí)無(wú)法使能PVD中斷怎么辦?

STM32CubeMX 配置STM32G070RBT6TR時(shí)無(wú)法使能PVD中斷
發(fā)表于 06-16 06:32

GPIO配置的工作原理是什么?

我使用 EZ-USB 配置實(shí)用程序,我想知道是否有人知道 GPIO 配置的工作原理。 例如,GPIO0 可以用作傳感器復(fù)位,我知道這個(gè) GPIO
發(fā)表于 05-19 06:56

FCX3無(wú)法進(jìn)入GPIO中斷是怎么回事?

我嘗試將GPIO20配置中斷引腳,若輸入為上升沿,則讓GPIO24引腳輸出低電平;若輸入為下降沿,則讓GPIO24引腳輸出高電平。但是現(xiàn)在
發(fā)表于 05-14 07:38

基于小凌派RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷

1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO中斷模式,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GPIO
的頭像 發(fā)表于 04-21 10:39 ?391次閱讀
基于小凌派RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b><b class='flag-5'>中斷</b>

為什么GPIO配置總是出問(wèn)題?

STM32開(kāi)發(fā)中,GPIO(通用輸入輸出)配置看似簡(jiǎn)單,但在實(shí)際開(kāi)發(fā)中,很多人常常會(huì)遇到這些困惑:明明按照教程配置GPIO,為什么LED
的頭像 發(fā)表于 04-07 11:59 ?553次閱讀
為什么<b class='flag-5'>GPIO</b><b class='flag-5'>配置</b>總是出問(wèn)題?

GPIO模塊與其他外設(shè)的連接方法

輸入或輸出模式。在輸入模式下,GPIO引腳可以讀取外部信號(hào)的狀態(tài);在輸出模式下,它們可以向外部設(shè)備發(fā)送信號(hào)。此外,GPIO引腳還可以被配置為特殊功能,如中斷觸發(fā)、PWM(脈沖寬度調(diào)制)
的頭像 發(fā)表于 01-09 09:48 ?892次閱讀

GPIO錯(cuò)誤排查與解決

在嵌入式系統(tǒng)和微控制器編程中,通用輸入輸出(GPIO)是最常見(jiàn)的接口之一。然而,在使用GPIO時(shí),我們可能會(huì)遇到各種錯(cuò)誤。 1. 理解GPIO GPIO是微控制器上的一組引腳,可以被
的頭像 發(fā)表于 01-09 09:46 ?2116次閱讀

如何配置GPIO引腳

在嵌入式系統(tǒng)設(shè)計(jì)中,GPIO(通用輸入/輸出)引腳是連接微控制器與外部世界的重要橋梁。它們可以被配置為輸入或輸出模式,用于讀取傳感器數(shù)據(jù)、控制LED燈、驅(qū)動(dòng)電機(jī)等。 GPIO引腳的基本概念 G
的頭像 發(fā)表于 01-09 09:39 ?1126次閱讀

STM32 GPIO的八種工作模式

GPIO (general purpose input output)是通用輸入輸出端口的簡(jiǎn)稱(chēng),簡(jiǎn)單來(lái)說(shuō)就是軟件可控制的引腳,STM32芯片的GPIO引腳與外部設(shè)備連接起來(lái),從而實(shí)現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。
的頭像 發(fā)表于 11-06 09:40 ?1892次閱讀
<b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的八種工作模式

SOC GPIO操作

sapphire Soc提供了兩個(gè)GPIO組每組有4個(gè)GPIO,定義為GPIO[3:0],其中只有GPIO[1:0]可以支持中斷
的頭像 發(fā)表于 11-01 11:06 ?453次閱讀

STM32CUBEMX(11)--外部中斷(EXTI)

高速時(shí)鐘和低速時(shí)鐘,在本文中使用內(nèi)置的時(shí)鐘源,故都選擇Disable選項(xiàng),如下所示: 配置時(shí)鐘樹(shù) STM32F0的最高主頻到48M,所以配置48即可: 中斷
發(fā)表于 09-10 15:44

stm32怎樣觸發(fā)軟件中斷

了解STM32中斷系統(tǒng) STM32微控制器具有豐富的中斷系統(tǒng),包括NVIC(嵌套向量中斷控制器)和SYSTICK定時(shí)器。NVIC可以處理多達(dá)
的頭像 發(fā)表于 09-02 09:32 ?1724次閱讀

stm32用串口燒錄怎么設(shè)置

準(zhǔn)備工作 確保您擁有STM32開(kāi)發(fā)板和相應(yīng)的硬件設(shè)備,如USB轉(zhuǎn)串口模塊。 安裝STM32CubeMX和STM32CubeProgrammer軟件,這些是ST官方提供的工具,用于配置
的頭像 發(fā)表于 08-22 09:33 ?3133次閱讀

如何解決ESP32 GPIO中斷丟失的問(wèn)題?

ESP32 共有 40 個(gè) GPIO, 每個(gè) GPIO 都可響應(yīng)外部中斷, 中斷觸發(fā)模式有邊沿觸發(fā)和電平觸發(fā).其中GPIO0 ~
發(fā)表于 06-26 06:30

電子發(fā)燒友

中國(guó)電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會(huì)員交流學(xué)習(xí)
  • 獲取您個(gè)性化的科技前沿技術(shù)信息
  • 參加活動(dòng)獲取豐厚的禮品