key_io.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "key_io.h"
  2. #include "gd32e230_gpio.h"
  3. #include "gd32e230_rcu.h"
  4. #include "Timer.h"
  5. #define KEY_IO_RCU RCU_GPIOB
  6. #define KEY_IO_IO GPIOB
  7. #define KEY_IO_A_RST GPIO_PIN_9
  8. #define KEY_IO_A_TEST GPIO_PIN_8
  9. #define KEY_IO_B_RST GPIO_PIN_7
  10. #define KEY_IO_B_TEST GPIO_PIN_6
  11. #define KEY_IO_RST GPIO_PIN_2
  12. #define KEY_IO_TEST GPIO_PIN_1
  13. #define KEY_DETECTION GPIO_PIN_5
  14. void key_io_init(void * value)
  15. {
  16. (void)(value);
  17. rcu_periph_clock_enable(KEY_IO_RCU);
  18. // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_A_RST);
  19. // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_A_TEST);
  20. // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_B_RST);
  21. // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_B_TEST);
  22. gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_RST);
  23. gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_TEST);
  24. gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_DETECTION);
  25. }
  26. bool get_rst()
  27. {
  28. FlagStatus status = SET;
  29. bool ret = false;
  30. uint32_t count = 100;
  31. if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_RST)) == RESET)
  32. {
  33. while(count--);
  34. if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_RST)) == RESET)
  35. {
  36. ret = true;
  37. }
  38. }
  39. return ret;
  40. }
  41. bool get_test()
  42. {
  43. FlagStatus status = SET;
  44. bool ret = false;
  45. uint32_t count = 100;
  46. if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_TEST)) == RESET)
  47. {
  48. while(count--);
  49. if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_TEST)) == RESET)
  50. {
  51. ret = true;
  52. }
  53. }
  54. return ret;
  55. }
  56. bool get_detection()
  57. {
  58. FlagStatus status = SET;
  59. bool ret = false;
  60. if((status = gpio_input_bit_get(KEY_IO_IO,KEY_DETECTION)) == RESET)
  61. ret = true;
  62. return ret;
  63. }