OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖
楼主: 心染红尘

?为什么有了if(mode)key_up=1; 这个语句 ,就支持连按了??

[复制链接]

0

主题

1

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2019-2-22
在线时间
3 小时
发表于 2019-12-19 15:51:30 | 显示全部楼层
因为mode等于1后,就可以每次让key_up=1,就能进入if(key_up&&(key00=0||key1==0)||key2==0)这个语句,每次按下都会返回一个按键值,每次按键返回按键值就是连续按下的意思,如果mode =0,那么就会出现你按第一下有反应,第二下没反应,第三下又有反应的现象,就是不连续按,这是我的理解不知道对不多i
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-6-17
在线时间
29 小时
发表于 2019-12-20 08:54:54 | 显示全部楼层
我一直都是这样理解的,加了static修饰的局部变量类似于全局变量,不会随函数结束释放,就是作用域只能在函数里面,不能被其他函数调用
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-4-9
在线时间
7 小时
发表于 2020-4-21 17:20:34 | 显示全部楼层
本小白也学到这里了,记录下自己的理解:

mode=1时,key_up可以始终保持为1(否则就在执行扫描按键并返回对应值时被程序清0),所以可以一直执行按键扫描的命令并不断地返回对应的按键值,松手后,由于不满足按键被按下的条件,程序不再返回按键值,key_up置为1(本来就是1),程序返回0

mode=0时,按下按键,程序进入按键扫描阶段,返回对应的值,同时将key_up清0,一直按下去,由于Key_up是0了,所以并不执行按键扫描程序,返回的是0,也就是不支持长按了,松开手后,因为满足按键松开,所以程序将Key_up置1,待下次再按时,可再次返回对应的按键值...
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2020-6-18
在线时间
32 小时
发表于 2020-6-22 17:15:04 | 显示全部楼层
那mode的值究竟是怎么判断的呢? 我怎么才能让Mode=1或者Mode=0呢?
回复

使用道具 举报

48

主题

179

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2017-6-19
在线时间
90 小时
发表于 2020-7-3 00:04:15 | 显示全部楼层
zcy12321 发表于 2016-5-12 16:44
楼主,你把if(mode)key_up=1;
分开,成
if(mode)

学会了,确实应该分开看,这样有助于理解
回复

使用道具 举报

1

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2020-11-7
在线时间
44 小时
发表于 2020-11-26 11:14:38 | 显示全部楼层

RE: ?为什么有了if(mode)key_up=1; 这个语句 ,就支持连按了??

yoka 发表于 2019-9-30 09:06
u8 KEY_Scan(u8 mode)
{         
        static u8 key_up=1;//按键按松开标志                //static代表这个定义只执行一次

解释的很清楚,建议不动懂的实测用用
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2021-6-8
在线时间
1 小时
发表于 2021-6-8 17:08:06 | 显示全部楼层
xyq123 发表于 2019-12-19 15:51
因为mode等于1后,就可以每次让key_up=1,就能进入if(key_up&&(key00=0||key1==0)||key2==0)这个语句,每 ...

这里的mode初值是怎么定义的?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2021-11-21
在线时间
4 小时
发表于 2021-11-29 21:45:57 | 显示全部楼层
wugewansui123 发表于 2020-4-21 17:20
本小白也学到这里了,记录下自己的理解:

mode=1时,key_up可以始终保持为1(否则就在执行扫描按键并返 ...

确实,一下子就理解了
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2021-12-14
在线时间
1 小时
发表于 2021-12-14 18:39:09 | 显示全部楼层
应该是这样理解:if(mode=1)key_up=1;  
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 19:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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