RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

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

stm32 GPIO中斷配置教程

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

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

1. 理解GPIO中斷

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

2. 硬件準(zhǔn)備

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

3. 軟件配置

3.1 STM32CubeMX配置

  1. 打開STM32CubeMX ,選擇你的STM32芯片型號。
  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. 打開Keil MDK ,導(dǎo)入STM32CubeMX生成的項(xiàng)目。
  2. 編譯項(xiàng)目 :點(diǎn)擊“Build”菜單,選擇“Build target”,編譯項(xiàng)目。

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

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

#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)來使能中斷。

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

6. 測試

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

7. 常見問題

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

8. 結(jié)論

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

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

    關(guān)注

    48

    文章

    7542

    瀏覽量

    151311
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355722
  • 嵌入式開發(fā)
    +關(guān)注

    關(guān)注

    18

    文章

    1028

    瀏覽量

    47563
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52051
收藏 人收藏

    評論

    相關(guān)推薦

    STM32 GPIO的八種工作模式

    GPIO (general purpose input output)是通用輸入輸出端口的簡稱,簡單來說就是軟件可控制的引腳,STM32芯片的GPIO引腳與外部設(shè)備連接起來,從而實(shí)現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。
    的頭像 發(fā)表于 11-06 09:40 ?505次閱讀
    <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 ?133次閱讀

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

    高速時(shí)鐘和低速時(shí)鐘,在本文中使用內(nèi)置的時(shí)鐘源,故都選擇Disable選項(xiàng),如下所示: 配置時(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 ?834次閱讀

    請問STM32WB55RG怎么配置GPIO輸入模式?

    在CubeMX中配置STM32WB55的GPIO輸入模式時(shí),在下拉選擇中為何沒有輸入模式選擇?
    發(fā)表于 05-23 07:58

    求助,關(guān)于STM32F030RCT6使用兩個(gè)外部中斷配置問題求解

    各位大佬好,目前用STM32F030RCT6三個(gè)外部中斷PA0,PC5,PC12三個(gè)外部中斷,PA0,PC12都使用正常當(dāng)我配置PC5的時(shí)候就一直進(jìn)PC12的
    發(fā)表于 04-09 07:40

    STM32中斷分組及外部中斷配置過程分享

    STM32中斷分組   STM32 的每一個(gè)GPIO都能配置成一個(gè)外部中斷觸發(fā)源,這點(diǎn)也是
    發(fā)表于 04-08 08:05

    STM32中斷函數(shù)HAL_GPIO_EXTI_Callback里面不能嵌套PWM嗎?

    請問,STM32中斷函數(shù)HAL_GPIO_EXTI_Callback里面不能嵌套PWM嗎? void HAL_GPIO_EXTI_Callback(uint16_t
    發(fā)表于 04-07 08:24

    STM32進(jìn)行逆變器輸出過流保護(hù)是采用GPIO口的線中斷嗎?

    STM32進(jìn)行逆變器輸出過流保護(hù)是采用GPIO口的線中斷嗎?
    發(fā)表于 04-07 06:39

    請問如何區(qū)分觸發(fā)STM32外部中斷GPIO引腳?

    如何區(qū)分觸發(fā)STM32 外部中斷GPIO引腳?
    發(fā)表于 04-01 07:07

    GD32 MCU如何將燒錄口配置GPIO使用?

    如果大家在進(jìn)行GD32 MCU開發(fā)時(shí)發(fā)現(xiàn)GPIO引腳使用不足,可以嘗試將燒錄口配置GPIO使用,這樣就可以多出幾個(gè)引腳使用,但使用的時(shí)候如何配置以及有哪些注意事項(xiàng),本視頻將會為大家進(jìn)
    的頭像 發(fā)表于 02-20 10:18 ?1962次閱讀
    GD32 MCU如何將燒錄口<b class='flag-5'>配置</b>為<b class='flag-5'>GPIO</b>使用?

    基于STM32CubeIDE軟件實(shí)現(xiàn)的STM32外部中斷實(shí)例

    因?yàn)镻E2配置GPIO_EXTI2中斷,它出現(xiàn)在了列表中。同時(shí)出現(xiàn)的還有SysTick,它是HAL_Delay的時(shí)基來源,如下圖note處所說的,每隔一個(gè)固定時(shí)間產(chǎn)生一次中斷。
    發(fā)表于 01-12 16:15 ?1587次閱讀
    基于<b class='flag-5'>STM32</b>CubeIDE軟件實(shí)現(xiàn)的<b class='flag-5'>STM32</b>外部<b class='flag-5'>中斷</b>實(shí)例

    STM32ADC中斷的使用注意事項(xiàng)和優(yōu)化建議

    STM32ADC中斷的使用注意事項(xiàng)和優(yōu)化建議 STM32ADC(模擬數(shù)字轉(zhuǎn)換器)是STMicroelectronics開發(fā)的一款用于外部模擬信號轉(zhuǎn)換為數(shù)字信號的器件。在使用STM32A
    的頭像 發(fā)表于 01-12 15:17 ?3373次閱讀

    stm32怎么讀取io口輸入電平

    要讀取STM32的IO口輸入電平,你可以使用GPIO外設(shè)來完成。GPIO是通用輸入輸出端口,它可以配置成輸入模式,用于讀取外部信號的電平。 首先,你需要定義一個(gè)
    的頭像 發(fā)表于 01-05 11:46 ?4862次閱讀

    stm32中斷怎么處理的

    STM32是一款非常強(qiáng)大的微控制器系列,具有豐富的外設(shè)和功能。中斷STM32中非常重要的部分,能夠幫助我們提高系統(tǒng)的響應(yīng)速度和效率。本文將詳細(xì)介紹STM32
    的頭像 發(fā)表于 01-02 17:35 ?2567次閱讀
    RM新时代网站-首页