STM32控制矩阵按键,HAL库,cubeMX配置

STM32控制矩阵按键,HAL库,cubeMX配置



前言

我使用的是STM32F103RCT6这款单片机,HAL库,使用cubeMX配置。

使用矩阵按键实现功能的方法为轮询法

cubeMX中的配置·

1.首先矩阵键盘原理图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5TKPCzRp-1655352433290)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220615163312205.png)]

2.实物图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qdK50ugy-1655352433292)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616113621657.png)]

按照矩阵键盘接法,16个按键需要8个io口,我选择了PC口的0~7号引脚,前四个依次接矩阵键盘的行,后四个依次接矩阵键盘的列;矩阵键盘的每一个按键都是接了两个io口,也就是一端必须是输出高电平或者低电平,另一端去检测是否是高电平或者低电平;所以只需要配置行线或者列线为输出,则另外一端就配置为输入检测。

3.cubeMX的配置图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-itrcFIVU-1655352433293)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616113915873.png)]

PC0-PC3配置为推挽输出低电平:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L3bGQemx-1655352433294)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616114116476.png)]

PC4~PC7配置为输入模式,上拉:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRDwBZnR-1655352433295)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616114219022.png)]

推挽输出(英语:Push–pull output)是一种使用一对选择性地从相连负载灌电流或者拉电流的器件的电路。它常常使用一对参数相同的功率三极管或MOSFET管,以推挽方式存在于电路中。

**开漏输出:**开漏输出就是不输出电压,控制输出低电平时引脚接地,控制输出高电平时引脚既不输出高电平,也不输出低电平,为高阻态。

PA4-PA7配置为外部中断,下降沿触发,上拉,之所以这样配置,是因为我们PA0-PA3配置的是输出低电平,所以我们需要先上拉,让他那个引脚默认输入高电平,只有按下按键,两引脚想通才会由高电平变为低电平,所以我们需要按下按键触发的话也就是由高到低的时候,也就是下降沿触发。

keil程序中的编写

首先创建一个key.c文件和一个key.h文件

key.c

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bU260TB5-1655352433296)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616115209288.png)]

GPIO->IDR和0xf7相与, 若是0xe7 则二进制位1110 0111,说明PC4变为了0,所以第一列的按键s1按下

注意PC7对应二进制数中的最高位 PC0对应最低位

后面以此类推


注意,可能出现有些行未扫描,有些行的按键按下没有通过串口返回信息
解决方法是,在每一行的扫描之前,将行所对应的引脚清空,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qmJkCfyW-1655352433297)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616115245044.png)]

key.h

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2asttusv-1655352433298)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616115908932.png)]

测试结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zTaiqdNV-1655352433299)(C:\Users\wangyin\AppData\Roaming\Typora\typora-user-images\image-20220616115331548.png)]

结果显示正确,成功运行

程序代码链接

https://download.youkuaiyun.com/download/cubejava/85656823
追求卓越,成功才会在不经意间追上你!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值