OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12662|回复: 10

按键支持连续按,和不支持连续按是指长按与不常按的效果么?

[复制链接]

6

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-4-11
在线时间
0 小时
发表于 2015-4-11 14:51:30 | 显示全部楼层 |阅读模式
5金钱
按键支持连续按,和不支持连续按是指长按与不常按的效果么?怎么感觉长按与不长按的效果都是一样的。

最佳答案

查看完整内容[请看2#楼]

代码那么简单,  试一下不就知道了
过你就像过马路!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2165

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5773
金钱
5773
注册时间
2013-11-22
在线时间
1211 小时
发表于 2015-4-11 14:51:31 | 显示全部楼层
代码那么简单,  试一下不就知道了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-4-11 14:51:31 | 显示全部楼层
长按的时候,每次都会返回按键键值。
不支持长按的时候,只会返回一次键值,然后必须松开,重新按下,才会返回键值。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11537
金钱
11537
注册时间
2014-4-1
在线时间
1314 小时
发表于 2015-4-11 18:34:02 | 显示全部楼层
猜的:

数字连续自动加一、向上蹦,或者只加一次。
回复

使用道具 举报

6

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-4-11
在线时间
0 小时
 楼主| 发表于 2015-4-11 22:48:51 | 显示全部楼层
试过了,效果都一样的,所以我就疑惑了,干嘛要设置这个,也有消抖了。
过你就像过马路!
回复

使用道具 举报

6

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-4-11
在线时间
0 小时
 楼主| 发表于 2015-4-12 09:15:39 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
好的,懂了
过你就像过马路!
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2020-2-21
在线时间
21 小时
发表于 2020-2-29 11:57:09 | 显示全部楼层
支持连续按就是在按的时候一直扫描,而不支持就是一直按的时候也就扫描一次。反映到原子哥的代码就是支持连续按模式下连续按的时候会不停的进行led的反转,但是由于没有设置延迟时间,并不能观察到明显的现象,只能得到最后的状态是不确定的,而不支持连续按模式则是无论怎么按只是扫描一次。可以优化代码来观察到这两个的明显区别,修改如下。
case KEY2_PRESS:        //控制LED0翻转
                                        LED0=!LED0;
                                        delay_ms(1000);
                                        break;
                                case KEY1_PRESS:        //控制LED1翻转         
                                        LED1=!LED1;
                                delay_ms(1000);
                                        break;
                                case KEY0_PRESS:        //同时控制LED0,LED1翻转
                                        LED0=!LED0;
                                        LED1=!LED1;
                                delay_ms(1000);
                                        break;
                                case KEY_UP_PRESS:        //控制蜂鸣器
                                        BEEP=!BEEP;
                                        break;
在mode=1既支持连按状态下,连续按一秒会发生led状态的反转,而mode=0则不会
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2020-2-22
在线时间
27 小时
发表于 2020-3-11 15:17:44 | 显示全部楼层
a791714449 发表于 2020-2-29 11:57
支持连续按就是在按的时候一直扫描,而不支持就是一直按的时候也就扫描一次。反映到原子哥的代码就是支持连 ...

支持连续按的时候,多长时间扫描一次怎么看
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2020-2-21
在线时间
21 小时
发表于 2020-3-14 15:48:30 | 显示全部楼层
大漠de胡杨 发表于 2020-3-11 15:17
支持连续按的时候,多长时间扫描一次怎么看

可以自己配置延时的
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2020-3-9
在线时间
19 小时
发表于 2020-3-17 12:41:17 | 显示全部楼层
不错,不错
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2021-5-10
在线时间
3 小时
发表于 2021-5-13 21:06:27 | 显示全部楼层
a791714449 发表于 2020-2-29 11:57
支持连续按就是在按的时候一直扫描,而不支持就是一直按的时候也就扫描一次。反映到原子哥的代码就是支持连 ...

没有发现连续长按的时候有状态翻转啊

key=KEY_Scan(0);        //得到键值
                   if(key)
                {                                                  
                        switch(key)
                        {                                 
                                case WKUP_PRES:        //控制蜂鸣器
                                        BEEP=!BEEP;
                                        delay_ms(1000);//
                                        break;
                                case KEY2_PRES:        //控制LED0翻转
                                        LED0=!LED0;
                                delay_ms(1000);//
                                        break;
                                case KEY1_PRES:        //控制LED1翻转         
                                        LED1=!LED1;
                                delay_ms(1000);//
                                        break;
                                case KEY0_PRES:        //同时控制LED0,LED1翻转
                                        LED0=!LED0;
                                        LED1=!LED1;
                                delay_ms(1000);//
                                        break;
                        }
                }else delay_ms(10);
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 01:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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