刚刚接触STM32,关于按键实验中有关不支持连续按键那个地方理解的不明白

2019-07-21 02:14发布

[mw_shl_code=c,true]u8 KEY_SCAN(void) { static u8 key_up=1; if(key_up&&key按下) {delay_us(10); key_up=0; {return key_value;} } else if(key没有按下)key_up=1; }[/mw_shl_code] 看过视频教程后,我对这段代码的理解是这样的,假如说每100ms扫描一次,那么一秒钟就会扫描10次,在第一次扫描后假如说我之前没有按键,那么程序会执行到if语句里面,所以key_up被置0;当我一直按着不放时,当我第二次扫描时,由于key_up是静态变量,那么便会执行else if语句,则将key_up置为1,程序理所当然会执行if里面的语句,此时便会又一次返回key_value的值,可是按照不支持连续按键的意思,如果我此时还不松开按键,那么便不会是一次成功的按键,这样不是跟代码有矛盾吗,所以我不明白为什么else if(key没有按下)后面要将key_up=1;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
hpeng1874
1楼-- · 2019-07-21 04:44
http://www.openedv.com/posts/list/56069.htm?fromAll=0
xiaopeng
2楼-- · 2019-07-21 09:19
回复【2楼】hpeng1874:
---------------------------------
啦啦啦,看懂了,谢谢哥们

一周热门 更多>