原理简述:
每个按键都接了一个 10K 的上拉电阻,当按键没有按下时,IO 上的电平为高;当按键按下时,IO 上的电平为低。因此,在使用循环检测时为检测低电平,在中断时,检测的是下降沿。

构建底层架构:
![]()

程序实现:
使用if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)即可判断按键是否按下。为了操作便捷,可以使用宏定义(#define)的方式将
HAL_GPIO_ReadPin(GPIOx, GPIO_PIN_x)定义为 Kx 的方式。
#define k1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)
#define k2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)
#define k3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)

这篇博客详细介绍了蓝桥杯G4比赛中按键检测的原理,包括按键通过10K上拉电阻连接,未按下时IO电平为高,按下时为低。博主讲解了如何构建底层架构,并提供了使用HAL_GPIO_ReadPin函数判断按键状态的程序实现,以及宏定义简化操作的方法。
最低0.47元/天 解锁文章
2818

被折叠的 条评论
为什么被折叠?



