gpio.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. /*
  8. * gpio.c
  9. * all pins used as gpio(in/out/irq) must be init&accessed here
  10. */
  11. const static gpio_pin_config_t _pins[] = {
  12. #ifdef GD32_FOC_DEMO
  13. [IR2136S_Enable_pin] = {GPIOA, GPIO_PIN_12, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  14. [LED1_Enable_pin] = {GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  15. [LED2_Enable_pin] = {GPIOB, GPIO_PIN_9, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  16. [LED3_Enable_pin] = {GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, 0},
  17. #endif
  18. };
  19. void gpio_pin_init(void){
  20. rcu_periph_clock_enable(RCU_GPIOA);
  21. rcu_periph_clock_enable(RCU_GPIOB);
  22. rcu_periph_clock_enable(RCU_GPIOC);
  23. rcu_periph_clock_enable(RCU_GPIOD);
  24. rcu_periph_clock_enable(RCU_GPIOF);
  25. rcu_periph_clock_enable(RCU_AF);
  26. for (int i = 0; i < ARRAY_SIZE(_pins); i++){
  27. if (_pins[i].init_value != -1){
  28. gpio_bit_write(_pins[i].group, _pins[i].pin, (bit_status)_pins[i].init_value);
  29. }
  30. gpio_init(_pins[i].group, _pins[i].mode, _pins[i].speed, _pins[i].pin);
  31. }
  32. }
  33. bool gpio_get_brake(void) {
  34. return 0;
  35. }
  36. void gpio_ir2136_enable(bool enable) {
  37. #ifdef GD32_FOC_DEMO
  38. gpio_bit_write(_pins[IR2136S_Enable_pin].group, _pins[IR2136S_Enable_pin].pin, (enable)?SET:RESET);
  39. #endif
  40. }
  41. void gpio_led1_enable(bool enable) {
  42. #ifdef GD32_FOC_DEMO
  43. gpio_bit_write(_pins[LED1_Enable_pin].group, _pins[LED1_Enable_pin].pin, (enable)?SET:RESET);
  44. #endif
  45. }
  46. void gpio_led2_enable(bool enable) {
  47. #ifdef GD32_FOC_DEMO
  48. gpio_bit_write(_pins[LED2_Enable_pin].group, _pins[LED2_Enable_pin].pin, (enable)?SET:RESET);
  49. #endif
  50. }
  51. void gpio_led3_enable(bool enable) {
  52. #ifdef GD32_FOC_DEMO
  53. gpio_bit_write(_pins[LED3_Enable_pin].group, _pins[LED3_Enable_pin].pin, (enable)?SET:RESET);
  54. #endif
  55. }