#ifndef __BUTTONS_H #define __BUTTONS_H #include "at32f403a_407.h" #include // Кнопки 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 */