#ifndef BOARD_CONFIG_H #define BOARD_CONFIG_H #include "gd32e23x.h" #include "stdbool.h" #ifndef CFG_DISABLE #define CFG_DISABLE 0 #endif #ifndef CFG_ENABLE #define CFG_ENABLE 1 #endif #define GD32E23XF4 0x10 #define GD32E23XF6 0x20 #define GD32E23XF8 0x40 #define PROTOCOL_BOARD_TYPE 0x01 /**< 板卡类型标识 */ #include "version.h" /* >>>>>>>>>>>>>>>>>>>>[IIC TYPE DEFINE]<<<<<<<<<<<<<<<<<<<< */ #define SOFTWARE_IIC CFG_DISABLE // CFG_DISABLE: Hardware IIC; CFG_ENABLE: Software IIC /* >>>>>>>>>>>>>>>>>>>>[DEBUG MODE]<<<<<<<<<<<<<<<<<<<< */ #define DEBUG_MODE CFG_DISABLE // CFG_DISABLE: Release Mode; CFG_ENABLE: Debug Mode /* >>>>>>>>>>>>>>>>>>>>[COMMAND DEBUG]<<<<<<<<<<<<<<<<<<<< */ #define COM_DEBUG CFG_DISABLE // CFG_DISABLE: Command debug off; CFG_ENABLE: Command debug on /* >>>>>>>>>>>>>>>>>>>>[DEBUG ASSERTIONS DEFINE]<<<<<<<<<<<<<<<<<<<< */ #define DEBUG_VERBOSE CFG_DISABLE // CFG_DISABLE: Verbose debug off; CFG_ENABLE: Verbose debug on /* >>>>>>>>>>>>>>>>>>>>[SEGGER RTT DETECTION]<<<<<<<<<<<<<<<<<<<< */ #define SEGGER_RTT_DETECTION CFG_ENABLE // CFG_DISABLE: SEGGER RTT off; CFG_ENABLE: SEGGER RTT on #if SEGGER_RTT_DETECTION == CFG_ENABLE #include "SEGGER_RTT.h" #define RTT_printf(ch, ...) SEGGER_RTT_printf(ch, __VA_ARGS__) #define RTT_WriteString(ch, s) SEGGER_RTT_WriteString(ch, s) #define RTT_PutChar(ch, c) SEGGER_RTT_PutChar(ch, c) #else #define RTT_printf(ch, ...) #define RTT_WriteString(ch, s) #define RTT_PutChar(ch, c) #endif /******************************************************************************/ /* Dynamic USART Configuration Structure */ typedef struct { uint32_t rcu_usart; uint32_t usart_periph; IRQn_Type irq_type; void (*irq_handler)(void); // 函数指针:指向中断处理函数 } usart_config_t; extern usart_config_t g_usart_config; extern uint8_t g_mcu_flash_size; /* USART中断处理函数声明 */ void usart0_irq_handler(void); void usart1_irq_handler(void); /******************************************************************************/ // #define RCU_GPIO_I2C RCU_GPIOF // #define RCU_I2C RCU_I2C0 // #define I2C_SCL_PORT GPIOF // #define I2C_SCL_PIN GPIO_PIN_1 // #define I2C_SDA_PORT GPIOF // #define I2C_SDA_PIN GPIO_PIN_0 // #define I2C_GPIO_AF GPIO_AF_1 /******************************************************************************/ #define LED_RCU RCU_GPIOB #define LED_PORT GPIOB #define LED_PIN GPIO_PIN_1 /******************************************************************************/ typedef enum { ACTUATOR_CH1 = 0, ACTUATOR_CH2 } actuator_channel_t; typedef enum { DIRECTION_PUSH = 0, // 推动方向 DIRECTION_PULL // 拉动方向 } actuator_direction_t; /******************************************************************************/ #define ACTUATOR_CH1_PWM_RCU RCU_GPIOA #define ACTUATOR_CH1_PWM_PORT GPIOA #define ACTUATOR_CH1_PWM_PIN GPIO_PIN_10 #define ACTUATOR_CH1_GPIO_RCU RCU_GPIOF #define ACTUATOR_CH1_GPIO_PORT GPIOF #define ACTUATOR_CH1_GPIO_PIN GPIO_PIN_0 #define ACTUATOR_CH2_PWM_RCU RCU_GPIOA #define ACTUATOR_CH2_PWM_PORT GPIOA #define ACTUATOR_CH2_PWM_PIN GPIO_PIN_9 #define ACTUATOR_CH2_GPIO_RCU RCU_GPIOF #define ACTUATOR_CH2_GPIO_PORT GPIOF #define ACTUATOR_CH2_GPIO_PIN GPIO_PIN_1 #define ACTUATOR_PWM_TIMER_RCU RCU_TIMER0 #define ACTUATOR_PWM_TIMER TIMER0 #define ACTUATOR_CH1_PWM_TIMER_CH TIMER_CH_2 #define ACTUATOR_CH2_PWM_TIMER_CH TIMER_CH_1 /******************************************************************************/ #define UART_RCU (g_usart_config.rcu_usart) #define UART_PHY (g_usart_config.usart_periph) #define UART_IRQ (g_usart_config.irq_type) #define UART_GPIO_RCU RCU_GPIOA #define UART_GPIO_PORT GPIOA #define UART_TX_PIN GPIO_PIN_2 #define UART_RX_PIN GPIO_PIN_3 #define UART_BAUDRATE 115200U /******************************************************************************/ #define DEBUG_UART USART0 void mcu_detect_and_config(void); uint8_t get_flash_size(void); #endif //BOARD_CONFIG_H