[STM32F1] 给大家分享一个按键消抖程序,很好用

[复制链接]
21430|57
 楼主| 铜牌之路 发表于 2015-6-22 16:04 | 显示全部楼层

好的,我先看看
 楼主| 铜牌之路 发表于 2015-6-22 16:05 | 显示全部楼层
nuaabob 发表于 2015-6-21 20:11
一看软件延时就只能呵呵了。

软件延时不好?用硬件?
 楼主| 铜牌之路 发表于 2015-6-22 16:05 | 显示全部楼层

简单粗暴:lol
insignal 发表于 2015-6-22 17:01 来自手机 | 显示全部楼层
本帖最后由 insignal 于 2015-6-22 17:09 编辑

这个代码判断下降沿有问题
能判断到要靠运气

不过延时去抖动 看来大家都看不起
好像太简单很丢面子
不过加个定时器也有点太容易了,一定
要外接滤波 再用比较器整整形
固件再用定时器 再加多点采样 再用卡尔曼滤波  最后得到  卧槽 这真的是一次按键
longquanshuang 发表于 2015-6-22 20:49 | 显示全部楼层
都是后台中断扫描的

一个delay说明刚入门
ticomi 发表于 2015-6-23 07:59 | 显示全部楼层
铜牌之路 发表于 2015-6-22 16:03
给个更好的方法,我学习学习

网上有很多例程,你可以参考。我的设计是采用硬件和软件结合的方式,不需要延时,通过算法来确保按键正确并响应其操作。
powerxia 发表于 2015-6-23 08:43 | 显示全部楼层
实际做项目时这种是没办法用的,LZ可以去找一下马潮的书看下状态机
clnbcl 发表于 2015-6-23 08:51 | 显示全部楼层
这程序压根就是初学者才会这样写程序的。

按键防抖:谁会写延时10ms呢?  一般要定时扫描2次确认就好。
 楼主| 铜牌之路 发表于 2015-6-23 15:39 | 显示全部楼层
powerxia 发表于 2015-6-23 08:43
实际做项目时这种是没办法用的,LZ可以去找一下马潮的书看下状态机

好的 谢谢
734774645 发表于 2015-6-23 15:42 | 显示全部楼层
这有意思??应该用中断,然后加松手检测。
734774645 发表于 2015-6-23 15:42 | 显示全部楼层
楼主这个就是个常规用法而已,看楼主激动的
yiyigirl2014 发表于 2015-6-23 20:23 | 显示全部楼层
            if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_14)==1)
                               {   
                               delay_ms(100);
                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_14)==0) // 相当于下降沿
非常好。
734774645 发表于 2015-6-23 21:04 | 显示全部楼层
果然好用的受不了,先屯起来。
hudi008 发表于 2015-6-23 22:07 | 显示全部楼层
谢谢分享。
598330983 发表于 2015-6-25 22:03 来自手机 | 显示全部楼层
好用的是自己研究出来的
Progrime 发表于 2015-6-27 08:53 | 显示全部楼层
//我的做法,发来大家呵呵一下
//定时中断,中断服务程序:
static u32 key_A14 = 0; //static u16 key_A14 = 0;
key_A14 <<= 1; //如果有抖动,必定不全为0或1
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_14)==1) {
  key_A14 |= 1;
}

//应用程序:全为1表示没有抖动了
if(key_A14==0xFFFFFFFF){//if(key_A14==0xFFFF){
  ...
}
玛尼玛尼哄 发表于 2015-6-27 09:48 | 显示全部楼层

哈哈,刚学。但是觉得这个很简单
aichixiaobaicai 发表于 2015-6-27 10:10 | 显示全部楼层
铜牌之路 发表于 2015-6-22 16:04
就为了判断下降沿那一个地方

会不会,有时候判断不出来呢????
天灵灵地灵灵 发表于 2015-6-27 10:18 | 显示全部楼层

用延时,实不可取了!!
wlzeagle 发表于 2015-6-27 11:43 | 显示全部楼层
这样的代码实验用的吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部