gpio.c 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include "bsp/gpio.h"
  2. #include "libs/utils.h"
  3. #define IR2136S_Enable_pin 0
  4. #define LED1_Enable_pin 1
  5. #define LED2_Enable_pin 2
  6. #define LED3_Enable_pin 3
  7. #define KEY_Start_pin 4
  8. #define KEY_Stop_pin 5
  9. #define KEY_Func_pin 6
  10. /*
  11. * gpio.c
  12. * all pins used as gpio(in/out/irq) must be init&accessed here
  13. */
  14. const static gpio_pin_config_t _pins[] = {
  15. #ifdef GD32_FOC_DEMO
  16. [IR2136S_Enable_pin] = {GPIOA, GPIO_PIN_12, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  17. [LED1_Enable_pin] = {GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  18. [LED2_Enable_pin] = {0, GPIO_PIN_9, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  19. [LED3_Enable_pin] = {GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  20. [KEY_Start_pin] = {GPIOB, GPIO_PIN_5, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, 0},
  21. [KEY_Stop_pin] = {GPIOB, GPIO_PIN_11, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, 0},
  22. [KEY_Func_pin] = {GPIOC, GPIO_PIN_0, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, 0},
  23. #endif
  24. };
  25. void gpio_pin_init(void){
  26. rcu_periph_clock_enable(RCU_GPIOA);
  27. rcu_periph_clock_enable(RCU_GPIOB);
  28. rcu_periph_clock_enable(RCU_GPIOC);
  29. rcu_periph_clock_enable(RCU_GPIOD);
  30. rcu_periph_clock_enable(RCU_GPIOF);
  31. rcu_periph_clock_enable(RCU_AF);
  32. for (int i = 0; i < ARRAY_SIZE(_pins); i++){
  33. if (_pins[i].init_value != -1){
  34. gpio_bit_write(_pins[i].group, _pins[i].pin, (bit_status)_pins[i].init_value);
  35. }
  36. if (_pins[i].group != 0) {
  37. gpio_init(_pins[i].group, _pins[i].mode, _pins[i].speed, _pins[i].pin);
  38. }
  39. }
  40. }
  41. bool gpio_get_brake(void) {
  42. return 0;
  43. }
  44. void gpio_ir2136_enable(bool enable) {
  45. #ifdef GD32_FOC_DEMO
  46. gpio_bit_write(_pins[IR2136S_Enable_pin].group, _pins[IR2136S_Enable_pin].pin, (enable)?SET:RESET);
  47. #endif
  48. }
  49. void gpio_led1_enable(bool enable) {
  50. #ifdef GD32_FOC_DEMO
  51. gpio_bit_write(_pins[LED1_Enable_pin].group, _pins[LED1_Enable_pin].pin, (enable)?SET:RESET);
  52. #endif
  53. }
  54. void gpio_led2_enable(bool enable) {
  55. #ifdef GD32_FOC_DEMO
  56. //gpio_bit_write(_pins[LED2_Enable_pin].group, _pins[LED2_Enable_pin].pin, (enable)?SET:RESET);
  57. #endif
  58. }
  59. void gpio_led3_enable(bool enable) {
  60. #ifdef GD32_FOC_DEMO
  61. gpio_bit_write(_pins[LED3_Enable_pin].group, _pins[LED3_Enable_pin].pin, (enable)?SET:RESET);
  62. #endif
  63. }
  64. int gpio_startkey_value(void) {
  65. #ifdef GD32_FOC_DEMO
  66. return gpio_input_bit_get(_pins[KEY_Start_pin].group, _pins[KEY_Start_pin].pin)==SET?1:0;
  67. #else
  68. return 1;
  69. #endif
  70. }
  71. int gpio_stopkey_value(void) {
  72. #ifdef GD32_FOC_DEMO
  73. return gpio_input_bit_get(_pins[KEY_Stop_pin].group, _pins[KEY_Stop_pin].pin)==SET?1:0;
  74. #else
  75. return 1;
  76. #endif
  77. }
  78. int gpio_funckey_value(void) {
  79. #ifdef GD32_FOC_DEMO
  80. return gpio_input_bit_get(_pins[KEY_Func_pin].group, _pins[KEY_Func_pin].pin)==SET?1:0;
  81. #else
  82. return 1;
  83. #endif
  84. }