gpio.h 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef _GPIO_H__
  2. #define _GPIO_H__
  3. #include "gd32f3x0.h"
  4. #include "gd32f3x0_libopt.h"
  5. #include "bsp/shark_bsp.h"
  6. void gpio_init(void);
  7. /*switch for temperature sensers */
  8. #define TEMP_OPEN(x) gpio_bit_write(GPIOF,GPIO_PIN_1,(bit_status)(x))
  9. /*switch for small current aux */
  10. #define AUX_VOL_OPEN(x) gpio_bit_write(GPIOB,GPIO_PIN_2,(bit_status)(x))
  11. /*switch for larger current DCDC */
  12. #define DCDC_VOL_OPEN(x) gpio_bit_write(GPIOA,GPIO_PIN_11,(bit_status)(x))
  13. /* DCDC output power good detect */
  14. #define DCDC_POWER_GOOD() gpio_input_bit_get(GPIOF, GPIO_PIN_7)
  15. /*detect for charger in/out */
  16. #define IS_CHARGER_IN() !gpio_input_bit_get(GPIOB,GPIO_PIN_10)
  17. /*spi chip select for ml5238*/
  18. #define ml5238_cs(x) gpio_bit_write(GPIOA, GPIO_PIN_15, (bit_status)x)
  19. #if defined CONFIG_BOARD_SP700
  20. /*power switch for cs110, low active */
  21. #define CS1180_PWR_ENABLE(x) gpio_bit_write(GPIOB,GPIO_PIN_12, x==1?RESET:SET)
  22. /*detect for CS1180 is ready */
  23. #define IS_CS1180_READY() !!gpio_input_bit_get(GPIOA, GPIO_PIN_0)
  24. /*spi chip select for cs1180*/
  25. #define cs1180_cs(x) gpio_bit_write(GPIOA, GPIO_PIN_9, (bit_status)x)
  26. /*switch for IR uart0 */
  27. #define UART0_IR_EN(x) gpio_bit_write(GPIOC,GPIO_PIN_14,(bit_status)(x))
  28. /*switch for IR uart1 */
  29. #define UART1_IR_EN(x) gpio_bit_write(GPIOF,GPIO_PIN_0,(bit_status)(x))
  30. /*detect hall 1&2 */
  31. #define IS_HALL1_DETECTED() !gpio_input_bit_get(GPIOC, GPIO_PIN_15)
  32. #define IS_HALL2_DETECTED() !gpio_input_bit_get(GPIOC, GPIO_PIN_13)
  33. #elif defined CONFIG_BOARD_SP600
  34. /*power switch for cs110, low active */
  35. #define CS1180_PWR_ENABLE(x) gpio_bit_write(GPIOC,GPIO_PIN_15, x==1?RESET:SET)
  36. /*detect for CS1180 is ready */
  37. #define IS_CS1180_READY() !!gpio_input_bit_get(GPIOB, GPIO_PIN_12)
  38. /*spi chip select for cs1180*/
  39. #define cs1180_cs(x) gpio_bit_write(GPIOA, GPIO_PIN_8, (bit_status)x)
  40. /*rs485 power switch */
  41. #define RS485_PWR_ENABLE(x) gpio_bit_write(GPIOC, GPIO_PIN_14, x==1?SET:RESET)
  42. /* rs485¼ì²âÄ£Äâhall1, MUST 485 power on && GPIOF0 is detect */
  43. #define IS_HALL2_DETECTED() (gpio_input_bit_get(GPIOF, GPIO_PIN_0)&&gpio_output_bit_get(GPIOC ,GPIO_PIN_14))
  44. /* other hall2 is always 0 */
  45. #define IS_HALL1_DETECTED() (0)
  46. #define LED0_ON(x) gpio_bit_write(GPIOB,GPIO_PIN_12, x==1?RESET:SET)
  47. #define LED1_ON(x) gpio_bit_write(GPIOB,GPIO_PIN_13, x==1?RESET:SET)
  48. #define LED2_ON(x) gpio_bit_write(GPIOB,GPIO_PIN_14, x==1?RESET:SET)
  49. #define LED3_ON(x) gpio_bit_write(GPIOA,GPIO_PIN_8, x==1?RESET:SET)
  50. #define LED4_ON(x) gpio_bit_write(GPIOA,GPIO_PIN_9, x==1?RESET:SET)
  51. #endif
  52. static __inline__ void gpio_mode_analog_input(uint32_t gpio_periph, uint32_t pin){
  53. gpio_mode_set(gpio_periph, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, pin);
  54. }
  55. static __inline__ void gpio_mode_input(uint32_t gpio_periph, uint32_t pull_up_down, uint32_t pin){
  56. gpio_mode_set(gpio_periph, GPIO_MODE_INPUT, pull_up_down, pin);
  57. }
  58. static __inline__ void gpio_mode_output(uint32_t gpio_periph, uint32_t pull_up_down, uint8_t otype, uint32_t speed, uint32_t pin){
  59. gpio_mode_set(gpio_periph, GPIO_MODE_OUTPUT, pull_up_down, pin);
  60. gpio_output_options_set(gpio_periph, otype, speed, pin);
  61. }
  62. static __inline__ void gpio_mode_af(uint32_t gpio_periph, uint32_t pull_up_down, uint32_t pin){
  63. gpio_mode_set(gpio_periph, GPIO_MODE_AF, pull_up_down, pin);
  64. }
  65. #endif /* _GPIO_H__ */