嵌入式-STM32-GPIO输出和输入的HAL库函数

本文详细介绍了GPIO的HAL库函数,包括设置和改变引脚电平、电平翻转以及读取引脚状态。在按键检测方面,阐述了按键的工作原理、消抖处理,并提供了宏定义简化代码的示例。通过检测按键电平变化,实现按键按下后的功能跳转。此外,还提及了霸道ZETX系列硬件上的消抖设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GPIO输出HAL库函数,设定或改变当前引脚电平值

  1. 电平输出HAL函数,返回空
HAL_GPIO_WritePin(GPIO_TypeDef* GPIOX,Uint16_t GPIO_Pin,GPIO_PinState pinstate);

其中:
GPIOX代表目标引脚的端口号,例如GPIOB。
GPIO_Pin代表目标引脚的引脚号,例如GPIO_Pin_5。
pinstate代表当前引脚的高低电平,高电平(GPIO_PIN_SET)、低电平(GPIO_PIN_RESET)。

  1. 电平翻转HAL函数,返回空
HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOX,Uint16_t GPIO_Pin);

GPIO输入HAL库函数,检测当前引脚电平:返回值是0或1,即高电平(GPIO_PIN_SET)、低电平(GPIO_PIN_RESET)。

HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOX,Uint16_t GPIO_Pin);

可用if(xxx==1){}语句来执行按键按下后跳转的功能。

按键扫描的原理
按键的两个引脚的一端通过下拉电阻拉倒低电平,另一端接着电源。当按下开关时,输入引脚为高电平。通过反复读取按键状态是否为高电平判断按键是否被触发。(霸道zet6)在这里插入图片描述
按键消抖
因霸道ZETX系列,带上拉电容物理消抖,所以不用软件消抖。
按键检测到高电平不一定是按键被按下,可能是干扰信号。通过先检测到按键按下的信号,然后隔一定时延再次检测,若还是按键被按下状态则认为是按键被按下,否则认为是干扰信号。

宏定义
使用自定义关键词(满足驼峰命名法)替代具体函数使得主函数更加简洁,宏定义可在.h文件中也可在.c文件中。例如:使用KeyState代替端口状态监测。
语法:
#define 驼峰变量名 功能函数

#define KeyState1 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
#define KeyState2 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值