一个松手检测程序不能理解 谁能帮忙解答一下 谢谢

2019-07-15 15:25发布

                        while((a<50) && (GPIO_KEY!=0xf0))         //检测按键松手检测
                        {
                                Delay10ms(1);
                                a++;
                        }


就是(a<50) && (GPIO_KEY!=0xf0)这里

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
andy_wsj
2019-07-15 23:29
就是检测按键输入在一段时间内是否放开,两个条件,小于50ms并且键值不等于0xf0
只要其中一个不满足,就退出循环
                        while((a<50) && (GPIO_KEY!=0xf0))         //检测按键松手检测
                        {
                                 Delay10ms(1);
                                 a++;
                         }
单单看这个片段,这个松手检测有一些问题
1、如果50ms内按键不变,那么意味着程序要在这里循环50ms,就是说,按键的时候,程序卡一下,无论在中断内还是主循环,等待50ms显然是低效率的行为。
2、如果50ms超过了,键值没变,检测到的数据可能是错误的

一周热门 更多>