# GD32E23x 工程模板

本仓库为兆易创新 GD32E23x 系列 MCU 的 CMake + VSCode 工程模板，适合嵌入式开发快速上手和团队协作。

---

## 目录

- [适用范围](#适用范围)
- [默认配置](#默认配置)
- [工具链准备](#工具链准备)
- [使用说明](#使用说明)
- [时钟配置说明](#时钟配置说明)
- [vcpkg 依赖管理（可选）](#vcpkg-依赖管理可选)
- [建议补充内容](#建议补充内容)

---

## 适用范围

- 适用于兆易创新 GD32E23x 系列 Cortex-M23 内核单片机
- 支持标准外设库开发
- 推荐开发环境：VSCode + CMake + ARM GCC 工具链

---

## 默认配置

- 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 和 OpenOCD 到 Tools 目录。
   - Toolchain 目录内容不会被 git 跟踪，需自行维护。

2. **烧录固件**  
   - 可直接使用 VSCode 任务栏的 Flash MCU 任务，或命令行运行 OpenOCD。

---

## 时钟配置说明

本工程默认系统时钟为内部 IRC8M 振荡器经 PLL 倍频后的 72MHz。

如需修改主频或时钟源，请编辑 `Src/system_gd32e23x.c` 文件：

1. 查找如下宏定义区：
   ```c
   // #define __SYSTEM_CLOCK_8M_HXTAL              (__HXTAL)
   // #define __SYSTEM_CLOCK_8M_IRC8M              (__IRC8M)
   // #define __SYSTEM_CLOCK_72M_PLL_HXTAL         (uint32_t)(72000000)
   #define __SYSTEM_CLOCK_72M_PLL_IRC8M_DIV2    (uint32_t)(72000000)
   ```
2. 取消你需要的时钟方案的注释，并注释掉其它方案。
3. 保存后重新编译工程即可生效。

详细时钟初始化流程可参考 `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 说明**：开源协议和版权声明。

---

如需进一步完善或有其他建议，欢迎随时反馈！
