[5]STM32按键输入实验-GPIO做输入

本文介绍STM32按键输入实验,包括两种按键模式:持续响应和仅响应一次,并通过硬件设计和程序设计详细阐述。实验中,按键控制蜂鸣器和LED灯的状态切换,涉及IO口初始化、时钟使能和按键模式检测函数的实现。

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

前言

STM32按键输入实验会把之前的LED灯和蜂鸣器的控制加入进来,通过按键来进行控制,是一个综合性比较高的实验。最后要实现的目的是:KEY_UP 控制蜂鸣器,按一次叫,再按一次停; KEY1 控制 DS1,按一次亮,再按一次灭; KEY0 则同时控制 DS0 和 DS1,按一次,他们的状态就翻转一次。除此之外还要弄清楚两种按键逻辑,一种是按了之后只触发一次,另一种是按下之后连续触发,在下面我会着重写一下这方面的内容。

硬件设计

在这里插入图片描述
我用的是正点原子的精英版,硬件设计如上图所示,如图可以看到WK_UP默认是低电平,按钮按下才是高电平。所以应该是下拉输入,反之KEY0和KEY1就应该是高电平,使用上拉输入。而KEY0,KEY1接入是PE3和PE4,WK_UP是PA0,等会也要对这几个端口时钟进行使能和初始化IO口,步骤同于之前的点亮LED灯。

两种按键模式程序设计

1.持续按下按钮持续响应

和电视机遥控板按钮一样,按下按钮之后它只一直响应(比如一直换台),直到你松开按钮之后它才停止响应,对于这种模式的程序,可以通过如下程序进行设计

u8 KEY_Scan(void)  //定义一个扫描函数,检测按钮是否按下,只需每隔一段时间调用这个函数即可检测按钮状态
{	   
	if(按钮按下)  //检测按钮是否按下
	{
		delay_ms(10);//去除抖动 
		if按钮确实按下)  //如果按钮确实按下
		return KEY0_PRES; //返回按钮按下进行控制的有效值
		}    
 	return 0;// 无按键按下,返回一个无效值,即不进行操作

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值