Files
ETH_TCP_Demo/drivers/hal/hal.c
2026-03-09 15:34:18 +08:00

57 lines
1.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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