0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用STM32 HAL库进行GPIO控制的实例

嵌入式学习站 来源:嵌入式学习站 2023-12-21 15:22 次阅读

01 介绍

在基于STM32微控制器嵌入式系统开发中,GPIO(GeneralPurposeInput/Output)控制是其中最基本、最常见的操作之一。通过使用STM32的HAL库,可以轻松地对GPIO进行配置和控制。本文将演示如何使用STM32HAL库进行GPIO控制,并提供一个简单的LED控制的实例。

02 初始化GPIO

2.1选择合适的引脚

在进行GPIO控制前,首先需要选择合适的引脚来连接外部设备,例如LED或按钮。以STM32F4系列微控制器为例,以下是选择引脚的方式:

```c

//选择要使用的GPIO引脚

#defineLED_PINGPIO_PIN_13

#defineLED_GPIO_PORTGPIOC

```

2.2GPIO初始化配置

在使用HAL库进行GPIO控制前,需要对GPIO进行初始化配置。以下是一个典型的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(对应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`函数实现了对LED引脚的输出电平控制,从而实现LED的闪烁效果。

3.2控制GPIO输入状态

可以通过HAL库获取GPIO引脚的输入状态。以下是一个读取按钮状态的例子:

```c

//读取按钮状态

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

//按钮被按下

}else{

//按钮未被按下

}

```

04 中断控制

通过HAL库可以方便地配置GPIO中断,并实现相应的中断处理函数。以下是一个简单的中断配置的例子:

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中断处理函数

```c

voidEXTI0_IRQHandler(void)

{

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);

}

voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin)

{

//处理GPIO中断

}

```

05 总结

通过本文的介绍,您应当对如何使用STM32HAL库进行GPIO控制有了初步的了解。合理配置并控制GPIO,可以实现对外部设备(如LED、按钮等)进行有效的控制和交互,为嵌入式系统的开发提供了基础支持。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7482

    浏览量

    151015
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3563

    浏览量

    129204
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354706
  • GPIO
    +关注

    关注

    16

    文章

    1196

    浏览量

    51897
  • HAL库
    +关注

    关注

    1

    文章

    114

    浏览量

    6168

原文标题:使用STM32 HAL库进行GPIO控制的实例

文章出处:【微信号:嵌入式学习站,微信公众号:嵌入式学习站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    stm32单片机基于hal对对GPIO的操作

    */HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)/*io口电平取反*/HAL_GPIO_TogglePin(
    发表于 11-26 20:06 1次下载
    <b class='flag-5'>stm32</b>单片机基于<b class='flag-5'>hal</b><b class='flag-5'>库</b>对对<b class='flag-5'>GPIO</b>的操作

    基于halstm32f411re的GPIO输出模式下电平的读取

    基于halstm32f411re的GPIO输出模式下电平的读取1.硬件的配置对GPIO的参数配置首先需要创建一个结构体指针:
    发表于 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

    第一次写博客,也是第一次翻译英文文档,因为网上都没找到hal固件的文档,索性自己花了半天翻译了,之后将继续更新其他外设20 HAL GPIO Generic Driver20.1
    发表于 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发现,有12中可以供自己设置。先不要懵,下面解释一下这12种工作模式的区别。实际上这12种是包含在通用的8种工作模式之中
    发表于 12-05 13:06 8次下载
    <b class='flag-5'>HAL</b><b class='flag-5'>库</b>的<b class='flag-5'>GPIO</b>八种工作模式

    STM32】标准HAL对照学习教程三--使用库函数配置GPIO点亮LED灯

    STM32】标准HAL对照学习教程三--使用库函数配置GPIO点亮LED灯一、前言二、准备工作三、LED硬件电路四、使用标准
    发表于 12-05 14:06 15次下载
    【<b class='flag-5'>STM32</b>】标准<b class='flag-5'>库</b>与<b class='flag-5'>HAL</b><b class='flag-5'>库</b>对照学习教程三--使用库函数配置<b class='flag-5'>GPIO</b>点亮LED灯

    00_STM32F4学习_HAL_GPIO函数

    00_STM32F4学习_HAL_GPIO函数最近重学STM32,打算从HAL
    发表于 12-05 14:21 12次下载
    00_<b class='flag-5'>STM32</b>F4学习_<b class='flag-5'>HAL</b><b class='flag-5'>库</b>_<b class='flag-5'>GPIO</b>函数

    STM32 CubeMX+HAL基本操作

    STM32 CubeMX+HAL基本操作
    发表于 12-07 11:21 50次下载
    <b class='flag-5'>STM32</b> CubeMX+<b class='flag-5'>HAL</b><b class='flag-5'>库</b>基本操作

    STM32】标准HAL对照学习教程特别篇--GPIO详讲

    1、GPIO的基本构成2、GPIO八种模式分析五、HAL与标准GPIO配置结构体对比1、标
    发表于 01-13 16:12 12次下载
    【<b class='flag-5'>STM32</b>】标准<b class='flag-5'>库</b>与<b class='flag-5'>HAL</b><b class='flag-5'>库</b>对照学习教程特别篇--<b class='flag-5'>GPIO</b>详讲

    使用LL开发STM32GPIO口与外部中断

    文章目录目的输出与控制输入与端口值读取外部中断总结目的GPIO口使用是单片机开发中最简单的一块,STM32GPIO口无论是使用HAL
    发表于 01-13 16:13 13次下载
    使用LL<b class='flag-5'>库</b>开发<b class='flag-5'>STM32</b>:<b class='flag-5'>GPIO</b>口与外部中断

    STM32HAL微秒延时(μs)

    STM32HAL微秒(μs)延时
    发表于 01-18 10:39 48次下载
    <b class='flag-5'>STM32HAL</b><b class='flag-5'>库</b>微秒延时(μs)

    stm32 hal资料分享

    stm32 hal资料分享
    发表于 11-03 16:17 119次下载

    STM32 HAL串口收发如何使用

    使用 STM32CubeMX 做好初始化,就可以直接使用了。 但是最近在某些产品上使用串口同时收发的时候,发现有时候串口会收不到数据了,但是发送正常,而且这个问题再数据量大的时候很容易出现,于是乎进行了好几天的问题测试…… 一、 HAL
    的头像 发表于 06-22 10:38 5962次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>HAL</b><b class='flag-5'>库</b>串口收发如何使用

    STM32 HAL的功能和使用方法 STM32 HAL和标准的区别

    HAL(Hardware Abstraction Layer)是指硬件抽象层,是一种封装底层硬件接口驱动的编程。在嵌入式系统中,HAL可以更加方便地实现硬件
    发表于 08-08 18:21 4095次阅读

    STM32 HAL串口收发是如何使用的?

    STM32 HAL串口收发是如何使用的? STM32是一款高性能的微控制器,它拥有广泛的应用领域,其中包括了各种通讯应用,如UART串口通
    的头像 发表于 10-26 17:42 1168次阅读

    stm32f1如何将外部中断关掉hal

    STM32F1系列微控制器是STMicroelectronics制造的32位ARM Cortex-M3内核的嵌入式微控制器系列。该系列采用了HAL
    的头像 发表于 12-22 13:52 3189次阅读