野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19130|回复: 19

3*3矩阵键盘应用分享,测试可以正确运行

[复制链接]
发表于 2016-8-2 21:34:40 | 显示全部楼层 |阅读模式
在编写矩阵键盘扫描函数时,碰到如下几个问题:1、行列所用到的GPIO模式配置很重要;
2、所用的GPIO,在板子其他模块是否已经使用,会造成电平不正确(刚入手时,软硬件联调时,程序就死在等待按键松开的位置);
3、按键扫描流程:
                            ----->配置GPIO口------>判断按键是否按下-------->确定哪一个按键按下;

     使用的是通过串口打印出来键值;

STM32-矩阵键盘扫描.rar

4.1 MB, 下载次数: 396

代码还没有优化!

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2016-8-2 21:51:42 来自手机 | 显示全部楼层
cool,这个很多人需要,硬件具体是怎么样的也拍照上来看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-2 22:14:59 | 显示全部楼层
fire 发表于 2016-8-2 21:51
cool,这个很多人需要,硬件具体是怎么样的也拍照上来看看。

好的,明天到公司后,上传硬件连接图。
回复 支持 反对

使用道具 举报

发表于 2016-8-3 08:50:20 | 显示全部楼层
松手的时候你加个松手的while 检测  不就好了   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-3 08:53:24 | 显示全部楼层
本帖最后由 zerg 于 2016-8-3 09:01 编辑

C:\Users\Zerg\Desktop

硬件连接图示

硬件连接图示

串口打印效果

串口打印效果
回复 支持 反对

使用道具 举报

发表于 2016-8-3 09:13:54 | 显示全部楼层

此乃大神焉,神呼!!!
回复 支持 反对

使用道具 举报

发表于 2016-8-3 19:03:56 | 显示全部楼层
不错,有火哥的开源精神
回复 支持 反对

使用道具 举报

发表于 2016-8-3 19:04:11 | 显示全部楼层
资料收下,谢谢大神,有时间看看学习
回复 支持 反对

使用道具 举报

发表于 2016-8-3 19:05:08 | 显示全部楼层
COOL,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2016-8-8 12:25:35 | 显示全部楼层
如果管脚不连续的 你怎么判断呢。
回复 支持 反对

使用道具 举报

发表于 2016-8-8 14:32:09 | 显示全部楼层
a18270826679 发表于 2016-8-8 12:25
如果管脚不连续的 你怎么判断呢。

我又看到你了
回复 支持 反对

使用道具 举报

发表于 2016-8-8 15:05:35 | 显示全部楼层
a18270826679 发表于 2016-8-8 12:25
如果管脚不连续的 你怎么判断呢。

如果不连续,去骂设计硬件的工程师
回复 支持 反对

使用道具 举报

发表于 2016-8-8 19:44:43 | 显示全部楼层

我等下下班我也分享个键盘电路
回复 支持 反对

使用道具 举报

发表于 2016-8-9 13:03:13 | 显示全部楼层

是呀!你上次还没给我解决问题呢
回复 支持 反对

使用道具 举报

发表于 2016-8-9 14:51:15 | 显示全部楼层
随风 发表于 2016-8-8 15:05
如果不连续,去骂设计硬件的工程师

这都可以                        
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-9 15:27:25 | 显示全部楼层
a18270826679 发表于 2016-8-8 12:25
如果管脚不连续的 你怎么判断呢。

不连续的管脚,可以用函数读取管脚电平值,用位操作的方式,将不连续管脚的电平值,组合成一个无符号的字符变量就可以了;
uint8_t Key8=GPIO_ReadInputDataBit(GPIOx,GPIO_Pin_x);
uint8_t Key=(Key8<<8)|(Key7<<7)|....;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-9 15:28:36 | 显示全部楼层
随风 发表于 2016-8-8 15:05
如果不连续,去骂设计硬件的工程师

哈哈,这可以,IO够用,哪还要矩阵键盘;
回复 支持 反对

使用道具 举报

发表于 2016-8-23 11:57:00 | 显示全部楼层
本帖最后由 huangweida 于 2016-8-23 12:00 编辑
fire 发表于 2016-8-2 21:51
cool,这个很多人需要,硬件具体是怎么样的也拍照上来看看。

看了他的程序,消抖的时候,用了8ms去延时,我觉得这个程序写的最大bug了,这样会耗掉CPU,最好就是定时器中断扫描,之前我写的是4个独立按键的,使用状态机的方式来写按键,最近我也是在搞3*4矩阵键盘,应该也会采用状态机方式,到时候搞好分享出来。
回复 支持 反对

使用道具 举报

发表于 2016-8-23 11:58:46 | 显示全部楼层

楼主,尝试用定时器10ms去中断扫描程序,效果会更好,不要用软件延时8MS去消抖
回复 支持 反对

使用道具 举报

发表于 2016-8-24 16:11:16 | 显示全部楼层
占用那么多IO 为什么不同AD呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-29 16:09 , Processed in 0.061363 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表