/********************************************************************************************************* * 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_4_RCU RCU_GPIOB #define HADDR_5_RCU RCU_GPIOA #define HADDR_1_4_IO GPIOB #define HADDR_5_IO GPIOA #define HADDR_1 GPIO_PIN_4 #define HADDR_2 GPIO_PIN_5 #define HADDR_3 GPIO_PIN_6 #define HADDR_4 GPIO_PIN_7 #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_4_RCU); //rcu_periph_clock_enable(HADDR_5_RCU); gpio_mode_set(HADDR_1_4_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, HADDR_1|HADDR_2|HADDR_3|HADDR_4); //gpio_mode_set(HADDR_5_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP,HADDR_5); addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_1)) ? 0 : 1) << 0; addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_2)) ? 0 : 1) << 1; addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_3)) ? 0 : 1) << 2; addr |= ((gpio_input_bit_get(HADDR_1_4_IO,HADDR_4)) ? 0 : 1) << 3; //addr |= ((gpio_input_bit_get(HADDR_5_IO,HADDR_5)) ? 0 : 1) << 4; board->haddr = (addr) & 0x1f; }