| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | /******************************* (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 <stdbool.h>#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_VoidHandler(void);/**  * @brief  Хендлер кнопки DEFAULT  */void BUTTON_DEF_DownHandler(void);/**  * @brief  Хендлер кнопки SET  */void BUTTON_SET_DownHandler(void);#endif /* #ifndef BUTTONS_H *//****************************** (C) LiteMesh ***************** end of file ****/
 |