正点原子STM32F103精英版+HAL库实现4×4矩阵按键检测

这篇博客介绍了如何利用STM32F103微控制器的HAL库,通过逐行逐列扫描法实现4×4矩阵按键的检测。作者分享了自己的学习过程和实践经验,包括端口选择、配置、以及关键函数的编写,旨在帮助初学者理解并应用这一技术。
摘要由CSDN通过智能技术生成

首先声明,本人小白一枚,所做的工作都是借鉴网上的大佬+自己摸索,但是都是亲测实际有效的。

因为所需要的功能开发板自带按键不够用,所以购买了4×4矩阵按键,当时购买的时候以为一个按键对应一个IO口,后来发现不是这样的,会浪费太多的IO口,4×4矩阵键盘用8个IO口控制16个按键。为了能够用起这块按键,自己到网上学习了很多教程,有很多大佬提供了自己的程序,我自己看着比较简便舒服易懂的是神仙边边发布的按键程序,学习了很多。

 为了帮更多的小白朋友,把做的流程详细说一说。

首先说一下原理,一般情况下是用逐行逐列扫描法(反线法我没看不会)。

逐行逐列扫描法原理

 如图所示,F3.0~F3.3连接4行,F3.4~F3.7连接四列,每行每列都有一个按键连接,当某个按键被按下,它所对应的行和列就会被接通。比如说,我们将四行设置成上拉输入状态,四列设置成推挽输出,这个时候读F3.0~F3.3的引脚状态应该全是高电平,然后我们按下了F按键,此时我们把每一列对应的引脚挨个输出低电平,再读F3.0~F3.3的引脚状态,就会发现F3.0的引脚变为低电平了(因为F按键是连接F3.0引脚),就可以定位到是哪一行的按键被按下。之后再根据是在哪一列扫描时发生变化的,就可以定位出按键所在列。

端口的选择和配置

了解原理之后,我们要开始做了。需要选择8个IO口,如果用的是现成的开发板,比如原子或者野火,一定要记住,IO口的选择非常重要!一定尽量选择没有链接外设的空闲端口!我一开始就掉坑里去了,根据别人的代码选择了端口,结果这个端口有外部下拉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值