key_io.c 1.8 KB

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