/* * 硬件抽象层实现 * 功能:实现硬件抽象层的初始化和操作结构体获取 * 依赖硬件:STM32F407VE * 跨平台适配点:通过不同平台的实现文件适配不同硬件 */ #include "hal.h" /* 前向声明平台特定的硬件抽象层实现 */ extern const hal_uart_ops_t stm32f4_uart_ops; extern const hal_i2c_ops_t stm32f4_i2c_ops; extern const hal_eth_ops_t stm32f4_eth_ops; /* 硬件抽象层操作结构体 */ static const hal_ops_t hal_ops = { .uart = &stm32f4_uart_ops, .i2c = &stm32f4_i2c_ops, .eth = &stm32f4_eth_ops }; /** * @brief 硬件抽象层初始化 * @return hal_status_t: 操作结果 * @note 初始化所有硬件抽象层组件 */ hal_status_t hal_init(void) { hal_status_t status = HAL_STATUS_OK; /* 初始化串口 */ if (hal_ops.uart->init(HAL_UART_BAUDRATE_115200) != HAL_STATUS_OK) { status = HAL_STATUS_ERROR; } /* 初始化I2C */ if (hal_ops.i2c->init(HAL_I2C_CLOCK_SPEED_100K) != HAL_STATUS_OK) { status = HAL_STATUS_ERROR; } /* 初始化以太网 */ if (hal_ops.eth->init() != HAL_STATUS_OK) { status = HAL_STATUS_ERROR; } return status; } /** * @brief 获取硬件抽象层操作结构体 * @return const hal_ops_t*: 硬件抽象层操作结构体指针 * @note 返回硬件抽象层操作结构体,用于访问各种硬件操作 */ const hal_ops_t *hal_get_ops(void) { return &hal_ops; }