OpenEdv-开源电子网

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

原子mini3学习---按键问题

[复制链接]

11

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-11-2
在线时间
17 小时
发表于 2015-12-3 11:43:10 | 显示全部楼层 |阅读模式
5金钱
u8 KEY_Scan(u8 mode)
{  
static u8 key_up=1;
if(mode)key_up=1;  
if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
{
delay_ms(10); 
key_up=0;
if(KEY0==0)return KEY0_PRES;
else if(KEY1==0)return KEY1_PRES;
else if(WK_UP==1)return WKUP_PRES; 
}else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;     
return 0;
}
这是原子哥的代码,选择mode=0的模式跑,if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))成立的话,就进入到这个if里面,如果这个时(KEY0==0)(KEY1==0)(WK_UP==1)三个if均不成立,是不是就卡死了。 - -! 新手求问。

最佳答案

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

选择mode=0时 按下其中一个按键的时候,进入if(key_up&&(KEY0==0||KEY1==0||WK_UP==1)) 松开的时候,进入else if(KEY0==1&&KEY1==1&&WK_UP==0) 按着不松开就两个都不进去,直接return
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
发表于 2015-12-3 11:43:11 | 显示全部楼层
选择mode=0时
按下其中一个按键的时候,进入if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
松开的时候,进入else if(KEY0==1&&KEY1==1&&WK_UP==0)
按着不松开就两个都不进去,直接return
活着才是王道!健康是一切的前提!
回复

使用道具 举报

16

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2013-8-10
在线时间
0 小时
发表于 2015-12-3 12:27:36 | 显示全部楼层
不会啊!如果if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))不成立,程序就不会进入if语句 ,key_up永远等于1,程序就不停在扫面按键函数
回复

使用道具 举报

11

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-11-2
在线时间
17 小时
 楼主| 发表于 2015-12-3 14:22:48 | 显示全部楼层
回复【3楼】lison0103:
---------------------------------
噢噢,是不是 按下一个按键的时候,进入if(key_up&&(KEY0==0||KEY1==0||WK_UP==1)) ,这时候,程序会返回你所按的那个按键的返回值,如果你一直不松开的话,两个if都不进去,keyscan的返回值会被return 0覆盖,是这样吧?
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
发表于 2015-12-3 14:38:39 | 显示全部楼层
回复【4楼】xupt_ln:
---------------------------------
选择mode=0,就是不连按模式,意思是按下按键一次不松开只会产生一次返回值
第一次返回得到的按键值,你就可以处理相关任务了。
这里返回值0意思就是什么也没按下
活着才是王道!健康是一切的前提!
回复

使用道具 举报

11

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-11-2
在线时间
17 小时
 楼主| 发表于 2015-12-3 15:06:27 | 显示全部楼层
回复【5楼】lison0103:
---------------------------------
非常感谢。
回复

使用道具 举报

28

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
金钱
243
注册时间
2015-12-26
在线时间
34 小时
发表于 2016-1-21 16:17:24 | 显示全部楼层
希望原子哥能出一个能够既能实现单次按键和又能实现一直按键不放二合一的例程!而不是2中模式的通过软件的切换!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 15:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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