Beispiel #1
0
/******************************************************************************
* @fn  halButtonPushed
*
* @brief
*      This function detects if 'S1' is being pushed. The function
*      implements software debounce. Return true only if previuosly called
*      with button not pushed. Return true only once each time the button
*      is pressed.
*
* Parameters:
*
* @param  void
*
* @return uint8
*          HAL_BUTTON_1:    Button is being pushed
*          HAL_BUTTON_NONE: Button is not being pushed
*
******************************************************************************/
uint8 halButtonPushed(void)
{
    uint8 i;
    uint8 value;
    static uint8 prevValue;

    if (value = HAL_BUTTON_1_PUSHED()){
        for(i = 0; i < 10; i++) {
            if(!HAL_BUTTON_1_PUSHED()){
                value = HAL_BUTTON_NONE;
                break;
            }
        }
    }

    if (value){
        if (!prevValue){
            value = prevValue = HAL_BUTTON_1;
            halMcuWaitMs(50);
        }
        else {
            value = HAL_BUTTON_NONE;
        }
    }
    else{
        prevValue = HAL_BUTTON_NONE;
    }

    return value;
}
/******************************************************************************
* @fn  halButtonPushed
*
* @brief
*      This function detects if 'S1' is being pushed. The function
*      implements software debounce. Return true only if previuosly called
*      with button not pushed. Return true only once each time the button
*      is pressed.
*
* Parameters:
*
* @param  void
*
* @return uint8
*          1: Button is being pushed
*          0: Button is not being pushed
*
******************************************************************************/
uint8 halButtonPushed(void)
{
    extern volatile uint8 led4State;

    uint8        v= HAL_BUTTON_NONE;

    // Need to set direction because the button is shared with LED4
    MCU_IO_INPUT(HAL_BOARD_IO_BTN_1_PORT, HAL_BOARD_IO_BTN_1_PIN, MCU_IO_TRISTATE);

    if (HAL_BUTTON_1_PUSHED()) {
        HAL_DEBOUNCE(!HAL_BUTTON_1_PUSHED());
        v= HAL_BUTTON_1;
    }
    // Restore for use with LED
    MCU_IO_OUTPUT(HAL_BOARD_IO_LED_4_PORT, HAL_BOARD_IO_LED_4_PIN, led4State);

    return v;
}