update readme

This commit is contained in:
yelvlab 2025-08-10 06:54:55 +08:00
parent f1df3cc30e
commit 9e6333dca8
2 changed files with 144 additions and 20 deletions

26
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,26 @@
{
"recommendations": [
"ms-vscode.cmake-tools",
"ms-vscode.cpptools",
"ms-vscode.cpptools-extension-pack",
"ms-vscode.cpptools-themes",
"ms-vscode.vscode-embedded-tools",
"ms-vscode.hexeditor",
"ms-vscode.notepadplusplus-keybindings",
"twxs.cmake",
"xaver.clang-format",
"marus25.cortex-debug",
"cheshirekow.cmake-format",
"mcu-debug.debug-tracker-vscode",
"mcu-debug.memory-view",
"mcu-debug.peripheral-viewer",
"mcu-debug.rtos-views",
"trond-snekvik.gnu-mapfiles",
"zixuanwang.linkerscript",
"gurumukhi.selected-lines-count",
"gruntfuggly.todo-tree",
"vscode-icons-team.vscode-icons",
"jeff-hykin.better-cpp-syntax",
"dan-c-underwood.arm"
]
}

122
README.md
View File

@ -1,33 +1,79 @@
# GD32E23x 工程模板 # GD32E23x 工程模板
本仓库为 GD32E23x 系列 MCU 的 CMake + VSCode 工程模板。 本仓库为兆易创新 GD32E23x 系列 MCU 的 CMake + VSCode 工程模板,适合嵌入式开发快速上手和团队协作。
---
## 目录
- [适用范围](#适用范围)
- [默认配置](#默认配置)
- [工具链准备](#工具链准备)
- [使用说明](#使用说明)
- [时钟配置说明](#时钟配置说明)
- [vcpkg 依赖管理(可选)](#vcpkg-依赖管理可选)
- [建议补充内容](#建议补充内容)
---
## 适用范围 ## 适用范围
- 适用于兆易创新 GD32E23x 系列 Cortex-M23 内核单片机 - 适用于兆易创新 GD32E23x 系列 Cortex-M23 内核单片机
- 支持标准外设库开发 - 支持标准外设库开发
- 推荐使用 VSCode + CMake + ARM GCC 工具链 - 推荐开发环境VSCode + CMake + ARM GCC 工具链
---
## 默认配置 ## 默认配置
- MCU 主频:内部 RC 振荡器,系统时钟配置为 72MHz - MCU 主频:内部 RC 振荡器,系统时钟配置为 72MHz
- 工程结构清晰,便于二次开发和移植
---
## 工具链准备
### 1. xPack GNU Arm Embedded GCC Toolchain
- **版本**xpack-arm-none-eabi-gcc-11.3.1-1.1
- **建议解压路径**Tools/xpack-arm-none-eabi-gcc-11.3.1-1.1
- **官方下载地址**https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases
- **路径自定义说明**
如需自定义工具链路径,请同步修改以下文件:
- `Projects/<BoardName>/<ProjectName>/cmake/arm-none-eabi-gcc.cmake`第2行
- `Projects/<BoardName>/<ProjectName>/.vscode/launch.json`第12行
### 2. OpenOCD
- **版本**xpack-openocd-0.11.0-3
- **建议解压路径**Tools/xpack-openocd-0.11.0-3
- **获取地址**https://github.com/burakenez/gd32-tools-xpack-openocd/tree/v0.11.0-3
- **说明**
- 本版本提取自 Embedded Builder V1.4.1.23782。
- ⚠️ 请勿随意更换版本,因 GD32 MCU 支持有限,推荐严格使用此版本。
- **路径自定义说明**
如需自定义 OpenOCD 路径,请同步修改以下文件:
- `Projects/<BoardName>/<ProjectName>/.vscode/launch.json`第14、17行
- `Projects/<BoardName>/<ProjectName>/.vscode/task.json` 中所有相关路径
---
## 使用说明 ## 使用说明
1. 手动准备工具链:
- 请将 ARM GCC 工具链(如 xpack-arm-none-eabi-gcc和 OpenOCD 解压到本工程的 Toolchain 目录下。 1. **准备工具链**
- 按上述说明下载并解压 ARM GCC 和 OpenOCD 到 Tools 目录。
- Toolchain 目录内容不会被 git 跟踪,需自行维护。 - Toolchain 目录内容不会被 git 跟踪,需自行维护。
2. 使用 CMake 构建工程:
- 推荐使用 VSCode 的 CMake Tools 插件,或命令行执行: 2. **烧录固件**
```bash
cmake -S . -B Build/Debug -G "Ninja" -DCMAKE_TOOLCHAIN_FILE=cmake/arm-none-eabi-gcc.cmake
cmake --build Build/Debug
```
3. 通过 OpenOCD 烧录固件:
- 可直接使用 VSCode 任务栏的 Flash MCU 任务,或命令行运行 OpenOCD。 - 可直接使用 VSCode 任务栏的 Flash MCU 任务,或命令行运行 OpenOCD。
---
## 时钟配置说明 ## 时钟配置说明
本工程默认系统时钟为内部 IRC8M 振荡器经 PLL 倍频后的 72MHz。 本工程默认系统时钟为内部 IRC8M 振荡器经 PLL 倍频后的 72MHz。
如需修改主频或时钟源,请编辑 `Src/system_gd32e23x.c` 文件: 如需修改主频或时钟源,请编辑 `Src/system_gd32e23x.c` 文件:
1. 查找如下宏定义区: 1. 查找如下宏定义区:
```c ```c
// #define __SYSTEM_CLOCK_8M_HXTAL (__HXTAL) // #define __SYSTEM_CLOCK_8M_HXTAL (__HXTAL)
@ -39,3 +85,55 @@
3. 保存后重新编译工程即可生效。 3. 保存后重新编译工程即可生效。
详细时钟初始化流程可参考 `system_gd32e23x.c` 文件中的 `system_clock_config` 及相关函数实现。 详细时钟初始化流程可参考 `system_gd32e23x.c` 文件中的 `system_clock_config` 及相关函数实现。
---
## vcpkg 依赖管理(可选)
本工程可选支持 vcpkg 作为 C/C++ 工具链和构建工具的自动化依赖管理方案。
- 自动下载和管理如 CMake、Ninja 等构建工具,简化环境配置。
- 可扩展用于第三方 C/C++ 库的统一管理。
**启用方法**
1. 在项目根目录创建 `vcpkg-configuration.json` 文件,内容如下:
```json
{
"registries": [
{
"name": "microsoft",
"location": "https://aka.ms/vcpkg-ce-default",
"kind": "artifact"
},
{
"name": "arm",
"location": "https://aka.ms/vcpkg-artifacts-arm",
"kind": "artifact"
}
],
"requires": {
"arm:tools/ninja-build/ninja": "^1.12.0",
"arm:tools/kitware/cmake": "^3.28.4"
}
}
```
2. 启动 VSCode 或命令行vcpkg 会自动检测并安装所需工具。
如不需要 vcpkg可忽略本文件。
---
## 建议补充内容
- **快速上手示例**:如 main.c 的最小点灯/串口输出代码片段。
- **常见问题与解答**:如构建失败、烧录失败的排查建议。
- **调试说明**:如何用 VSCode 调试、断点、查看寄存器等。
- **多板卡适配说明**:如有多种硬件,如何切换 BoardName。
- **贡献指南**:如何提交 PR、代码风格约定等。
- **License 说明**:开源协议和版权声明。
---
如需进一步完善或有其他建议,欢迎随时反馈!