/******************************* (C) LiteMesh ********************************** * @module buttons * @file buttons.h * @version 1.0.0 * @date XX.XX.XXXX * $brief buttons ******************************************************************************* * @history Version Author Comment * XX.XX.XXXX 1.0.0 Telenkov D.A. First release. ******************************************************************************* */ /* Define to prevent recursive ----------------------------------------------*/ #ifndef BUTTONS_H #define BUTTONS_H #include #include "gpio.h" /** * Статус кнопки */ typedef enum { BUT_ON = 0, BUT_OFF, BUT_NO_DEFINE, } BUTTON_STATE_t; /** * @brief Структура параметров объекта Button */ typedef struct { gpio_t id_pin; uint16_t timeDelay; // Время задержки антидребезга (время измеряется // во временных интервалах с которыми вызывается // обработчик кнопки uint16_t counterDelay; // Счетчик антидребезга BUTTON_STATE_t stateOld; // Прошлое состояние кнопки BUTTON_STATE_t stateNew; // Текущее состояние кнопки void (*pressHandler)(); // Обработчик нажатия кнопки void (*unpressHandler)(); // Обработчик отпускания кнопки uint8_t ID; // уникальный идентификатор (можно не использовать) uint32_t counterActivation; uint16_t timeActivation; bool fActivation; } BUTTON_NO_FIX_t; /** * @brief */ void BUTTON_Init(void); /** * @brief Возвращает сотояние ключа * @retval 1 - линия разомкнута * 0 - линия замкнута */ BUTTON_STATE_t BUTTON_GetState(BUTTON_NO_FIX_t *button); /** * @brief Обработчик кнопки без фиксации. В обработчике реализована защита * от дребезга с помощью задержки. Защита срабатывает при нажатии * и при отпускании. * @param *button: указатель на структуру типа BUTTON_NO_FIX * @retval нет */ void BUTTON_NoFixHandler(BUTTON_NO_FIX_t *button); /** * @brief Опрос кнопок */ void vTaskButtons(void *pvParameters); /** * @brief */ void BUTTON_DEF_UpHandler(void); /** * @brief Хендлер кнопки DEFAULT */ void BUTTON_DEF_DownHandler(void); /** * @brief */ void BUTTON_SET_UpHandler(void); /** * @brief Хендлер кнопки SET */ void BUTTON_SET_DownHandler(void); #endif /* #ifndef BUTTONS_H */ /****************************** (C) LiteMesh ***************** end of file ****/