初级会员

- 积分
- 168
- 金钱
- 168
- 注册时间
- 2020-9-2
- 在线时间
- 41 小时
|
1金钱
本帖最后由 binzhang 于 2021-1-12 16:13 编辑
我stm32库函数做按键检查,当我没有按键时但是总会出现第一个按键会识别出错。问题如图:

这个是在我按键没有按下的情况它总是出现这个状况。
u8 KEY_Scan(u8 mode)
{
static u8 key=1;
if(mode==1) //连续按键按下
key=1;
if(key==1&&(key1==0||key2==0||key3==0||key4==0||key5==0||key6==0||key7==0||key8==0)) //任意一个按键按下
{
delay_ms(10); //消抖
key=0;
if(key1==0)
{
return key1_val;
}
else if(key2==0)
{
return key2_val;
}
else if(key3==0)
{
return key3_val;
}
else if(key4==0)
{
return key4_val;
}
else if(key5==0)
{
return key5_val;
}
else if(key6==0)
{
return key6_val;
}
else if(key7==0)
{
return key7_val;
}
else if(key8==0)
{
return key8_val;
}
}
else if(key1==1&&key2==1&&key3==1&&key4==1&&key5==1&&key6==1&&key7==1&&key8==1) //无按键按下
{
key=1;
}
return 0;
}
这个是按键扫描程序
//按键1,按键2控制抬杆的上升和下降
if(key1_val==KEY_Scan(1))
{
up();
return flag=1;
}
if(key2_val==KEY_Scan(1))
{
down();
return flag=1;
}
//按键3和按键4用来控制视频放大和缩小
if(key3_val==KEY_Scan(1))
{
enlarge();
return flag=1;
}
if(key4_val==KEY_Scan(1))
{
shrink();
return flag=1;
}
//按键5用来控制保存和不保存视频
if(key5_val==KEY_Scan(1))
{
saveVideo();
return flag=1;
}
//按键6用与截图功能
if(key6_val==KEY_Scan(1))
{
Screenshort();
return flag=1;
}
//按键7用来控制led灯的开与关
if(key7_val==KEY_Scan(1))
{
ledClose();
return flag=1;
}
//米数清零
if(key8_val==KEY_Scan(1))
{
clearCnt();
return flag=1;
}
if(0==KEY_Scan(1))
{
moto_stop();
}
stop();
return flag=1;
|
-
|