57 lines
1.4 KiB
C
57 lines
1.4 KiB
C
/*
|
||
* 硬件抽象层实现
|
||
* 功能:实现硬件抽象层的初始化和操作结构体获取
|
||
* 依赖硬件: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;
|
||
} |