haddr.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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_4_RCU RCU_GPIOB
  14. #define HADDR_5_RCU RCU_GPIOA
  15. #define HADDR_1_4_IO GPIOB
  16. #define HADDR_5_IO GPIOA
  17. #define HADDR_1 GPIO_PIN_4
  18. #define HADDR_2 GPIO_PIN_5
  19. #define HADDR_3 GPIO_PIN_6
  20. #define HADDR_4 GPIO_PIN_7
  21. #define HADDR_5 GPIO_PIN_15
  22. void haddr_init(void)
  23. {
  24. uint8_t addr = 0;
  25. board_t *board = get_board();
  26. rcu_periph_clock_enable(HADDR_1_4_RCU);
  27. rcu_periph_clock_enable(HADDR_5_RCU);
  28. gpio_mode_set(HADDR_1_4_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, HADDR_1|HADDR_2|HADDR_3|HADDR_4);
  29. gpio_mode_set(HADDR_5_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP,HADDR_5);
  30. addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_1)) ? 0 : 1) << 0;
  31. addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_2)) ? 0 : 1) << 1;
  32. addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_3)) ? 0 : 1) << 2;
  33. addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_4)) ? 0 : 1) << 3;
  34. addr |= ((gpio_input_bit_get(HADDR_5_IO,HADDR_5)) ? 0 : 1) << 4;
  35. board->haddr = (addr) & 0x1f;
  36. }