| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | /******************************* (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_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 ****/
 |