项目简介
本项目是一套适用于单片机驱动开发的轻量级框架,参考了 Linux 总线相关设计思想,其总线使用修改裁剪后的 linux list_head。框架设计简单、代码量少,针对不同外设提供不同驱动接口,使业务层调用更透明。
项目的主要特性和功能
- 轻量级设计:代码量少,易于理解和集成到单片机项目中。
- 接口化设计:对不同外设进行接口化,提供 read/write 等方法,降低业务层与驱动层的耦合度。
- 总线机制:借鉴 Linux 总线思想,使用 list_head 管理设备,便于设备的注册和管理。
- 外设驱动支持:目前包含 UART 驱动演示,可根据需求扩展其他外设驱动。
安装使用步骤
安装
假设用户已经下载了本项目的源码文件。
1. 将项目文件复制到单片机开发环境的合适目录。
2. 根据实际使用的平台,在 platform.c
文件中添加或修改外设驱动初始化函数。
使用
- UART 驱动使用示例 ```c
include
// 通过设备类型以及复用功能查找设备 driver_uart_t uart_debug = (driver_uart_t)get_device_by_type(DEV_TYPE_UART, UART_MUX_DEBUG, DEV_BUS_DEFAULT);
if (NULL == uart_debug) { return; // 获取串口设备失败 }
/ 打开设备之前注册回调 / uart_debug->register_rx_callback(uart_debug_rx_callback); // 注册 RX 回调 uart_debug->register_tx_callback(uart_debug_tx_callback); // 注册 TX 回调
if defined(_MSC_VER)
uart_debug->open(NULL); // 使用默认参数打开
else // VS C++ 不支持.fieldname 初始化
uart_parameter_t uart_para = {
.baud_rate = 115200, // 波特率
.data_bits = UART_DATA_8B, // 数据位
.stop_bits = UART_STOP_1B, // 停止位
.parity = UART_PARITY_NONE, // 校验位
.hw_flow_ctrl = UART_HW_CTRL_NONE // 流控
};
uart_debug->open(&uart_para); // 使用自定义参数打开
endif // !_MSC_VER
/ 操作串口 / // uart_debug->sync_read(); // DEV_ERR_SYNC_CALL 错误,原因:已注册 RX 回调 // uart_debug->write();
uart_debug->close(&uart_debug->device);
``
2. **扩展其他外设驱动**
可参考
interface目录中定义的外设驱动接口,在
driver_demos目录中添加新的外设驱动使用示例,并在
platform.c` 文件中进行初始化。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】