button.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef __BUTTON_H
  2. #define __BUTTON_H
  3. #include "stm32f0xx_hal.h"
  4. #include <stdbool.h>
  5. #define UPDATE_BUT_DELLAY (20)
  6. // Статус кнопки
  7. typedef enum
  8. {
  9. BUT_ON = 0,
  10. BUT_OFF,
  11. BUT_NO_DEFINE,
  12. } BUTTON_STATE_t;
  13. //
  14. typedef struct
  15. {
  16. GPIO_TypeDef* GPIOx; // Порт
  17. uint16_t GPIO_Pin; // Пин
  18. uint16_t timeDelay; // Время задержки антидребезга (время измеряется
  19. // во временных интервалах с которыми вызывается
  20. // обработчик кнопки
  21. uint16_t counterDelay; // Счетчик антидребезга
  22. BUTTON_STATE_t stateOld; // Прошлое состояние кнопки
  23. BUTTON_STATE_t stateNew; // Текущее состояние кнопки
  24. void (*pressHandler)(); // Обработчик нажатия кнопки
  25. void (*unpressHandler)(); // Обработчик отпускания кнопки
  26. uint8_t ID; // уникальный идентификатор (можно не использовать)
  27. uint32_t counterActivation;
  28. uint16_t timeActivation;
  29. bool fActivation;
  30. } but_no_fix_t;
  31. //
  32. void but_init(void);
  33. //
  34. void button_run(void);
  35. //
  36. void bu_no_fix_handler(but_no_fix_t* button);
  37. //
  38. BUTTON_STATE_t but_get_state(but_no_fix_t *button);
  39. //
  40. bool but_is_string(void);
  41. extern bool start_pressed;
  42. #endif // __BUTTON_H