最近入手了一块 NUCLEO-C562RE 开发板,需要用到新的 STM32CubeMX2 开发环境。本来想着都是 CMake 编译,环境也大差不差,依葫芦画瓢就可以了,结果出现编译失败和下载失败的问题。稍微踩坑后解决,故编写本文。
本次复现环境为STM32CubeMX2 1.1.1 + CLion 2026.1.2
编译失败
排查
用 STM32CubeMX2 生成 CMake 工程后,使用 CLion 打开。加载生成的预设debug_GCC_NUCLEO-C562RE。
结果 CMake 输出报错:
| |
CMakeLists.txt 长这样:
| |
进入cmake/files.cmake查看生成的文件:
| |
这里看到 target_sources 前有一个条件判断,怀疑是CMAKE_BUILD_TYPE出现问题。在 CMakeLists.txt 中加入 debug 语句 message("Build type: " ${CMAKE_BUILD_TYPE})后发现输出Build type: ${presetName}。真相大白:就是因为CMAKE_BUILD_TYPE被错误地设置了。
原因
CMakePresets.json 中定义的是
| |
CLion 把 preset 导入成只读的 CMake profile 时并没有解析这个 variable,Build type 直接变成了 ${presetName},执行命令的时候就把这个字面量原样传给了 -DCMAKE_BUILD_TYPE。files.cmake中什么都没有添加。
解决办法
在 CLion 里复制一份 preset,然后手动改 CMAKE_BUILD_TYPE:
- 打开
设置 -> 构建、执行、部署 -> CMake - 选中
debug_GCC_NUCLEO-C562RE 预设,点击复制 - 复制出来的配置里把
构建类型改成debug_GCC_NUCLEO-C562RE - 启用复制出来的配置
- 重新加载 CMake 项目并编译

下载失败
排查
编译没问题了,结果下载又报错……反复尝试后发现 STM32CubeProgrammer 能正常下载,但是 CLion 的 ST-LINK GDB Server 连不上。
搜了一下,有人遇到过一模一样的问题: ST-LINK GDB Server issue with STM32C5 | Community
回复说这个芯片的 CPU core 在 access port 1 上,需要加 -m 1 参数。
原因
参考手册的 Debug support(DBG)章节写了有两个 AP:
- AP0:System debug access port,访问 DBGMCU 和系统 ROM 表
- AP1:Cortex-M33 debug access port,访问内核的调试和 trace 功能
GDB Server 默认连的是 AP0,但内核在 AP1,所以找不到。STM32CubeProgrammer 估计是内置了这部分的处理逻辑,所以什么都不用改就连上了。
解决办法
- 打开
设置 -> 调试器 -> 调试服务器 - 选中
ST-LINK配置 - 把
多核 -> 访问端口改成 1 - 确定后重新调试

改完就正常了。