在动手之前,不妨先腾出10G的硬盘空间,因为交叉编译工具、CuteMX还有VS CODE扩展还是很吃空间。待到一切完成,看我那早已的泛红的硬盘剩余空间,竟更显窘迫了。
外国大儒Maxime的配置之法早已在案,也许因为缺乏细节描述,或者是系统环境不同,亦或是还没领会真髓,法术真正落地实施竟折腾了一整夜的光阴。 也罢,且泡一杯茶,慢慢走进ST Arm Clang与VS Code的因缘际会。
一、安装STM32CubeCLT 虽然原文中说可以自动安装,但还是手动踏实(而且我的VS CODE中并没有自动进行安装) STM32CubeCLT下载地址:https://www.st.com.cn/zh/development-tools/stm32cubeclt.html
下载windows版本 下载解压后得到安装文件:st-stm32cubeclt_1.19.0_25876_20250729_1159_x86_64.exe(1GB) 注意安装文件不要放在中文路径,否则安装报错。 运行安装文件,下一步下一步就可以安装成功。 我安装到了C:\ST\STM32CubeCLT_1.19.0
可以看到安装了CMake,Ninja,arm编译工具链,clang,命令行烧录工具等 st-clt-env.cmd是我自己添加的配置环境用命令行文件,后面会介绍。
以上STM32CubeCLT安装完毕。
二、升级STM32CubeMX 升级STM32CubeMX到v6.15,v6.15可以导出使用clang编译工具链的工程。
可以下载v6.15或者在打开STM32CubeMX按"check for updates"升级。
总所周知,STM32CubeMX的升级需要管理员身份,所以执行以上操作要以管理员身份打开。
三、VS CODE安装扩展 根据原文要安装STM32Cube for Visual Studio Code
因为要用到CMake,所以最好再安装CMake Tools
安装这些扩展的方式就是在VS CODE中按 按钮,在扩展商店里搜索扩展名,点击安装。 安装完扩展后,左边会多出两个图标:
CMAKE TOOLS
STM32Cube for Visual Studio Code
------------------------------------------------下面开始试用阶段------------------------------------------------
四、STM32CubeMX中新建工程
直接到最后一步,保存工程 Toolchain/IDC选择:CMake Default Compiler/Linker选择:Starm-Clang
生成代码
五、VS CODE基础环境搭建 如果未做任何处理直接用VS CODE打开上一步的生成文件夹,CMake一定会是一堆报错。为防止报错,我们需要给编译环境提供必要的环境变量、路径等等。 不知道ST是怎么实现这些的,没有深究,这里用命令行文件来实现。
在C:\ST\STM32CubeCLT_1.19.0中新建st-clt-env.cmd文件,内容如下: - @if not defined _echo echo off
- set errors=0
- goto main
- :AddToPath
- if exist "%~1" (
- echo Adding %1 to PATH
- set "PATH=%~1;%PATH%"
- )
- goto :EOF
- :VerifyExe
- echo Checking %1...
- cmd /c %2 >NUL 2>NUL
- if %ERRORLEVEL% neq 0 (
- echo ERROR: %1 is required but was not found.
- set /a errors += 1
- )
- goto :EOF
- :main
- echo *******************************************
- echo * ST CubeCLI(Clang/LLVM) for VSCODE Env *
- echo *******************************************
- echo set environment variables
- echo [1] ST_INSTALL_PATH=C:\ST\STM32CubeCLT_1.19.0
- echo [2] GCC_TOOLCHAIN_ROOT=C:\ST\STM32CubeCLT_1.19.0\GNU-tools-for-STM32\arm-none-eabi
- echo [3] CLANG_GCC_CMSIS_COMPILER=C:\ST\STM32CubeCLT_1.19.0\st-arm-clang
- echo *******************************************
- set "ST_INSTALL_PATH=C:\ST\STM32CubeCLT_1.19.0"
- set "GCC_TOOLCHAIN_ROOT=C:\ST\STM32CubeCLT_1.19.0\GNU-tools-for-STM32\arm-none-eabi"
- set "CLANG_GCC_CMSIS_COMPILER=C:\ST\STM32CubeCLT_1.19.0\st-arm-clang"
- rem Set the CMake generator explicitly
- set CMAKE_GENERATOR=Ninja
- echo set path
- call :AddToPath "%ST_INSTALL_PATH%\cmake\bin"
- call :AddToPath "%ST_INSTALL_PATH%\GNU-tools-for-STM32\arm-none-eabi\bin"
- call :AddToPath "%ST_INSTALL_PATH%\GNU-tools-for-STM32\bin"
- call :AddToPath "%ST_INSTALL_PATH%\Ninja\bin"
- call :AddToPath "%ST_INSTALL_PATH%\st-arm-clang\bin"
- call :AddToPath "%ST_INSTALL_PATH%\STM32CubeProgrammer\bin"
- call :VerifyExe "GNU Arm Embedded Toolchain" "arm-none-eabi-gcc --version"
- call :VerifyExe "CMake" "cmake --version"
- call :VerifyExe "Ninja" "ninja --version"
- call :VerifyExe "starm-clang" "starm-clang --version"
- echo *******************************************
- cd C:\C51\stm32h533\ledtest
- echo It's ready! type code into vs code
- exit /b %errors%
其中的环境变量 GCC_TOOLCHAIN_ROOT=C:\ST\STM32CubeCLT_1.19.0\GNU-tools-for-STM32\arm-none-eabi CLANG_GCC_CMSIS_COMPILER=C:\ST\STM32CubeCLT_1.19.0\st-arm-clang 是starm-clang.cmake、gcc-arm-none-eabi.cmake两个文件要求的,不设置CMAKE报错
在桌面上建一个CMD的快捷方式:ST-CLI- Developer Command Prompt 快捷方式的属性如下:
目标内容为:C:\WINDOWS\system32\cmd.exe /k "C:\ST\STM32CubeCLT_1.19.0\st-clt-env.cmd"
这样每次按这个快捷方式,就可以搭建好CLANG & VS CODE所需的外部环境。 运行一下: 输入code . 进入vs code
六、VS CODE中的操作 如果一切正确,进入VS CODE,会自动进行CMAKE配置,生成build文件夹及相关文件
在CMAKE TOOLS扩展中如下配置: 按生成,进行编译
编译输出:
运行终端任务
可以看到和编译、清除相关的命令,还有烧录命令。
使用arm-none-eabi做为编译工具 修改CMakePresets.json文件中 - "configurePresets": [
- {
- "name": "default",
- "hidden": true,
- "generator": "Ninja",
- "binaryDir": "${sourceDir}/build/${presetName}",
- "toolchainFile": "${sourceDir}/cmake/starm-clang.cmake",
- "cacheVariables": {}
- },
其中改为,"toolchainFile": "${sourceDir}/cmake/gcc-arm-none-eabi.cmake",
|