打印
[STM32F1]

两个键同时按下如何判断

[复制链接]
368|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
if((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)==0)&&(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)==0))                                                //ÉèÖüü
        {
                for(i=0;i<10000;i++);
                if((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)==0)&&(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)==0))
                {
                        while((GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)==0)&&(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)==0));
                        LcdCommand(0x0f);              //ÏÔʾ»­ÃæÉèÖÃ
                        DisplayDS13021();
                        ScreenNumber=0;
                        LcdCommand(0x85);
                        SetAddress=0X85;
                       
                       
                       
                       
                       
                        SetFlag=1;
                       
                }
        }
我是这样写的,不过不太灵敏。我不太会用什么状态机

使用特权

评论回复
沙发
kangzj| | 2022-6-9 21:51 | 只看该作者
这样当然不灵敏了,本来一个就行的,你进入了两次。 if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5|GPIOD,GPIO_Pin_6)==0)) 就可以了。

使用特权

评论回复
板凳
huangchui| | 2022-6-9 21:54 | 只看该作者
这是ST库函数应用的问题,库函数本来就慢,考虑很多问题呢。你这么重复套,内部好多东西重复了。。

使用特权

评论回复
地板
kangzj| | 2022-6-9 21:56 | 只看该作者
你把所有的换成我那种形式就可以了,不用重复调用

使用特权

评论回复
5
zhaoxqi| | 2022-6-9 21:58 | 只看该作者
什么叫同时啊?你能做到真的同时吗?

使用特权

评论回复
6
renyaq| | 2022-6-9 22:00 | 只看该作者
其实你可以在按下一个的基础上检测另一个是否按下,比如我在一个循环里,检测按键按下的情况,给个标志位,假如两个都满足, ...

使用特权

评论回复
7
supernan| | 2022-6-9 22:02 | 只看该作者
你说对了,其实他检测任何一个就行了,检测完了,进去后检测第二个也可以。。他现在做的重复使用库函数不说,这个降低了灵敏度。 ...

使用特权

评论回复
8
dingy| | 2022-6-9 22:04 | 只看该作者
这样当然不灵敏了,本来一个就行的,你进入了两次。

if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5|GPIOD,GPIO_Pin_6)==0))        
就可以了。。     

使用特权

评论回复
9
zhuww| | 2022-6-9 22:07 | 只看该作者
这是ST库函数应用的问题,库函数本来就慢,考虑很多问题呢。你这么重复套,内部好多东西重复了。。

使用特权

评论回复
10
huquanz711| | 2022-6-10 08:03 | 只看该作者
检测到其中一个按键按下后,在判断另一个按键是否也按下。

使用特权

评论回复
11
stly| | 2022-6-10 18:50 | 只看该作者
你把所有的换成我那种形式就可以了,不用重复调用

使用特权

评论回复
12
dengdc| | 2022-6-10 18:53 | 只看该作者
什么叫同时啊?你能做到真的同时吗?

使用特权

评论回复
13
zhanghqi| | 2022-6-10 18:55 | 只看该作者
其实你可以在按下一个的基础上检测另一个是否按下

使用特权

评论回复
14
zhanghqi| | 2022-6-10 18:59 | 只看该作者
比如我在一个循环里,检测按键按下的情况,给个标志位,假如两个都满足,就可以视为按键按下啊,

使用特权

评论回复
15
supernan| | 2022-6-10 19:01 | 只看该作者
只要在极短的时间检测到两个按键按下即可啊,就判断(key1)&&(key2)按下的情况即可吧

使用特权

评论回复
16
xxrs| | 2022-6-10 19:04 | 只看该作者
你说对了,其实他检测任何一个就行了,检测完了,进去后检测第二个也可以

使用特权

评论回复
17
午夜粪车| | 2022-6-10 19:07 | 只看该作者
他现在做的重复使用库函数不说,这个降低了灵敏度。

使用特权

评论回复
18
wyjie| | 2022-6-10 19:10 | 只看该作者
for(i=0;i<10000;i++);
两次检测之间这个时间有点长,还有就像楼上几位说的,分别单个检测就好了。去抖动的时间太长了。

使用特权

评论回复
19
zhenykun|  楼主 | 2022-6-10 19:15 | 只看该作者
这样写有错误

使用特权

评论回复
20
huangchui| | 2022-6-10 19:17 | 只看该作者
还是用状态机简单些。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

868

主题

11535

帖子

3

粉丝