×
单片机 > 单片机程序设计 > 详情

stm32软件触发的按键长按与短按区分

发布时间:2020-05-22 发布时间:
|

/* ------------------------------------------------------------------------------------------------

 * @fn          KeyCoolPressTimeHandle

 *

 * @brief       按键的检测

 *

 * @param       none

 *

 * @return      none

 **************************************************************************************************

 */

uint8_t KeyCoolPressTimeHandle(void)

{

    static uint32_t KEY_Cool_PressTime = 0;

    uint8_t KeyState = KEY_PRESS_NULL;

    

    if(KEY_Cool == (uint8_t)Bit_RESET)

    {

        if(KEY_Cool_PressTime == 0)

        {

            KEY_Cool_PressTime = TcomGetTimerCount();

        }

        if(TcomGetTimerCount() - KEY_Cool_PressTime > LONG_PRESS_TIME)

        {

            KeyState = KEY_PRESS_LONG;

            //KEY_Cool_PressTime = 0;

        }

    }

    else

    {

        if(KEY_Cool_PressTime != 0 && TcomGetTimerCount() - KEY_Cool_PressTime > SHORT_PRESS_TIME)

        {

            KeyState = KEY_PRESS_SHORT;

        }

        KEY_Cool_PressTime = 0;

    }


    return KeyState;

}

void KeyCoolHandle(void)

{

    uint8_t KeyState = KeyCoolPressTimeHandle();

    

    if(KeyStateStruct.Cool == KEY_PRESS_NULL && KeyState != KEY_PRESS_NULL)

    {

        if(KeyState == KEY_PRESS_SHORT)

        {

            //执行操作

         //   ToggleKeyCoolState();    

        //    KeyStateSend(ADDR_COOL);


        }

        else if(KeyState == KEY_PRESS_LONG)

        {

        //    KEY_LOG("Key Cool Long Pressn");            

        }    


    }

        KeyStateStruct.Cool = KeyState;    

}


关键字:stm32  软件触发  长按  短按 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单