按键扫描状态机

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM10)
    {
        switch (KeyState)
        {
        case KEY_CHECK:
            if (HAL_GPIO_ReadPin(B1GPIO_Port, B1_Pin) == GPIO_PIN_RESET)
            {
                KeyState = KEY_COMFIRM;
            }
            break;
        case KEY_COMFIRM:
            if (HAL_GPIO_ReadPin(B1GPIO_Port, B1_Pin) == GPIO_PIN_RESET)
            {
                KeyState = KEY_RELEASE;
                KeyFlag = 1;
            }else{
                KeyState = KEY_CHECK;
            }
            break;
        case KEY_RELEASE:
            if (HAL_GPIO_ReadPin(B1GPIO_Port, B1_Pin) == GPIO_PIN_RESET)
            {
                KeyState = KEY_CHECK;
            }
            break;
        default:
            break;
        }
    }
}

 

posted @ 2023-01-28 21:00  松果工作室  阅读(56)  评论(0)    收藏  举报