1. 项目背景与核心需求
在嵌入式开发领域,使用厂商提供的例程作为起点是常见做法。以沁恒蓝牙芯片开发为例,官方SDK通常包含大量功能完善的示例代码,但这些例程往往采用统一的项目结构,存在以下典型问题:
- 工程耦合度高:多个示例共用同一套底层库文件,修改时容易产生连锁反应
- 编译配置复杂:包含大量与本功能无关的源文件和头文件路径
- 移植困难:直接基于例程开发会导致后续维护时难以区分自定义代码与SDK原始代码
这个项目的核心价值在于:通过规范化改造,将特定功能的例程剥离为独立工程,实现:
- 工程文件最小化(仅保留必要组件)
- 编译配置简化(清晰的头文件包含关系)
- 版本控制友好(明确区分SDK代码与自定义代码)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 工程解耦技术方案
2.1 原始工程结构分析
典型沁恒蓝牙SDK目录结构示例:
code复制CH58x_SDK/
├── EVT/
│ ├── EXAM/
│ │ ├── BLE/
│ │ │ ├── Peripheral/
│ │ │ │ ├── PROJECT/
│ │ │ │ │ ├── RVMDK/ # Keil工程文件
│ │ │ │ │ ├── main.c
│ │ │ │ ├── LIB/
│ │ │ │ │ ├── CH58xBLE_LIB.a # 蓝牙协议栈库
│ │ ├── SRC/
│ │ │ ├── Debug/
│ │ │ ├── Peripheral/
│ │ │ ├── Startup/
├── PUBLIC/
│ ├── INC/ # 公共头文件
│ ├── SRC/ # 公共驱动
问题点:
- 工程文件引用路径深度嵌套(如
../../../../PUBLIC/INC) - 多个示例共享同一套公共组件
- 编译配置依赖SDK全局环境变量
2.2 独立工程改造步骤
2.2.1 文件筛选与拷贝
- 创建新目录
MyBLEProject/ - 从例程复制核心文件:
bash复制cp CH58x_SDK/EVT/EXAM/BLE/
