按键输入控制LED灯亮灭-基于STM32F103ZET6_开发板

本文介绍了如何对GPIO进行按键(如KEY0~KEY2上拉输入,KEY_UP下拉输入)初始化,以及如何通过模块化的按键函数处理按键输入。提到在主函数中使用按键触发LED灯操作的问题,以及为解决响应延迟引入外部中断的应用。

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

按键初始化过程和LED初始化过程大同小异,只需要参照电路图把按键的输入模式配置成上拉输入还是下拉输入就行。

根据我的开发板原理图需要将KEY0~KEY2的GPIO_Mode配置成上拉输入,将KEY_UP的GPIO_Mode配置成下拉输入。

按键初始化

写一个传递按键的函数,确认是哪个按键按下。将其模块化也更好移植代码

if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 1)        //读取GPIOA端口0的电平

这里判断GPIOA端口0的电平恒为1是因为在原理图上KEY_UP是接VCC所以按键按下的时候GPIOA_Pin0读到的电平为高电平。

主函数程序

在第七行定义的Key是为了接收从按键传递函数传递的返回值,在while循环里面通过if判断来实现相应按键按下进行的的操作点亮相应的LED灯。

定义M值是为了在while循环里面再套一个可控循环,注释掉的if(Key == 4)里面就是可控循环但需要一个按键来让其退出可控循环。

不管是在大循环里判断哪个按键是否按下还是可控循环里,利用按键退出循环,都面临着在代码多的时候响应不及时的情况。为此,通过外部中断来响应使得响应更快,在下一章将使用外部中断来控制蜂鸣器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值