跳到主要内容

STM32 环境配置

本页面将指导你如何配置STM32的开发环境,以便使用LibXR,CodeGenerator,XRobot。

基础环境

Windows安装:

linux使用apt安装:

sudo apt update
sudo apt install -y git python3 python3-pip cmake tar xz-utils wget pipx ninja-build

基于GCC (旧版STM32 VSCode 插件)

Windows环境配置

需要安装STM32CubeCLT

Linux环境配置

需要安装的软件包:

sudo apt update
sudo apt install -y git python3 python3-pip cmake tar xz-utils wget pipx ninja-build

ARM官网下载适合你的编译器。例如使用x64的linux系统,请下载x86_64 Linux hosted cross toolchains下的AArch32 bare-metal target (arm-none-eabi),即为arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz。

解压后移动到/opt下,创建软链接/usr/local/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi,即可使用arm-none-eabi-前缀的命令,例如arm-none-eabi-gcc

然后使用链接命令:

sudo ln -s /opt/arm-gun-toolchain-xx.x/bin/* /usr/bin

基于GCC/Clang (新版STM32 VSCode 插件)

在STM32CubeMX (>=15.0)中,已经集成了Clang 相关工具链的CMake配置。 在Project Manager中选择Default Compiler/Linker为gcc或者starm-clang即可,不需要额外配置。

Default Compiler/Linker的设置会写到工程根目录的CMakePresets.json中的toolchainFile,为${sourceDir}/cmake/starm-clang.cmake或者${sourceDir}/cmake/gcc-arm-none-eabi.cmake

然后安装使用插件STMicroelectronics.stm32-vscode-extension的预览版本即可,插件会自行下载工具链等。

clangd 使用建议

ST 新版插件的 clangd 支持存在较多缺陷,建议直接停用 stmicroelectronics.stm32cube-ide-clangd 插件,转而使用 官方 llvm-vs-code-extensions.vscode-clangd 插件。并手动添加如下配置:

"clangd.arguments": [
"--query-driver=${env:CUBE_BUNDLE_PATH}/st-arm-clang/19.1.6+st.8/bin/starm-clang.exe,${env:CUBE_BUNDLE_PATH}/st-arm-clang/19.1.6+st.8/bin/starm-clang++.exe"
]

如使用 GCC 工具链,则需改为:

"clangd.arguments": [
"--query-driver=${env:CUBE_BUNDLE_PATH}/gnu-tools-for-stm32/10.3.1+st.3/bin/arm-none-eabi-gcc.exe,${env:CUBE_BUNDLE_PATH}/gnu-tools-for-stm32/10.3.1+st.3/bin/arm-none-eabi-g++.exe"
]

Windows 下 clangd 安装

可前往 LLVM 官网下载安装包。

Linux 下 clangd 安装

可直接通过 apt 安装。注意 Ubuntu 24.04 之前系统自带的 clangd 版本较老,遇到问题建议升级。


stm32cube-clangd 插件主要问题

  • 不会为 --query-driver 自动添加 C++ 编译器路径,且手动添加后每次打开工程会被覆盖
  • 无法识别 ST-ARM-CLANG 的 --multi-lib-config 编译选项

CLion / 命令行编译

windows需要先配置相关path

# gcc
set PATH=%PATH%;C:\Users\$env:USERNAME\AppData\Local\stm32cube\bundles\gnu-tools-for-stm32\${版本号}\bin

# starm-clang
set PATH=%PATH%;C:\Users\$env:USERNAME\AppData\Local\stm32cube\bundles\st-arm-clang\${版本号}\bin;

需要设置环境变量:

windows:

$env:GCC_TOOLCHAIN_ROOT = "C:\Users\$env:USERNAME\AppData\Local\stm32cube\bundles\gnu-tools-for-stm32\${版本号}\bin"
$env:CLANG_GCC_CMSIS_COMPILER = "C:\Users\$env:USERNAME\AppData\Local\stm32cube\bundles\st-arm-clang\${版本号}"

linux:

export GCC_TOOLCHAIN_ROOT=/opt/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi/bin
export CLANG_GCC_CMSIS_COMPILER=/opt/st-arm-clang

编译时还要指定-DCMAKE_TOOLCHAIN_FILE="cmake/gcc-arm-none-eabi.cmake"或者-DCMAKE_TOOLCHAIN_FILE="cmake/starm-clang.cmake"来选择工具链。对于使用starm-clang.cmake,还可以指定-DSTARM_TOOLCHAIN_CONFIGSTARM_HYBRID STARM_NEWLIB STARM_PICOLIBC三者中的一个,默认为STARM_HYBRID

旧版CubeMX工程(<15.0)迁移到新版本编译问题

如果提示链接不到库ob,则在工程根目录的CMakeLists.txt中添加:

# Remove wrong libob.a library dependency when using cpp files
list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_LIBRARIES ob)