电路设计系列------STM32CubeMX + Cursor 的编译环境配置
文章目录
- [电路设计系列------STM32CubeMX + Cursor 的编译环境配置](#电路设计系列——STM32CubeMX + Cursor 的编译环境配置)
- 文档时间
- 开发环境配置
- 运行脚本
- 踩坑记录
文档时间
- 创建:20260415
- 最终更新:20260415
开发环境配置
这是自用开发环境,对应版本以经过验证
工具链概览
| 工具 | 用途 | 当前版本 |
|---|---|---|
| arm-none-eabi-gcc | ARM 交叉编译器 | 15.2.1 (Arm GNU Toolchain 15.2.Rel1) |
| CMake | 构建系统生成 | 4.3.1 |
| Ninja | 构建执行器 | 1.13.2 |
| Git | 版本管理 | 2.51.0 |
| OpenOCD | 烧录/调试 | xpack 0.12.0-7 |
| STM32CubeMX | 代码生成 | 6.17.0 |
| ST-LINK USB Driver | STLink 调试器驱动 | STSW-LINK009 |
1. ARM GNU Toolchain (arm-none-eabi-gcc)
下载页面:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
版本选择
| 系统 | 选择 |
|---|---|
| Windows 64位 | arm-gnu-toolchain-15.2.rel1-mingw-w64-x86_64-arm-none-eabi.msi |
| Windows 32位 | arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi.msi |
| Linux x86_64 | arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi.tar.xz |
| macOS (Apple Silicon) | arm-gnu-toolchain-15.2.rel1-darwin-arm64-arm-none-eabi.pkg |
| macOS (Intel) | arm-gnu-toolchain-15.2.rel1-darwin-x86_64-arm-none-eabi.pkg |
注意 :Windows系统+STM32F103,必须选
arm-none-eabi(裸机目标),不要选arm-none-linux-gnueabihf(Linux 目标)或aarch64-none-elf(64位 ARM)。STM32F103 是 32位 Cortex-M3。
安装路径(Windows 默认):C:\Program Files\Arm\GNU Toolchain mingw-w64-x86_64-arm-none-eabi\bin
安装时如果没有自动加入 PATH,需手动将上述 bin 目录添加到系统环境变量。
2. CMake
下载页面:https://cmake.org/download/
版本选择
| 系统 | 选择 |
|---|---|
| Windows 64位 | cmake-4.3.1-windows-x86_64.msi |
| Windows ARM64 | cmake-4.3.1-windows-arm64.msi |
| Linux x86_64 | cmake-4.3.1-linux-x86_64.sh |
| macOS | cmake-4.3.1-macos-universal.dmg |
安装时勾选 Add CMake to the system PATH for all users。
安装路径(Windows 默认):C:\Program Files\CMake\bin
3. Ninja
下载页面:https://github.com/ninja-build/ninja/releases
版本选择
| 系统 | 选择 |
|---|---|
| Windows | ninja-win.zip |
| Linux | ninja-linux.zip |
| macOS | ninja-mac.zip |
解压 ninja.exe 到固定目录(如 D:\ninja\),将该目录加入系统 PATH。
4. OpenOCD
下载页面:OpenOCD二进制安装
- 能用二进制,就不推荐源码安装:OpenOCD GitHub源码地址
版本选择
| 系统 | 选择 |
|---|---|
| Windows 64位 | xpack-openocd-0.12.0-7-win32-x64.zip |
| Windows 32位 | xpack-openocd-0.12.0-7-win32-ia32.zip |
| Linux x86_64 | xpack-openocd-0.12.0-7-linux-x64.tar.gz |
| macOS (Apple Silicon) | xpack-openocd-0.12.0-7-darwin-arm64.tar.gz |
| macOS (Intel) | xpack-openocd-0.12.0-7-darwin-x64.tar.gz |
OpenOCD 无需加入 PATH,项目脚本中使用绝对路径调用。
5. ST-LINK USB Driver(仅 Windows)
下载页面:ST-LINK USB Driver,来自ST官网
下载后解压,运行 dpinst_amd64.exe(64位)或 dpinst_x86.exe(32位)。
安装后设备管理器中 STLink 应出现在 "通用串行总线设备" 下。
6. STM32CubeMX
下载页面:STM32CubeMX官网
需要 ST 账号登录下载。当前版本 6.17.0,FW 包 STM32Cube FW_F1 V1.8.7。
Toolchain/IDE 设置为 CMake。
安装后验证
bash
arm-none-eabi-gcc --version # 应输出 15.2.1
cmake --version # 应输出 4.3.1
ninja --version # 应输出 1.13.2
运行脚本
烧录脚本
sh
#!/bin/bash
OPENOCD="OpenOCD/xpack-openocd-0.12.0-7/bin/openocd.exe" # bin/openocd.exe的地址
SCRIPTS="OpenOCD/xpack-openocd-0.12.0-7/openocd/scripts" # openocd/scripts的地址
FIRMWARE="$(dirname "$0")/../build/Debug/STM32C8T6LedDriver.elf" # 编译结果的elf文件地址
if [ ! -f "$FIRMWARE" ]; then
echo "Firmware not found: $FIRMWARE"
echo "Please build the project first: cmake --preset Debug && cmake --build build/Debug"
exit 1
fi
"$OPENOCD" -s "$SCRIPTS" -f interface/stlink.cfg -f target/stm32f1x.cfg -c "program \"$FIRMWARE\" verify reset exit"
编译脚本
简单的编译脚本
sh
# Debug
cmake --preset Debug
cmake --build build/Debug
# Release
cmake --preset Release
cmake --build build/Release
封装好的编译脚本
sh
#!/bin/bash
# STM32C8T6LedDriver 编译脚本
# 用法:
# bash scripts/build.sh # Debug 构建(默认)
# bash scripts/build.sh release # Release 构建
# bash scripts/build.sh all # 两个都构建
# bash scripts/build.sh clean # 清除构建目录
# bash scripts/openocd_flash.sh # 烧录
# bash scripts/openocd_connect.sh # 启动 GDB 调试服务器
set -e
cd "$(dirname "$0")/.."
build_preset() {
local preset="$1"
echo "=== ${preset} 构建 ==="
cmake --preset "$preset"
cmake --build "build/${preset}"
echo "=== ${preset} 构建完成 ==="
}
case "${1:-debug}" in
debug|Debug)
build_preset Debug
;;
release|Release)
build_preset Release
;;
all)
build_preset Debug
echo ""
build_preset Release
;;
clean)
echo "=== 清除构建目录 ==="
rm -rf build/Debug build/Release
echo "=== 已清除 ==="
;;
*)
echo "用法: bash scripts/build.sh [debug|release|all|clean]"
exit 1
;;
esac
OpenOCD 调试服务器启动脚本
只连接 ST-Link 并保持运行,不烧录、不退出。
sh
#!/bin/bash
OPENOCD="OpenOCD/xpack-openocd-0.12.0-7/bin/openocd.exe"
SCRIPTS="OpenOCD/xpack-openocd-0.12.0-7/openocd/scripts"
"$OPENOCD" -s "$SCRIPTS" \
-f interface/stlink.cfg \
-c "transport select swd" \
-f target/stm32f1x.cfg
踩坑记录
首次烧录成功,第二次烧录不上
- 硬件:STlink v2 + STM32C8T6
- 软件:STM32CubeMX
- 接线
| stlink | stm32 |
|---|---|
| 3.3V | 3V3 |
| GND | GND |
| SWCLK | SWCLK |
| SWDIO | SWO |
在STM32CubeMX 中需要设置 sys->Debug->Serial Wire ,否则下次烧录需要按住Reset,并在启动烧录后松开