/** * @file hal_gpio.h * @brief Hardware Abstraction Layer - GPIO * PC 模拟时提供 mock 实现,上板时替换为真实寄存器操作 */ #ifndef HAL_GPIO_H #define HAL_GPIO_H #include /* ---- GPIO 端口/引脚抽象 ---- */ typedef enum { GPIO_PORT_A = 0, GPIO_PORT_B, GPIO_PORT_C, GPIO_PORT_COUNT } GPIO_Port_TypeDef; typedef enum { GPIO_PIN_0 = (1U << 0), GPIO_PIN_1 = (1U << 1), GPIO_PIN_2 = (1U << 2), GPIO_PIN_3 = (1U << 3), GPIO_PIN_4 = (1U << 4), GPIO_PIN_5 = (1U << 5), GPIO_PIN_6 = (1U << 6), GPIO_PIN_7 = (1U << 7), GPIO_PIN_8 = (1U << 8), GPIO_PIN_9 = (1U << 9), GPIO_PIN_10 = (1U << 10), GPIO_PIN_11 = (1U << 11), GPIO_PIN_12 = (1U << 12), GPIO_PIN_13 = (1U << 13) } GPIO_Pin_TypeDef; typedef enum { GPIO_MODE_INPUT = 0, GPIO_MODE_OUTPUT = 1, GPIO_MODE_AF_PP = 2 /* 复用推挽(PWM 输出) */ } GPIO_Mode_TypeDef; typedef enum { GPIO_PIN_RESET = 0, GPIO_PIN_SET = 1 } GPIO_PinState_TypeDef; /* ---- HAL 接口(上板替换实现) ---- */ void HAL_GPIO_Init(GPIO_Port_TypeDef port, GPIO_Pin_TypeDef pin, GPIO_Mode_TypeDef mode); void HAL_GPIO_WritePin(GPIO_Port_TypeDef port, GPIO_Pin_TypeDef pin, GPIO_PinState_TypeDef state); uint8_t HAL_GPIO_ReadPin(GPIO_Port_TypeDef port, GPIO_Pin_TypeDef pin); void HAL_GPIO_TogglePin(GPIO_Port_TypeDef port, GPIO_Pin_TypeDef pin); /* ---- SysTick / 毫秒时基 ---- */ void HAL_Delay(uint32_t ms); uint32_t HAL_GetTick(void); #endif /* HAL_GPIO_H */