littlebot
Published on 2025-04-12 / 5 Visits
0

【源码】基于 C 语言的轻量级单片机驱动开发框架 LDF

项目简介

本项目是一套适用于单片机驱动开发的轻量级框架,参考了 Linux 总线相关设计思想,其总线使用修改裁剪后的 linux list_head。框架设计简单、代码量少,针对不同外设提供不同驱动接口,使业务层调用更透明。

项目的主要特性和功能

  1. 轻量级设计:代码量少,易于理解和集成到单片机项目中。
  2. 接口化设计:对不同外设进行接口化,提供 read/write 等方法,降低业务层与驱动层的耦合度。
  3. 总线机制:借鉴 Linux 总线思想,使用 list_head 管理设备,便于设备的注册和管理。
  4. 外设驱动支持:目前包含 UART 驱动演示,可根据需求扩展其他外设驱动。

安装使用步骤

安装

假设用户已经下载了本项目的源码文件。 1. 将项目文件复制到单片机开发环境的合适目录。 2. 根据实际使用的平台,在 platform.c 文件中添加或修改外设驱动初始化函数。

使用

  1. 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】