1、记录工作中的经验,直接贴代码啦
uint8_t KEY_Scan(uint8_t mode)
{
static uint8_t key_up = 1;
uint16_t hold_time = 0;
if (mode) key_up = 1;
if (key_up && (HAL_GPIO_ReadPin(key_GPIO_Port, key_Pin) == GPIO_PIN_RESET))
{
HAL_Delay(10);
if (HAL_GPIO_ReadPin(key_GPIO_Port, key_Pin) == GPIO_PIN_RESET)
{
key_up = 0;
hold_time = 0;
while (HAL_GPIO_ReadPin(key_GPIO_Port, key_Pin) == GPIO_PIN_RESET)
{
HAL_Delay(10);
hold_time += 10;
}
if (hold_time >= LONG_PRESS_TIME)
{
return 2;
}
if (hold_time < LONG_PRESS_TIME)
{
return 1;
}
}
}
else if (HAL_GPIO_ReadPin(key_GPIO_Port, key_Pin) == GPIO_PIN_SET)
{
key_up = 1;
}
return 0;
}