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

    文章

    6812

    浏览量

    147652
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3431

    浏览量

    128225
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348809
  • GPIO
    +关注

    关注

    16

    文章

    1135

    浏览量

    50580
  • HAL库
    +关注

    关注

    1

    文章

    112

    浏览量

    5881

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

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

收藏 人收藏

    评论

    相关推荐

    STM32 HAL编程实例教程下载

    很好的一本STM32 HAL编程实例PDF教程,是STM32F103系列的,理论上STM32
    发表于 07-06 03:43

    HAL中如何操作控制GPIO的输出

    文章目录前言主程序GPIORCCsystick前言本文以上篇博文构建的项目为历程,讲解在HAL中如何操作控制GPIO的输出,以及STM32
    发表于 08-10 06:44

    HALGPIO中断stm32CubeIDE所用版本

    HALGPIO中断stm32CubeIDE所用版本:1.0.2固件包:f1 1.8.0测试平台st
    发表于 08-13 07:06

    STM32 HAL概述

    STM32HAL概述本文本是我对我自己平日里使用STM32的总结,结合了网上和自己的理解,方便自己以后回顾学习。只包含在学习过程有用到的。1.GPIO(1)
    发表于 08-19 06:05

    stm32 HALFlash该如何去操作

    stm32f1xx_hal_flash.cstm32f1xx_hal_flash_ex.c代码实例目录stm32hal确实提供有关fla
    发表于 08-19 06:26

    如何对基于HALGPIO进行初始化呢

    如何对基于HALGPIO进行初始化呢?有哪些步骤?
    发表于 11-25 09:08

    求大佬分享STM32L051使用HAL操作实例

    求大佬分享STM32L051使用HAL操作实例
    发表于 11-26 06:47

    如何对基于HALGPIO进行配置呢

    GPIO是什么?GPIO有哪几种工作模式?如何对基于HALGPIO进行配置呢?
    发表于 01-19 06:47

    如何使用STM32F1xx HALgpio

    如何使用STM32F1xx HALgpio
    发表于 02-08 07:19

    详细对STM32F103ZE的GPIO进行讲解

    1、GPIO的基本构成2、GPIO八种模式分析五、HAL与标准GPIO配置结构体对比1、标
    发表于 02-28 07:47

    如何使用GPIO HAL控制的片选引脚?

    我在 SPI 连接方面遇到问题。我的问题似乎是使用 GPIO HAL 控制的片选引脚。芯片选择被拉低的时间比预期的要长,因此我无法正确读取发送的数据。我知道可用的 NSS 功能,但我
    发表于 12-13 06:00

    STM32F1xx HAL库中文版——GPIO

    GPIO固件驱动寄存器结构体20.1.1 GPIO_InitTypeDefGPIO_InitTypeDef被定义在 stm32l5xx_hal_gpio.h 这个头文件中数据域• uint32_t...
    发表于 12-04 18:36 0次下载
    <b class='flag-5'>STM32</b>F1xx <b class='flag-5'>HAL</b>库中文版——<b class='flag-5'>GPIO</b>篇

    STM32CubeMX实例教程一——跑马灯实验

    STM32CubeMX实例教程一——跑马灯实验本章节将利用STM32CubeMX和Keil5协同开发,实现跑马灯。实现方法涵盖:GPIO电平输出的
    发表于 12-05 10:51 11次下载
    一 <b class='flag-5'>STM32</b>CubeMX<b class='flag-5'>实例</b>教程一——跑马灯实验

    00_STM32F4学习_HAL库_GPIO函数

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

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

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