STM32CubMX自学笔记(二)按键&LED灯

STM32CubMX自学笔记(二)---按键&LED灯

前节回顾

上节主要介绍了如何配置一个基础的工程以及如何翻转LED,本节内容是上节内容的延续,在LED灯的基础上,再添加按键部分,用按键控制LED的亮灭。

系统工程创建

打开上节配置完毕的系统工程,我们查看原理图。找到按键接在哪些引脚下面。
在这里插入图片描述
这里我们用到的按键是KEY0,LEY1所以我们要在工程中使能2个GPIO,将PE3,PE4使能,并且配置为输入模式。
在这里插入图片描述点击GPIO,配置PE3,PE4具体特性,选择输入,上拉模式(因为根据原理图,按键的另外一端是接地的,所以低电平有效,当我们按下按键的时候就是低电平,电路导通,按键触发),并且进行Label说明,在这里进行说明之后,生成的文件会自动对GPIO进行宏定义。
在这里插入图片描述
由此,我们整个系统就配置完毕了,紧接着,我们打开MDK-ARM的keil进行代码编写。

系统代码编写

main.c添加如下代码

    /* USER CODE BEGIN 3 */
		if(HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin)==0)//读取引脚电平,若为低低电平则语句有效
		{
			HAL_Delay(200);//延时消抖
			if(HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin)==0)
			HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET);//写入引脚电平
		}
			if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)==0)
		{
			HAL_Delay(200);
			if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)==0)
			HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转LED0电平
			HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);//翻转LED1电平
		}
		

注释:这里有两个小细节。第一个细节,用了两遍if判断语句是为了延时消抖,我们知道当按键按下时,会产生波动并且产生的效果很差,为了确定是人为按下的按键,我们用延时函数。
第二个细节:用到了延时函数的消抖,我之前配置延时函数消抖时间为500,也就是0.5S,瞬间按下按键没反应,程序查找半天,没有发现问题,后来对照程序,发现是延时函数设定的时间过长,要按下0.5S才会有反应,因此,设置按键控制LED灯的瞬时亮灭,延时时间不得过长,这里选择的是200ms,也不能过短(如10ms),否则一直检测到低电平,无法达到预期效果。

下载验证

将代码下载到开发板,效果如程序所示,实验完成。

结语

本节介绍了按键&LED灯联合实验,通过开发板上的按键来控制LED的亮灭。这里用到了三个GPIO函数分别是
HAL_GPIO_ReadPin(); HAL_GPIO_WritePin(); HAL_GPIO_TogglePin()
读取GPIO电平,写入GPIO电平以及翻转GPIO电平。实验符合预期效果。
码字不易,点个赞再走吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值