我想要检测两个按键哪个按下时,发现一个奇怪的问题,
我两次调用KEY_getkeynum()函数,就只有按键1能够检测,按键2无反应,代码如下
void key_tesk()
{
while (1)
{
if (KEY_getkeynum() == 1)
{
printf("press: 1\n");
}
if (KEY_getkeynum() == 2)
{
printf("press: 2\n");
}
vTaskDelay(30 / portTICK_PERIOD_MS);
}
}
调用一次KEY_getkeynum()函数,两个按键都能够正确检测,
void key_tesk()
{
uint8_t keynum=0;
while (1)
{
keynum=KEY_getkeynum();
if (keynum == 1)
{
printf("press: 1\n");
}
if (keynum == 2)
{
printf("press: 2\n");
}
vTaskDelay(30 / portTICK_PERIOD_MS);
}
}
KEY_getkeynum()函数如下:
```c
uint8_t KEY_getkeynum()
{
uint8_t keynum = 0;
if (gpio_get_level(KEY_one_pin) == 0)
{
vTaskDelay(10 / portTICK_PERIOD_MS);
if (gpio_get_level(KEY_one_pin) == 0)
{
while (gpio_get_level(KEY_one_pin) == 0);
keynum = 1;
return keynum;
}
}
else if (gpio_get_level(KEY_two_pin) == 0)
{
vTaskDelay(10 / portTICK_PERIOD_MS);
if (gpio_get_level(KEY_two_pin) == 0)
{
while (gpio_get_level(KEY_two_pin) == 0);
keynum = 2;
return keynum;
}
}
return keynum;
}
```