uint8_t KEY_Scan(uint8_t mode) { static uint8_t key_up=1;//按键按松开标志 if(mode)key_up=1; //支持连按 if(key_up&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0)) { HAL_Delay(20);//去抖动 key_up=0; if(KEY1==0) return 1; else if(KEY2==0) return 2; else
时间: 2024-04-14 16:31:44 浏览: 111
code uint8-t *p-flash 与uint8-t code *p-flash的区别
if(KEY3==0)
return 3;
else if(KEY4==0)
return 4;
}
return 0;
}
这是一个用于扫描按键的函数,参数mode用于设置是否支持连按功能。函数内部使用一个静态变量key_up来记录按键是否松开的状态。当mode为1时,将key_up设置为1,表示支持连按;否则,保持key_up的值不变。
在函数内部,首先判断key_up的值是否为1,并且判断KEY1、KEY2、KEY3、KEY4是否有任何一个按键按下。如果有任何一个按键按下,则延时20ms进行去抖动处理,并将key_up设置为0,表示按键按下。
然后,通过连续的if-else if语句判断具体是哪个按键按下,如果是KEY1按下,则返回1;如果是KEY2按下,则返回2;如果是KEY3按下,则返回3;如果是KEY4按下,则返回4。
如果没有任何一个按键按下,则返回0,表示没有按键按下。
阅读全文