haddr.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*********************************************************************************************************
  2. * Module : haddr
  3. * Abstract :
  4. * Version : 1.0.0
  5. * Author : Leopul(COPYRIGHT 2025 ~ 2027 Leopul. All rights reserved.)
  6. * Complete : 2025-04-18
  7. * Content : None
  8. * Note : None
  9. *********************************************************************************************************/
  10. #include "haddr.h"
  11. #include "common.h"
  12. #include "gd32e23x.h"
  13. #define HADDR_1 GPIO_PIN_7
  14. #define HADDR_2 GPIO_PIN_6
  15. #define HADDR_3 GPIO_PIN_12
  16. #define HADDR_4 GPIO_PIN_8
  17. #define HADDR_5 GPIO_PIN_10
  18. void haddr_init(void)
  19. {
  20. uint8_t addr = 0;
  21. board_t *board = get_board();
  22. //rcu_periph_clock_enable(HADDR_1_4_RCU);
  23. //rcu_periph_clock_enable(HADDR_5_RCU);
  24. rcu_periph_clock_enable(RCU_GPIOF);
  25. rcu_periph_clock_enable(RCU_GPIOA);
  26. rcu_periph_clock_enable(RCU_GPIOB);
  27. gpio_mode_set(GPIOF, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, HADDR_1|HADDR_2);
  28. gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, HADDR_3|HADDR_4);
  29. gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP,HADDR_5);
  30. addr |= ((gpio_input_bit_get(GPIOF,HADDR_1)) ? 0 : 1) << 0;
  31. addr |= ((gpio_input_bit_get(GPIOF,HADDR_2)) ? 0 : 1) << 1;
  32. addr |= ((gpio_input_bit_get(GPIOA,HADDR_3)) ? 0 : 1) << 2;
  33. addr |= ((gpio_input_bit_get(GPIOA,HADDR_4)) ? 0 : 1) << 3;
  34. addr |= ((gpio_input_bit_get(GPIOB,HADDR_5)) ? 0 : 1) << 4;
  35. board->haddr = (addr) & 0x1f;
  36. }