欢迎光临散文网 会员登陆 & 注册

STM32CubeMX+HAL库学习之三第二个实验:按键输入

2023-04-25 23:06 作者:棒棒x  | 我要投稿

    上面我们已经学会了如何通过引脚输出电平。既然我们已经学会输出,那接下来就是学怎么接受外界的电平输入。接下来我们通过检测按键输入这一个例子来演示一下如何获得引脚的外部电平输入。

1. 选择所需要输入的引脚

通过查询核心板的原理图,我们知道开发板上的K0按键对应了STM32的PA0引脚,我们将其设置为GPIO_Input(即输入模式)即可。同时保留上一个实验中的LED输出,用以观察按下按键产生的效果。

原理图按键部分

 

引脚设置

 

2.调整输入输出设置

LED灯的输出,仍然按照上一个工程的设置即可。而对于输入引脚的设置,则有三种选择:No pull-up and No pull-down(针脚不上下拉)  Pull-up(上拉)  Pull-down(下拉)。这里的选择代表了针脚的电平设置。例如我们选择了上拉,则针脚就会具备一个高电平,检测不了外界的高电平,因为没有电平差,而可以检测外界的低电平,下拉也同理。不上下拉状态理论上可以检测到高低电平。这里我们只用检测低电平,同时为了减轻外界干扰,我们选择上拉。

引脚输入设置

 

配置完成,选择生成代码即可。

Keil5中的操作:

这次,我们同样也在主函数的无限循环中编写业务代码。上一章讲过,HAL_GPIO_ReadPin是用于读取引脚电平的,所以我们这里直接使用这个函数,其返回值是引脚的电平GPIO_PIN_RESET或者GPIO_PIN_SET。从原理图我们知道当按键按下的时候,其引脚会被接地,处于低电平。所以在if语句中我们选择当其检测到低电平时

,自动执行下面的函数,用以处理按键按下的情况。而while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_RESET);语句的作用是判断按键是否已经被松开,用以消除按下按键时的抖动,以免影响检测效果。当我们检测到按键被按下,并且已经松开的时候,便会执行HAL_GPIO_TogglePin函数,上面我们讲过,这个函数的作用是翻转该引脚的电平,即高低电平互换。此处的作用是改变LED灯的亮暗状态。即,整个代码的实现效果应该是,当按下按键后,LED灯的亮暗状态将会改变,从亮到熄灭或者重新亮起。

主函数

 

编译无误后通过FlyMcu烧录至核心板中即可。

实验现象:

实验现象一
实验现象二

 

按下按键之后,LED灯的亮灭状态发生改变。


STM32CubeMX+HAL库学习之三第二个实验:按键输入的评论 (共 条)

分享到微博请遵守国家法律