电路设计系列——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二进制安装

版本选择

系统 选择
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,项目脚本中使用绝对路径调用。

下载页面: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,并在启动烧录后松开