# embedded-driver-kit **Repository Path**: MagicBude/embedded-driver-kit ## Basic Information - **Project Name**: embedded-driver-kit - **Description**: 🚀 可移植的嵌入式驱动库,支持多种 MCU(STM32、ESP32 等) 特性:硬件抽象层、即插即用驱动、可复用组件(LCD、传感器)和工具库(环形缓冲区、CRC) 一次编写,到处使用 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-24 - **Last Updated**: 2026-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 嵌入式驱动工具包 (Embedded Driver Kit) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Language: C](https://img.shields.io/badge/Language-C-blue.svg)](https://en.wikipedia.org/wiki/C_(programming_language)) [![Platform: STM32](https://img.shields.io/badge/Platform-STM32-green.svg)](https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html) 一个支持多种 MCU 平台(STM32、ESP32 等)的可移植嵌入式驱动库,具有统一的硬件抽象层(HAL)。 ## 🎯 核心理念 **"复制所需驱动,简单配置,到处使用"** - ✅ **一次编写,到处运行** - 平台无关的驱动核心层 - ✅ **零依赖** - 仅使用标准 C 库(stdint.h、stddef.h、string.h) - ✅ **多实例支持** - 同时使用多个相同类型的外设 - ✅ **配置驱动** - 通过宏和配置文件控制功能 - ✅ **即插即用** - 复制文件 + 简单配置即可使用 - ✅ **静态内存** - 默认静态分配,内存使用可预测 - ✅ **线程安全** - 可选的线程安全支持 ## 架构 ``` ┌─────────────────────────────────────────────────┐ │ 用户应用层 │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ 驱动核心层(平台无关) │ │ - UART 核心、SPI 核心、I2C 核心、GPIO 核心 │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ HAL 接口层(抽象) │ │ - HAL_Interface_t 结构体定义 │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ 平台适配层(平台特定) │ │ - STM32 适配器、ESP32 适配器等 │ └─────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────┐ │ 硬件层(MCU 外设) │ └─────────────────────────────────────────────────┘ ``` ## 项目结构 ``` embedded-driver-kit/ ├── core/ # 平台无关的驱动核心 │ ├── hal_interface.h │ ├── driver_common.h │ └── uart_core.h/c(计划中) ├── port/ # 平台特定适配器 │ ├── stm32/ │ ├── esp32/ │ └── ... ├── utils/ # 工具函数 ├── tests/ # 单元测试和属性测试 ├── examples/ # 使用示例 └── docs/ # 文档 ``` ## 快速开始 ### STM32F1 驱动初始化 **使用配置文件驱动的方式初始化驱动!** ```c #include "stm32f1_driver_init.h" #include "stm32f1_adapter.h" int main(void) { HAL_Init(); SystemClock_Config(); // 获取 HAL 接口 HAL_Interface_t *hal = STM32F1_Get_HAL_Interface(); // 初始化驱动(所有配置从文件读取) UART_Driver_Handle_t *uart1 = STM32F1_UART_Driver_Init(1, hal); // 直接使用 uint8_t data[] = "Hello World!"; UART_Driver_Send(uart1, data, sizeof(data) - 1); } ``` **配置文件**(`port/stm32/stm32f1/stm32f1_periph_config.h`): ```c #define STM32F1_UART1_ENABLE 1 #define STM32F1_UART1_BAUDRATE 115200 #define STM32F1_UART1_WORD_LENGTH UART_WORDLENGTH_8B #define STM32F1_UART1_STOP_BITS UART_STOPBITS_1 #define STM32F1_UART1_PARITY UART_PARITY_NONE #define STM32F1_UART1_REMAP 0 // TX=PA9, RX=PA10 ``` **特点**: - ✅ **配置集中管理** - 所有参数在配置文件中设置 - ✅ **避免重复配置** - 配置只设置一次 - ✅ **代码简洁** - 配置文件驱动,自动读取参数 - ✅ **支持引脚重映射** - 轻松切换引脚 - ✅ **易于维护** - 修改配置无需改代码 - ✅ **代码大小优化** - 未启用的外设不编译,节省 50-70% 空间 详细说明请参考 [驱动初始化指南](docs/initialization_guide.md)。 --- ### 传统方式:STM32F1 硬件初始化 对于需要更细粒度控制的场景,也可以使用传统的硬件初始化函数: ```c #include "stm32f1_init.h" /* 初始化硬件 */ UART_HandleTypeDef huart1; STM32F1_UART_Init(&huart1, USART1, 115200, UART_WORDLENGTH_8B, UART_STOPBITS_1, UART_PARITY_NONE, 0); // remap=0: 使用默认引脚 /* 使用 HAL 函数 */ HAL_UART_Transmit(&huart1, data, len, timeout); ``` **注意**:传统方式需要手动管理 HAL 句柄和配置参数。 - ✅ 减少出错可能 详细说明请参考 [配置同步指南](docs/config_sync_guide.md)。 ### 通用使用流程 1. **复制驱动文件**到您的项目 2. **复制并修改**配置模板 3. **初始化**平台适配器 4. **使用**驱动 API 详细说明请参见 `docs/getting_started.md`。 ## 特性 - **平台抽象**:所有平台的统一 HAL 接口 - **多实例支持**:同时使用多个外设 - **可配置**:通过编译时配置控制功能 - **零依赖**:仅使用标准 C 库 - **静态内存**:默认静态分配,内存使用可预测 - **线程安全**:可选的线程安全支持 - **回调支持**:异步事件处理 - **全面测试**:单元测试和基于属性的测试 ## 支持的平台 - STM32(F1、F4 等)- 开发中 - ESP32 - 计划中 - Nordic nRF52 - 计划中 ## 支持的驱动 - ✅ **UART** - 完成(支持 STM32F1) - ✅ **SPI** - 完成(支持 STM32F1) - ✅ **I2C** - 完成(支持 STM32F1) - ✅ **GPIO** - 完成(支持 STM32F1) - 输入/输出模式 - 上拉/下拉配置 - 中断支持 - 软件防抖动 ## 要求 - C99 或更高版本 - 标准 C 库(stdint.h、stddef.h、string.h) - 平台特定的 SDK/HAL(用于适配器) ## 测试 ```bash # 运行所有测试 ceedling test:all # 运行特定测试 ceedling test: # 生成覆盖率报告 ceedling gcov:all ``` ## 📚 文档 请参阅 `docs/` 目录获取完整文档: - [快速入门指南](docs/getting_started.md) - 即将推出 - [API 参考](docs/api_reference.md) - 即将推出 - [移植指南](docs/porting_guide.md) - 即将推出 - [配置指南](docs/configuration.md) - 即将推出 - [设计文档](DESIGN.md) - 架构和设计说明 ## 🤝 贡献 欢迎贡献!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南。 贡献类型: - 新的驱动实现(SPI、I2C、ADC 等) - 新的平台适配层(ESP32、NRF52 等) - Bug 修复 - 文档改进 - 使用示例 ## 📝 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。 ## 🔗 相关链接 - [Gitee 仓库](https://gitee.com/MagicBude/embedded-driver-kit) - [问题反馈](https://gitee.com/MagicBude/embedded-driver-kit/issues) - [更新日志](CHANGELOG.md) ## 📧 联系方式 如有问题或建议,请通过以下方式联系: - 创建 [Issue](https://gitee.com/MagicBude/embedded-driver-kit/issues) - Pull Request --- **开发状态**: 🚧 开发中 (v0.1.0) **最后更新**: 2026-01-24