- openocd_daplink_gd32e23x.cfg:去掉 connect_assert_srst(该选项导致 DAPLink 下 Cortex-M23 识别失败)
LDC1612 传感器固件
本仓库基于 GD32E23x CMake + VSCode 工程模板(gd32e23x_template_cmake_vscode),包含 LDC1612 电感采样、TMP112 温度采集及补偿、RS485 命令处理。当前版本为 V1.0.1。固件采用 Bootloader + APP 布局:APP 链接在 0x08002000(54KB Flash / 8KB RAM),启动时自设向量表偏移;开发进度与审查资料见 doc/ 目录。
本地编译
需要 CMake 3.20 或更新版本、Ninja 和 ARM GCC。CMake、Ninja 应在 PATH 中;ARM GCC 通过 GD32_GCC_BIN 指定,也可在配置时传入 -DTOOLCHAIN_DIRECTORY="D:/toolchain/arm-gcc/bin",该参数优先于环境变量。工具链路径支持包根目录或 bin 目录。
在工程根目录运行 PowerShell(工具链路径请替换为本机安装位置):
$env:GD32_GCC_BIN = 'D:\toolchain\xpack-arm-none-eabi-gcc-15.2.1-1.1\bin'
cmake --preset Debug
cmake --build --preset Debug
cmake --preset Release
cmake --build --preset Release
输出位于 Build/Debug 或 Build/Release:Application/Application.elf 用于调试,LDC1612_V1.0.1_APP_<日期>.bin / .hex 为应用固件;Application/Application.hex 供 J-Link 烧录任务使用。应用固件不含 Bootloader:单独烧录需写到 0x08002000;整片烧录(Bootloader + APP + 标志页)用配套的固件合并工具(gd32e230f8_firmware_merge_tool 仓库)处理。详见固件布局与 Bootloader。
如果切换 ARM GCC 版本,请使用新的构建目录,或通过 CMake Tools 的 “Delete Cache and Reconfigure” 重新配置。需要独立验证目录时可运行:
cmake --preset Debug -B Build/local-check/Debug
cmake --build Build/local-check/Debug
目录
固件布局与 Bootloader
GD32E230F8(64KB Flash)按 Bootloader + APP 方式分区:
| 区域 | 地址范围 | 说明 |
|---|---|---|
| Bootloader | 0x08000000 - 0x08001FFF(8KB) |
随板提供,独立固件(gd32e230f8_bootloader_hulk.bin),负责 RS485 Ymodem OTA 与跳转 |
| APP(本仓库) | 0x08002000 - 0x0800F7FF(54KB) |
链接区 FLASH ORIGIN=0x08002000, LENGTH=54K |
| 温度标定页(预留) | 0x0800F800 - 0x0800FBFF |
预留存放标定数据;当前 APP 不访问,仅靠 54KB 链接上限保证不越界覆盖 |
| 有效标志 | 0x0800FFFC |
Bootloader OTA 完成后自写 0x0000EEEE,跳转前校验 |
工程侧的两个适配点(缺一不可):
LD/gd32e23x_flash.ld:FLASHORIGIN = 0x08002000, LENGTH = 54K;Src/system_gd32e23x.c:VECT_TAB_OFFSET = 0x2000——Bootloader 不写 VTOR,APP 必须自己把向量表指到0x08002000,否则中断会落回 Bootloader 向量表(现象:收到第一个 RS485 字节即死机)。
⚠️ 与旧版布局(APP 链接在 0x08000000 的独立镜像)不兼容:从旧版升级需整片烧录一次。RS485 协议、命令集(M1-M6/M999/M9999)与回包格式无任何变化。布局依据与 Bootloader 反汇编分析见 doc/LDC1612_工程审查与实验方案_2026-09-26.md。
适用范围
- 适用于兆易创新 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;本机编译验证使用 15.2.1-1.1。
- 安装位置:由本机统一管理,不提交到仓库。
- 官方下载地址:https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases
- 路径自定义说明:
编译器与 GDB 均通过GD32_GCC_BIN环境变量定位(或配置时传-DTOOLCHAIN_DIRECTORY),CMake 文件与.vscode均无需修改路径。
2. OpenOCD(GD-Link 支持)
- 版本: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 支持有限,推荐严格使用此版本。
- 路径自定义说明:
通过两个环境变量定位,安装位置任意:GD32_OPENOCD_BIN:openocd.exe所在bin目录;GD32_OPENOCD_SCRIPTS:OpenOCDscripts目录。
.vscode的调试配置与烧录任务全部读取这两个变量,无需修改任何文件。
使用说明
-
配置环境变量(用户级,按本机安装位置设置一次即可)
环境变量 指向 用途 GD32_GCC_BINARM GCC 的 bin目录编译、GDB 调试 GD32_OPENOCD_BINOpenOCD 的 bin目录烧录、调试 GD32_OPENOCD_SCRIPTSOpenOCD 的 scripts目录烧录、调试 设置后重开终端 / VSCode 生效。
cmd示例:setx GD32_GCC_BIN "D:\toolchain\xpack-arm-none-eabi-gcc-15.2.1-1.1\bin"。 -
编译
命令行见上文本地编译,或直接用 VSCode 的 CMake Tools 选择 Debug / Release preset 构建。 -
烧录固件
- OpenOCD(GD-Link):VSCode 任务
Flash MCU(连带编译用Build and Flash);另有Reset MCU、Mass Erase MCU、OpenOCD Server任务。 - J-Link:任务
Flash MCU (Jlink)等,依赖构建生成的Build/<preset>/Application/Application.hex。 - 器件与接口在
.vscode/settings.json的gd32.jlink.*/gd32.openocd.*中配置,当前为 GD32E230F8 / SWD。
- OpenOCD(GD-Link):VSCode 任务
-
调试
VSCode 调试配置有两个:Debug with OpenOCD与Debug with J-Link(均使用 cortex-debug,SVD 文件GD32E230.svd,支持外设寄存器查看)。烧录调试器以 GD-Link 为例;J-Link 直接选用对应配置即可。
时钟配置说明
本工程默认系统时钟为内部 IRC8M 振荡器经 PLL 倍频后的 72MHz。
如需修改主频或时钟源,请编辑 Src/system_gd32e23x.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) - 取消你需要的时钟方案的注释,并注释掉其它方案。
- 保存后重新编译工程即可生效。
详细时钟初始化流程可参考 system_gd32e23x.c 文件中的 system_clock_config 及相关函数实现。
vcpkg 依赖管理(可选)
本工程可选支持 vcpkg 作为 C/C++ 工具链和构建工具的自动化依赖管理方案。
- 自动下载和管理如 CMake、Ninja 等构建工具,简化环境配置。
- 可扩展用于第三方 C/C++ 库的统一管理。
启用方法:
-
在项目根目录创建
vcpkg-configuration.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" } } -
启动 VSCode 或命令行,vcpkg 会自动检测并安装所需工具。
如不需要 vcpkg,可忽略本文件。
建议补充内容
- 快速上手示例:如 main.c 的最小点灯/串口输出代码片段。
- 常见问题与解答:如构建失败、烧录失败的排查建议。
- 多板卡适配说明:如有多种硬件,如何切换 BoardName。
- 贡献指南:如何提交 PR、代码风格约定等。
- License 说明:开源协议和版权声明。
如需进一步完善或有其他建议,欢迎随时反馈!