74 lines
2.1 KiB
C
74 lines
2.1 KiB
C
/*
|
||
* 硬件抽象层通用接口
|
||
* 功能:定义硬件抽象层的通用接口,包括串口、I2C和以太网驱动
|
||
* 依赖硬件:STM32F407VE
|
||
* 跨平台适配点:通过不同平台的实现文件适配不同硬件
|
||
*/
|
||
|
||
#ifndef HAL_H
|
||
#define HAL_H
|
||
|
||
#include <stdint.h>
|
||
#include "osal.h"
|
||
|
||
/* 硬件抽象层错误码 */
|
||
typedef enum {
|
||
HAL_STATUS_OK = 0,
|
||
HAL_STATUS_ERROR = -1,
|
||
HAL_STATUS_BUSY = -2,
|
||
HAL_STATUS_TIMEOUT = -3
|
||
} hal_status_t;
|
||
|
||
/* 串口波特率定义 */
|
||
typedef enum {
|
||
HAL_UART_BAUDRATE_9600 = 9600,
|
||
HAL_UART_BAUDRATE_115200 = 115200,
|
||
HAL_UART_BAUDRATE_460800 = 460800,
|
||
HAL_UART_BAUDRATE_921600 = 921600
|
||
} hal_uart_baudrate_t;
|
||
|
||
/* I2C时钟速度定义 */
|
||
typedef enum {
|
||
HAL_I2C_CLOCK_SPEED_100K = 100000,
|
||
HAL_I2C_CLOCK_SPEED_400K = 400000
|
||
} hal_i2c_clock_speed_t;
|
||
|
||
/* 串口硬件抽象层接口 */
|
||
typedef struct {
|
||
hal_status_t (*init)(hal_uart_baudrate_t baudrate);
|
||
hal_status_t (*deinit)(void);
|
||
hal_status_t (*send)(const uint8_t *data, uint32_t len);
|
||
hal_status_t (*recv)(uint8_t *data, uint32_t len, uint32_t timeout);
|
||
} hal_uart_ops_t;
|
||
|
||
/* I2C硬件抽象层接口 */
|
||
typedef struct {
|
||
hal_status_t (*init)(hal_i2c_clock_speed_t clock_speed);
|
||
hal_status_t (*deinit)(void);
|
||
hal_status_t (*master_transmit)(uint16_t dev_addr, const uint8_t *data, uint32_t len, uint32_t timeout);
|
||
hal_status_t (*master_receive)(uint16_t dev_addr, uint8_t *data, uint32_t len, uint32_t timeout);
|
||
} hal_i2c_ops_t;
|
||
|
||
/* 以太网硬件抽象层接口 */
|
||
typedef struct {
|
||
hal_status_t (*init)(void);
|
||
hal_status_t (*deinit)(void);
|
||
hal_status_t (*send)(const uint8_t *data, uint32_t len);
|
||
hal_status_t (*recv)(uint8_t *data, uint32_t *len, uint32_t timeout);
|
||
hal_status_t (*get_link_status)(void);
|
||
} hal_eth_ops_t;
|
||
|
||
/* 硬件抽象层操作结构体 */
|
||
typedef struct {
|
||
const hal_uart_ops_t *uart;
|
||
const hal_i2c_ops_t *i2c;
|
||
const hal_eth_ops_t *eth;
|
||
} hal_ops_t;
|
||
|
||
/* 硬件抽象层初始化函数 */
|
||
extern hal_status_t hal_init(void);
|
||
|
||
/* 获取硬件抽象层操作结构体 */
|
||
extern const hal_ops_t *hal_get_ops(void);
|
||
|
||
#endif /* HAL_H */ |