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
基于GCC/Clang (新版STM32 VSCode 插件)
在STM32CubeMX (>=15.0)中,已经集成了Clang 相关工具链的CMake配置。 在Project Manager
中选择Default Compiler/Linker
为gcc或者starm-clang即可,不需要额外配置。LibXR_CppCodeGenerator提供的xr_stm32_toolchain_switch
可以用于切换编译器与标准库。
在VSCode中安装使用插件STMicroelectronics.stm32-vscode-extension
的预览版本即可,插件会自行下载工具链等资源。
Setup STM32Cube project的时候建议选择混合模式(gcc+starm-clang)以便适应所有情况。
stm32cube-clangd 插件主要问题
不会为:新版已经修复--query-driver
自动添加 C++ 编译器路径,且手动添加后每次打开工程会被覆盖- 无法识别 ST-ARM-CLANG 的
--multi-lib-config
编译选项:避免使用混合(Hybrid)模式的starm-clang编译器,gcc、starm-clang+newlib和starm-clang+picolibc模式的starm-clang编译器均可以正常使用,推荐使用picolibc。
CLion / 命令行编译
windows需要先配置相关path。安装STM32CubeCLT可能会简化下面某些设置。
# 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"
来选择工具链。
旧版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)
基于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