Lazy loaded image
嵌入式软件
使用clion及stm32Cube搭建STM32编译开发环境
Words 1195Read Time 3 min
2025-9-14
2025-9-15
之前参考网上教程使用下载安装交叉编译链+安装openocd的方式实现了使用STMC32CUBE和clion配合进行STM32的开发,近期看见晚上关于新版本clion对嵌入式开发的支持有了新的升级,所以也尝试使用新方式来更简单的搭建clion开发STM32的环境。
本文搭建环境使用到的软件版本信息如下: Clion:2025.1.1 STM32Cube MX:6.14.1 STM32Cube CLT:1.18.0 OpenOCD:20210729-0.11.0
 

相关软件安装

Clion和STM32Cube MX的安装方式不赘述,Clion2025版本已经支持非商业的登录免费使用了,相比之前使用学生账号的方式更方便了。
貌似也是从2025.1.1版本之后对嵌入式的开发支持引入STM32Cube CLT,所以如果配置中有较大出入,可以考虑下是否是版本较低原因。
Openocd下载地址详见如下连接,尝试过版本20210729及20240916版本。下载后直接解压并记录存放位置即可。
STM32Cube MX较早版本在配置新项目时Toolchain/IDE选项中好像没有STM32CubeIDE和CMake选项(尝试6.12.x版本似乎没有CMake可选),所以建议安装或者升级到较新版本。
附带安装地址如下:

STM32CubeCLT安装

STM32CubeCLT是意法半导体转为STM32开发推出的一款一体化的多操作系统命令行工具集,我们使用IDE开发说需要使用的编译工具、编译链等均可在该工具集中找到并指定。
按照上述CLT的下载地址下载后为zip格式压缩包,解压后执行安装即可,请注意填写并记住安装位置,后续配置clion需要使用。
notion image

使用STM32CubeMX新建工程

使用STM32CubeMX建立工程的方法在此不做过多的描述,需要注意的是,在ProjectManager中的Toolchain/IDE中选择STM32CubeIDE生成代码。(当然选择Cmake也可,但是涉及到手动更改Cmake中信息时略繁琐)
notion image

Clion配置

进入clion,依次进入文件-设置-构建、执行、部署-嵌入式开发,如下图填入openocd、Stm32CubeMX及Stm32CubeCLT位置,需要注意的是openocd、Stm32CubeMX需要指定到同名的exe执行文件上。
notion image
notion image
可以通过电机对应后方的测试按钮确认路径指定是否成功。
确认后点击下方确定保存。
notion image

编译工程

进入clion,点击打开,选择通过cube创建的工程。
notion image
此时默认clion应该不变异或使用存储的默认编译工具链进行编译,我们需要指定编译工具链。
进入设置-构建、执行、部署-工具链,点击加号增加“系统”工具,并在后方将各内容路径指定均为STM32CubeCLT中的工具地址。
工具链的名称可自行命名,便于查找即可,填写完毕后选择应用记录该工具链。
notion image
再进入左侧cmake选项,点击加号增加(或已存在配置文件可以直接更改),我们选择工具链为上一步命名的工具链名称,生成器选择Ninja,构建目录可以自行命名或者维持默认。
notion image
确认后,项目应该会自动执行cmake,点击右上方锤子进行构建。
notion image
构建完成后会在终端显示具体RAM及Flash的占用情况。构建完成的elf等文件会保存在前文Cmake配置中指定的构建目录内。

代码烧录

clion支持了STLINK调试器的集成环境。
具体烧录操作如下。
点击右上角调试服务器设置,选择编辑调试服务器。(如无调试服务器图标可能需要再设置-高级设置—调试器—勾选”弃用调试服务器“选项)
notion image
notion image
点击加号/新增,增加一个ST-LINK调试服务器。可执行文件需要指定到CLT目录下STLink-gdb-server/bin/ST-LINK_gdbserver.exe,程序员需要指定到CLT目录下STM32CubeProgrammer/bin/目录下。传接口、初始速度可不更改。设备设置选项卡中可根据需求对stlink进行配置。
notion image
notion image
notion image
配置结束后点击确定按钮,并将上方调试服务器选择ST-LINK,连接上ST-LINK及目标芯片电路板,并点击运行按钮,节课将程序刷写到芯片中。
notion image
上一篇
下一篇
使用C与C++混合编程实现STM32开发