12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #ifndef __BUTTONS_H
- #define __BUTTONS_H
- #include "at32f403a_407.h"
- #include <stdbool.h>
- // Кнопки
- typedef enum
- {
- BUT_RESET = 0,
- BUT_SET,
- } BUTTON_t;
- // Статус кнопки
- typedef enum
- {
- BUT_ON = 0,
- BUT_OFF,
- BUT_NO_DEFINE,
-
- } BUTTON_STATE_t;
- // Структура параметров объекта Button
- typedef struct
- {
- gpio_type *port; // Порт
- uint32_t pin; // Пин
- uint16_t timeDelay; // Время задержки антидребезга (время измеряется
- // во временных интервалах с которыми вызывается
- // обработчик кнопки
- uint16_t counterDelay; // Счетчик антидребезга
- BUTTON_STATE_t stateOld; // Прошлое состояние кнопки
- BUTTON_STATE_t stateNew; // Текущее состояние кнопки
- void (*pressHandler)(); // Обработчик нажатия кнопки
- void (*unpressHandler)(uint8_t btn); // Обработчик отпускания кнопки
- uint8_t ID; // уникальный идентификатор (можно не использовать)
- uint32_t counterActivation;
- uint16_t timeActivation_1;
- uint16_t timeActivation_2;
- bool fActivation;
- } BUTTON_NO_FIX_t;
- //
- void button_init(void);
-
- /**
- * @brief Возвращает сотояние ключа
- * @retval 1 - линия разомкнута
- * 0 - линия замкнута
- */
- BUTTON_STATE_t BUTTON_GetState(BUTTON_NO_FIX_t *button);
- bool BUTTON_GetStateInt(BUTTON_t button);
- /**
- * @brief Обработчик кнопки без фиксации. В обработчике реализована защита
- * от дребезга с помощью задержки. Защита срабатывает при нажатии
- * и при отпускании.
- * @param *button: указатель на структуру типа BUTTON_NO_FIX
- * @retval нет
- */
- void BUTTON_NoFixHandler(BUTTON_NO_FIX_t *button);
- // Опрос кнопок
- void button_task(void *params);
- // Заглушки
- void void_handler(void);
- void void_handler_btn(uint8_t btn);
- //
- void reset_handler(void);
- //
- void set_handler(uint8_t btn);
- #endif /* #ifndef __BUTTONS_H */
|