用STM32做矩阵键盘、自己理解的外部中断方式的几个问题。

刚才发错分类了。。首先我的小项目确不需要双击或者长按键等,只需要知道按下一次是什么就好。现在我中断里返回两个参数:更新键值标志位和键值存储位。但是这样我并没有感觉比扫描好... 刚才发错分类了。。首先我的小项目确不需要双击或者长按键等,只需要知道按下一次是什么就好。现在我中断里返回两个参数:更新键值标志位和键值存储位。但是这样我并没有感觉比扫描好在哪里,中断程序里还是需要延时消抖,而且我发现32的外部中断很敏感(没仔细看过数电不知道这怎么形容),抖动没消好就很容易重新进入,这甚至造成了我主程序里面的任务被打断;其次我在主程序里还是需要扫描键值更新标志位,我不感觉有多么节省资源,我想知道是我对中断键盘理解错了吗?难道需要在这个外部中断里或者开启其他的中断来处理按键相应事件操作?这不是不符合实时系统的原则了吗?而反过来如果是外部中断来标志更新,再在主程序里扫描,那和直接扫描有多少区别?优势在哪里?是不是总结之后就是键盘根本不需要通过中断方式扫描?我最近看了一些主程序里用定时器或者SYStick来检测键盘状态消抖的方式,我觉得不错,希望大神告诉我我该选择怎么处理键盘? 展开
 我来答
ATF144X
推荐于2016-05-13 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4611万
展开全部
EXTI是边沿触发的。
当你按下键时,肯定会出现抖动,那抖动一次就是一个边沿,自然会一次次的触发中断了。我以前也试验过,很不好使。
用systick扫描是一个办法,我用这个实现了线反转法扫描4X4的键盘矩阵。设置10ms中断一次,每次进中断首先检查有没有按键,如果没有就pass,如果有就先计个数再退出,重复三次操作确定都有按键(也就完成了消抖),然后翻转线路状态扫描一次确定行列位置,这样就确定键值了。
kahing23
2012-07-21 · TA获得超过1709个赞
知道小有建树答主
回答量:505
采纳率:100%
帮助的人:495万
展开全部
我觉得扫描方式比中断好。对每个键,定义一个字节用来消抖,每扫描一次就把键的0或1移位至这个字节,判断这个字节如果是0xff那么这个键被按下,如果0x00那么这个键未被按下,其它值不做操作,这种方法很简单,消抖效果也不错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友98235678f
2012-07-25 · 超过11用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:28.3万
展开全部
中断相应的及时性 是直接在中断程序进行处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式