STM32的HAL库开发系列 - GPIO基本函数

简介: STM32的HAL库开发系列 - GPIO基本函数

STM32的HAL库开发系列 - GPIO基本函数

STM32的GPIO(General Purpose Input/Output)是STM32微控制器的一种重要外设,它具有通用输入输出功能。STM32的GPIO可以用来控制外部设备的电平,如LED灯、按键、蜂鸣器等,也可以用来读取外部设备的电平,如温度传感器、光敏电阻等。

STM32的GPIO的配置和使用需要用到STM32的底层驱动,需要对STM32的外设寄存器进行操作。开发中常说的bsp,即Board Support Packet的缩写,翻译为板级支持包。在STM32的底层驱动中,需要先配置GPIO的工作模式、速率、推挽输出、开漏输出、复用功能等,然后才能进行GPIO的读写操作。在STM32的底层驱动中,还需要配置GPIO的中断功能,如中断优先级、中断类型等。

基本函数

STM32的GPIO具有高、中、低三种输出速率,高速输出速率可以达到50MHz,中速输出速率可以达到10MHz,低速输出速率可以达到2MHz。STM32的GPIO还具有推挽输出、开漏输出和复用功能,推挽输出可以提供更高的输出电流,开漏输出可以提供更低的输出电流,复用功能可以在输入和输出之间切换。

在应用层编程中,可以使用STM32的GPIO库函数进行GPIO的配置和使用,这样可以简化程序的复杂性。STM32的GPIO库函数可以提供高层次的接口,让用户只需要关注GPIO的功能,而不需要关注底层的实现细节。

void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init) 

这个函数主要用来初始化我们需要用到的引脚,设置其工作频率、工作模式、上下拉等参数。

使用CubeMX配置工程,所有参数在Cube中调配,函数自动在工程中生成。

void HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin)

将GPIO口恢复至默认状态,即各个寄存器复位时的值。

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

读取引脚的电平状态、函数返回值为0或1。

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

其中PinState 可选择GPIO_PIN_RESETGPIO_PIN_SET。GPIO_PIN_RESET为 0 ; GPIO_PIN_SET为 1

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

用于翻转某个GPIO引脚的电平状态。如果为0则变为1;如果为1则变为0。

/**
  * @brief  锁住引脚的电平状态
  * @param  GPIOx 
  * @param  GPIO_Pin 
  * @retval HAL_StatusTypeDef
  */
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

HAL_StatusTypeDef 包含4种状态 HAL_OKHAL_ERRORHAL_BUSYHAL_TIMEOUT

顾名思义,就是锁住某个引脚的电平状态。比如说一个管脚的当前状态是1,读管脚值使用锁定,当这个管脚电平变化时保持锁定时的值。

注意的是:一旦锁住后,就不能再修改,只有复位后才可以重新配置。

STM32的GPIO还具有中断功能,当GPIO口的电平发生变化时,可以产生中断,从而使得STM32微控制器能够及时响应外部设备的变化。STM32的GPIO还具有模拟输入功能,可以用来采集模拟信号,如模拟电压、模拟电流等。

STM32的GPIO是一种非常重要的外设,它具有高、中、低三种输出速率、推挽输出、开漏输出、复用功能、中断功能和模拟输入功能等优秀特性,是STM32微控制器的重要组成部分。使用STM32的GPIO可以提高系统的灵活性和可靠性。

目录
相关文章
|
4月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
714 0
|
1月前
【寄存器开发速成】半小时入门STM32寄存器开发(二)
【寄存器开发速成】半小时入门STM32寄存器开发(二)
|
1月前
|
芯片
【寄存器开发速成】半小时入门STM32寄存器开发(一)
【寄存器开发速成】半小时入门STM32寄存器开发(一)
|
4月前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
161 0
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
444 2
|
6月前
|
传感器
STM32标准库ADC和DMA知识点总结-1
STM32标准库ADC和DMA知识点总结
|
5月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
509 4
|
5月前
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
690 2
|
5月前
|
存储 数据采集 数据安全/隐私保护
使用STM32F103读取TF卡并模拟U盘:使用标准库实现
通过以上步骤,你可以实现用STM32F103将TF卡内容变成U盘进行读取。这种功能在数据采集、便携式存储设备等应用中非常有用。如果你有更多的需求,可以进一步扩展此项目,例如添加文件管理功能、加密存储等。希望这篇博客能帮到你,如果有任何问题,欢迎在评论区留言讨论!
236 1