drv_key.h 1015 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-07-19 Magicoe The first version for LPC55S6x, refered github.com/Guozhanxin/RTT-BeepPlayer-pkg
  9. */
  10. #ifndef __DRV_KEY_H__
  11. #define __DRV_KEY_H__
  12. #include <rtthread.h>
  13. #include <rtdevice.h>
  14. #define MY_BUTTON_DOWN_MS 50
  15. #define MY_BUTTON_HOLD_MS 700
  16. #define MY_BUTTON_SCAN_SPACE_MS 20
  17. #define MY_BUTTON_LIST_MAX 10
  18. typedef void (*my_button_callback)(void*);
  19. enum my_button_event
  20. {
  21. BUTTON_EVENT_CLICK_DOWN,
  22. BUTTON_EVENT_CLICK_UP,
  23. BUTTON_EVENT_HOLD,
  24. BUTTON_EVENT_HOLD_CYC,
  25. BUTTON_EVENT_HOLD_UP,
  26. BUTTON_EVENT_NONE
  27. };
  28. struct my_button
  29. {
  30. rt_uint8_t press_logic_level;
  31. rt_uint16_t cnt;
  32. rt_uint16_t hold_cyc_period;
  33. rt_uint16_t pin;
  34. enum my_button_event event;
  35. my_button_callback cb;
  36. };
  37. int my_button_register(struct my_button *button);
  38. int my_button_start(void);
  39. #endif