RM新时代网站-首页

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

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

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

使用STM32 HAL庫進(jìn)行GPIO控制的實(shí)例

嵌入式學(xué)習(xí)站 ? 來源:嵌入式學(xué)習(xí)站 ? 2023-12-21 15:22 ? 次閱讀

01 介紹

在基于STM32微控制器嵌入式系統(tǒng)開發(fā)中,GPIO(GeneralPurposeInput/Output)控制是其中最基本、最常見的操作之一。通過使用STM32的HAL庫,可以輕松地對GPIO進(jìn)行配置和控制。本文將演示如何使用STM32HAL庫進(jìn)行GPIO控制,并提供一個簡單的LED控制的實(shí)例。

02 初始化GPIO

2.1選擇合適的引腳

在進(jìn)行GPIO控制前,首先需要選擇合適的引腳來連接外部設(shè)備,例如LED或按鈕。以STM32F4系列微控制器為例,以下是選擇引腳的方式:

```c

//選擇要使用的GPIO引腳

#defineLED_PINGPIO_PIN_13

#defineLED_GPIO_PORTGPIOC

```

2.2GPIO初始化配置

在使用HAL庫進(jìn)行GPIO控制前,需要對GPIO進(jìn)行初始化配置。以下是一個典型的GPIO初始化的代碼片段:

```c

GPIO_InitTypeDefGPIO_InitStruct={0};

//GPIO時鐘使能

__HAL_RCC_GPIOC_CLK_ENABLE();

//GPIO配置

GPIO_InitStruct.Pin=LED_PIN;

GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(LED_GPIO_PORT,&GPIO_InitStruct);

//初始化GPIO引腳

HAL_GPIO_WritePin(LED_GPIO_PORT,LED_PIN,GPIO_PIN_RESET);//初始化為低電平

```

以上代碼片段中,首先使能了GPIOC的時鐘,然后配置了引腳13(對應(yīng)PC13)為推挽輸出模式,并初始化為低電平。

03 控制GPIO

3.1控制GPIO輸出電平

通過HAL庫,可以很方便地控制GPIO的輸出電平。以下是一個控制LED輸出高低電平的例子:

```c

//控制LED輸出高電平

HAL_GPIO_WritePin(LED_GPIO_PORT,LED_PIN,GPIO_PIN_SET);

//延時一定時間

HAL_Delay(1000);

//控制LED輸出低電平

HAL_GPIO_WritePin(LED_GPIO_PORT,LED_PIN,GPIO_PIN_RESET);

```

以上代碼通過`HAL_GPIO_WritePin`函數(shù)實(shí)現(xiàn)了對LED引腳的輸出電平控制,從而實(shí)現(xiàn)LED的閃爍效果。

3.2控制GPIO輸入狀態(tài)

可以通過HAL庫獲取GPIO引腳的輸入狀態(tài)。以下是一個讀取按鈕狀態(tài)的例子:

```c

//讀取按鈕狀態(tài)

if(HAL_GPIO_ReadPin(Button_GPIO_PORT,Button_PIN)==GPIO_PIN_SET){

//按鈕被按下

}else{

//按鈕未被按下

}

```

04 中斷控制

通過HAL庫可以方便地配置GPIO中斷,并實(shí)現(xiàn)相應(yīng)的中斷處理函數(shù)。以下是一個簡單的中斷配置的例子:

4.1初始化中斷

```c

GPIO_InitTypeDefGPIO_InitStruct={0};

//GPIO時鐘使能

__HAL_RCC_GPIOA_CLK_ENABLE();

//GPIO配置

GPIO_InitStruct.Pin=GPIO_PIN_0;

GPIO_InitStruct.Mode=GPIO_MODE_IT_RISING;

GPIO_InitStruct.Pull=GPIO_NOPULL;

HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);

//中斷使能

HAL_NVIC_SetPriority(EXTI0_IRQn,0,0);

HAL_NVIC_EnableIRQ(EXTI0_IRQn);

```

4.2中斷處理函數(shù)

```c

voidEXTI0_IRQHandler(void)

{

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);

}

voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin)

{

//處理GPIO中斷

}

```

05 總結(jié)

通過本文的介紹,您應(yīng)當(dāng)對如何使用STM32HAL庫進(jìn)行GPIO控制有了初步的了解。合理配置并控制GPIO,可以實(shí)現(xiàn)對外部設(shè)備(如LED、按鈕等)進(jìn)行有效的控制和交互,為嵌入式系統(tǒng)的開發(fā)提供了基礎(chǔ)支持。

審核編輯:湯梓紅

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

    關(guān)注

    48

    文章

    7542

    瀏覽量

    151311
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3587

    瀏覽量

    129432
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355721
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52051
  • HAL庫
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    6216

原文標(biāo)題:使用STM32 HAL庫進(jìn)行GPIO控制的實(shí)例

文章出處:【微信號:嵌入式學(xué)習(xí)站,微信公眾號:嵌入式學(xué)習(xí)站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    stm32單片機(jī)基于hal對對GPIO的操作

    */HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)/*io口電平取反*/HAL_GPIO_TogglePin(
    發(fā)表于 11-26 20:06 ?1次下載
    <b class='flag-5'>stm32</b>單片機(jī)基于<b class='flag-5'>hal</b><b class='flag-5'>庫</b>對對<b class='flag-5'>GPIO</b>的操作

    基于halstm32f411re的GPIO輸出模式下電平的讀取

    基于halstm32f411re的GPIO輸出模式下電平的讀取1.硬件的配置對GPIO的參數(shù)配置首先需要創(chuàng)建一個結(jié)構(gòu)體指針:
    發(fā)表于 11-29 16:06 ?5次下載
    基于<b class='flag-5'>hal</b><b class='flag-5'>庫</b>的<b class='flag-5'>stm32</b>f411re的<b class='flag-5'>GPIO</b>輸出模式下電平的讀取

    STM32F1xx HAL中文版——GPIO

    第一次寫博客,也是第一次翻譯英文文檔,因?yàn)榫W(wǎng)上都沒找到hal固件的文檔,索性自己花了半天翻譯了,之后將繼續(xù)更新其他外設(shè)20 HAL GPIO Generic Driver20.1
    發(fā)表于 12-04 18:36 ?0次下載
    <b class='flag-5'>STM32</b>F1xx <b class='flag-5'>HAL</b><b class='flag-5'>庫</b>中文版——<b class='flag-5'>GPIO</b>篇

    HALGPIO八種工作模式

    眾所周知,STM32GPIO的工作模式有八種,但是打開HAL發(fā)現(xiàn),有12中可以供自己設(shè)置。先不要懵,下面解釋一下這12種工作模式的區(qū)別。實(shí)際上這12種是包含在通用的8種工作模式之中
    發(fā)表于 12-05 13:06 ?8次下載
    <b class='flag-5'>HAL</b><b class='flag-5'>庫</b>的<b class='flag-5'>GPIO</b>八種工作模式

    STM32】標(biāo)準(zhǔn)HAL對照學(xué)習(xí)教程三--使用庫函數(shù)配置GPIO點(diǎn)亮LED燈

    STM32】標(biāo)準(zhǔn)HAL對照學(xué)習(xí)教程三--使用庫函數(shù)配置GPIO點(diǎn)亮LED燈一、前言二、準(zhǔn)備工作三、LED硬件電路四、使用標(biāo)準(zhǔn)
    發(fā)表于 12-05 14:06 ?15次下載
    【<b class='flag-5'>STM32</b>】標(biāo)準(zhǔn)<b class='flag-5'>庫</b>與<b class='flag-5'>HAL</b><b class='flag-5'>庫</b>對照學(xué)習(xí)教程三--使用庫函數(shù)配置<b class='flag-5'>GPIO</b>點(diǎn)亮LED燈

    00_STM32F4學(xué)習(xí)_HAL_GPIO函數(shù)

    00_STM32F4學(xué)習(xí)_HAL_GPIO函數(shù)最近重學(xué)STM32,打算從HAL
    發(fā)表于 12-05 14:21 ?12次下載
    00_<b class='flag-5'>STM32</b>F4學(xué)習(xí)_<b class='flag-5'>HAL</b><b class='flag-5'>庫</b>_<b class='flag-5'>GPIO</b>函數(shù)

    STM32 CubeMX+HAL基本操作

    STM32 CubeMX+HAL基本操作
    發(fā)表于 12-07 11:21 ?50次下載
    <b class='flag-5'>STM32</b> CubeMX+<b class='flag-5'>HAL</b><b class='flag-5'>庫</b>基本操作

    STM32】標(biāo)準(zhǔn)HAL對照學(xué)習(xí)教程特別篇--GPIO詳講

    1、GPIO的基本構(gòu)成2、GPIO八種模式分析五、HAL與標(biāo)準(zhǔn)GPIO配置結(jié)構(gòu)體對比1、標(biāo)
    發(fā)表于 01-13 16:12 ?12次下載
    【<b class='flag-5'>STM32</b>】標(biāo)準(zhǔn)<b class='flag-5'>庫</b>與<b class='flag-5'>HAL</b><b class='flag-5'>庫</b>對照學(xué)習(xí)教程特別篇--<b class='flag-5'>GPIO</b>詳講

    使用LL開發(fā)STM32GPIO口與外部中斷

    文章目錄目的輸出與控制輸入與端口值讀取外部中斷總結(jié)目的GPIO口使用是單片機(jī)開發(fā)中最簡單的一塊,STM32GPIO口無論是使用HAL
    發(fā)表于 01-13 16:13 ?13次下載
    使用LL<b class='flag-5'>庫</b>開發(fā)<b class='flag-5'>STM32</b>:<b class='flag-5'>GPIO</b>口與外部中斷

    stm32 hal資料分享

    stm32 hal資料分享
    發(fā)表于 11-03 16:17 ?120次下載

    STM32 HAL串口收發(fā)如何使用

    使用 STM32CubeMX 做好初始化,就可以直接使用了。 但是最近在某些產(chǎn)品上使用串口同時收發(fā)的時候,發(fā)現(xiàn)有時候串口會收不到數(shù)據(jù)了,但是發(fā)送正常,而且這個問題再數(shù)據(jù)量大的時候很容易出現(xiàn),于是乎進(jìn)行了好幾天的問題測試…… 一、 HAL
    的頭像 發(fā)表于 06-22 10:38 ?6224次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>HAL</b><b class='flag-5'>庫</b>串口收發(fā)如何使用

    STM32 HAL的功能和使用方法 STM32 HAL和標(biāo)準(zhǔn)的區(qū)別

    HAL(Hardware Abstraction Layer)是指硬件抽象層,是一種封裝底層硬件接口驅(qū)動的編程。在嵌入式系統(tǒng)中,HAL可以更加方便地實(shí)現(xiàn)硬件
    發(fā)表于 08-08 18:21 ?4363次閱讀

    STM32 HAL串口收發(fā)是如何使用的?

    STM32 HAL串口收發(fā)是如何使用的? STM32是一款高性能的微控制器,它擁有廣泛的應(yīng)用領(lǐng)域,其中包括了各種通訊應(yīng)用,如UART串口通
    的頭像 發(fā)表于 10-26 17:42 ?1221次閱讀

    stm32f1如何將外部中斷關(guān)掉hal

    STM32F1系列微控制器是STMicroelectronics制造的32位ARM Cortex-M3內(nèi)核的嵌入式微控制器系列。該系列采用了HAL
    的頭像 發(fā)表于 12-22 13:52 ?3390次閱讀

    HAL的函數(shù)調(diào)用示例

    HAL(Hardware Abstraction Layer,硬件抽象層)STM32等微控制器中常用的,它為開發(fā)者提供了訪問和
    的頭像 發(fā)表于 12-02 14:01 ?313次閱讀
    RM新时代网站-首页