| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*********************************************************************************************************
- * Module : haddr
- * Abstract :
- * Version : 1.0.0
- * Author : Leopul(COPYRIGHT 2025 ~ 2027 Leopul. All rights reserved.)
- * Complete : 2025-04-18
- * Content : None
- * Note : None
- *********************************************************************************************************/
- #include "haddr.h"
- #include "common.h"
- #include "gd32e23x.h"
- #define HADDR_1_2_RCU RCU_GPIOF
- #define HADDR_3_4_RCU RCU_GPIOA
- #define HADDR_5_RCU RCU_GPIOB
- #define HADDR_1 GPIO_PIN_7
- #define HADDR_2 GPIO_PIN_6
- #define HADDR_3 GPIO_PIN_12
- #define HADDR_4 GPIO_PIN_8
- #define HADDR_5 GPIO_PIN_15
- void haddr_init(void)
- {
- uint8_t addr = 0;
- board_t *board = get_board();
- rcu_periph_clock_enable(HADDR_1_2_RCU);
- rcu_periph_clock_enable(HADDR_3_4_RCU);
- rcu_periph_clock_enable(HADDR_5_RCU);
- gpio_mode_set(GPIOF, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, HADDR_1|HADDR_2);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, HADDR_3|HADDR_4);
- gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP,HADDR_5);
- addr |= ((gpio_input_bit_get(GPIOF,HADDR_1)) ? 0 : 1) << 0;
- addr |= ((gpio_input_bit_get(GPIOF,HADDR_2)) ? 0 : 1) << 1;
- addr |= ((gpio_input_bit_get(GPIOA,HADDR_3)) ? 0 : 1) << 2;
- addr |= ((gpio_input_bit_get(GPIOA,HADDR_4)) ? 0 : 1) << 3;
- addr |= ((gpio_input_bit_get(GPIOB,HADDR_5)) ? 0 : 1) << 4;
- board->haddr = (addr) & 0x1f;
- }
|