/** * board_config.h — AI-4 板级配置(GD32F303 + µC/OS-III) * * 所有硬件相关的引脚、外设、MCU 宏都集中在这里。 * 切换 MCU 或改引脚只需改这一个文件。 */ #ifndef __BOARD_CONFIG_H #define __BOARD_CONFIG_H /*=========================================================================== * MCU 头文件(GD32F303 Standard Peripheral Library) *===========================================================================*/ #include "gd32f30x.h" /*=========================================================================== * µC/OS-III 集成 *===========================================================================*/ #include "os.h" /* UCOS-III 头文件 */ #include "os_cfg.h" /* 状态机调度周期 (ms) */ #define CHARGE_TASK_PERIOD_MS 200 /* I2C 看门狗复位周期 (ms),必须 < 40s */ #define WD_RESET_PERIOD_MS 10000 /* 10s */ /*=========================================================================== * I2C 总线配置 * * GD32F303 的 I2C 外设: * I2C0: PB6/PB7(和 STM32F1 兼容) * I2C1: PB10/PB11 * * 下面用 I2C0(PB6=SCL, PB7=SDA) *===========================================================================*/ #define BQ_I2C_PERIPH I2C0 #define BQ_I2C_SCL_PORT GPIOB #define BQ_I2C_SCL_PIN GPIO_PIN_6 #define BQ_I2C_SDA_PORT GPIOB #define BQ_I2C_SDA_PIN GPIO_PIN_7 #define BQ_I2C_SPEED 400000 /*=========================================================================== * BQ25756 控制引脚 *===========================================================================*/ /* CE 引脚 — 低电平使能充电 */ #define BQ_CE_PORT GPIOA #define BQ_CE_PIN GPIO_PIN_0 /* INT 引脚 — 开漏低有效,触发 MCU 外部中断 */ #define BQ_INT_PORT GPIOB #define BQ_INT_PIN GPIO_PIN_1 #define BQ_INT_EXTI_LINE EXTI_1 #define BQ_INT_EXTI_IRQn EXTI1_IRQn /* PG (Power Good) — 可选,检测输入电源是否正常 */ #define BQ_PG_PORT GPIOB #define BQ_PG_PIN GPIO_PIN_2 /* STAT1/STAT2 — 开漏输出充电状态指示(I²C-independent hardware status) * 结合逻辑: * STAT1=L, STAT2=L → Charging * STAT1=L, STAT2=H → Charge Done * STAT1=H, STAT2=L → Fault * STAT1=H, STAT2=H → No Input / Disabled */ #define BQ_STAT1_PORT GPIOA #define BQ_STAT1_PIN GPIO_PIN_1 #define BQ_STAT2_PORT GPIOA #define BQ_STAT2_PIN GPIO_PIN_2 /*=========================================================================== * NTC 温度传感器 * * 103AT 10kΩ NTC,分压到 MCU ADC 输入 *===========================================================================*/ #define NTC_ADC_PERIPH ADC0 #define NTC_ADC_CHANNEL ADC_CHANNEL_0 #define NTC_ADC_PORT GPIOA #define NTC_ADC_PIN GPIO_PIN_3 /* NTC 分压电阻值 (Ω),用于温度计算 */ #define NTC_PULLUP_OHM 10000 /*=========================================================================== * 调试串口 *===========================================================================*/ #define DBG_USART USART0 #define DBG_USART_TX_PORT GPIOA #define DBG_USART_TX_PIN GPIO_PIN_9 #define DBG_USART_RX_PORT GPIOA #define DBG_USART_RX_PIN GPIO_PIN_10 #define DBG_BAUDRATE 115200 /*=========================================================================== * 宏:GPIO 操作 *===========================================================================*/ #define BQ_CE_LOW() gpio_bit_reset(BQ_CE_PORT, BQ_CE_PIN) #define BQ_CE_HIGH() gpio_bit_set(BQ_CE_PORT, BQ_CE_PIN) #define BQ_PG_READ() gpio_input_bit_get(BQ_PG_PORT, BQ_PG_PIN) #define BQ_STAT1_READ() gpio_input_bit_get(BQ_STAT1_PORT, BQ_STAT1_PIN) #define BQ_STAT2_READ() gpio_input_bit_get(BQ_STAT2_PORT, BQ_STAT2_PIN) /*=========================================================================== * µC/OS-III 任务相关 *===========================================================================*/ /* 充电管理任务 */ #define CHARGE_TASK_PRIO 5 #define CHARGE_TASK_STACK_SIZE 512 /* ADC 采样任务 */ #define ADC_TASK_PRIO 4 /* 比充电任务高 */ #define ADC_TASK_STACK_SIZE 256 #endif /* __BOARD_CONFIG_H */