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

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

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

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

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

逐行逐列扫描法原理

正点原子STM32F103精英版+HAL库实现4×4矩阵按键检测_第1张图片

 如图所示,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口的选择非常重要!一定尽量选择

你可能感兴趣的:(矩阵键盘,stm32,单片机,嵌入式硬件)