如何使用Clion配合cubeMX

- 3 mins read
WARNING
这个笔记基于Clion 2025.2.4以及CubeMX 6.15.0 请谨慎参考,不过考虑到st现在主推cmake这套方案,应该是长期支持的

环境准备

首先你需要一个最新的cubeMX,连接如下:

https://www.st.com/en/development-tools/stm32cubemx.html

接着你需要一个Clion,目前听说非商用的软件已经免费,大家可以去官网下载。

也可以搞破解版,例如:

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk4ODQ3MzgzNw==&action=getalbum&album_id=3996555290526154761&scene=21#wechat_redirect

这里面是整个jetBrian的总合,是可以单独安装的,只安装Clion即可

然后是比较重要的,你需要一个stm32的工具链STM32CubeCLT_1.19.0

https://www.st.com/en/development-tools/stm32cubeclt.html

这里边包含了一套针对嵌入式的完整的开发工具链,包括cmake,生成工具ninja,以及编译器链接器g++、gcc等等。

你需要把STM32CubeCLT_1.19.0\GNU-tools-for-STM32\bin路径添加到环境变量

准备好工具之后,就可以开始开发。

新建项目(cube)

首先打开cubeMX,根据手中的芯片新建工程,这里以f103为例

配置外部高速晶振,配置调试口

image-20251201202649534

配置时钟树

image-20251201202728990

然后在生成工程界面选择新的cmake-gcc:

image-20251201202856446

然后点击generate code

配置工程(clion)

在clion中选择新建工程,随后选择到cubeMX界面

image-20251201203133282

然后在项目路径中选择到刚才生成的cube工程的文件夹,随后右下角的继续便可以点击:

image-20251201203245778

点击继续,此时便会弹出项目配置向导,因为我们还没配置工具链所以现在先不管,直接继续。

image-20251201203412909

现在是无法编译下载的,因为cmake工程报错,不要慌,打开设置,找到Build, Execution, Deployment->Toolchains

image-20251201203511442

新建一个System的项目,这里名字可以起一个STM32之类的接下来cmake选CLT中带的cmake,build tool选择CLT中的ninja,c compiler选择gcc,c++ compiler选择g++,类似下面这样:

image-20251201203615162

image-20251201204152510

GDB既可以选择clion自带的也可以选CLT中的,这里我选择的是自带的。

随后切换到CMake界面

image-20251201204437398

将tool chain选择为刚才新建的STM32,Generator选择use default ninja,然后CMake option中添加下面这段:

-D CMAKE_TOOLCHAIN_FILE=./cmake/gcc-arm-none-eabi.cmake

随后点击OK,就可以发现cmake项目配置成功了。cmake显示complete,右上角也出现了编译下载调试三件套

image-20251201204900897

如果想要添加文件到项目

你可以手动创建

右键你要创建的位置然后new c/c++ source file,可以直接选择将文件添加到项目中

image-20251201205121804

请注意这里要添加到主项目中,即第一个选项,项目根目录里的CMakeLists.txt。

可以添加已有的文件

也可以将已有的文件拖到文件夹中,右键手动添加到项目中:

image-20251201205309983

IMPORTANT
这个笔记基于Clion 2025.2.4以及CubeMX 6.15.0 请谨慎参考,不过考虑到st现在主推cmake这套方案,应该是长期支持的

如果想添加新的include路径

需要在主项目的CMakeLists中的对应位置添加:

# Add include paths
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F1xx_HAL_Driver/Inc
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/CMSIS/Device/ST/STM32F1xx/Include
    ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/CMSIS/Include
    # Add user defined include paths
)

进行下载

如果连接的stlink,你可以直接点击右上角的箭头下载,同时你也可以使用stm32cubeprogrammer,选择你在cmake界面中设置的编译路径中生成的.elf文件

image-20251201210126851

image-20251201210209833

如果你的下载软件不支持.elf文件,如STLink Utility你可以选择将其转化为.bin文件:

在终端中输入:

 arm-none-eabi-objcopy.exe -O binary -S .\cmake-build-debug-stm32\clionDemo.elf .\cmake-build-debug-stm32\clionDemo.bin    

这是一个多功能的生成工具,支持的文件类型有:

arm-none-eabi-objcopy.exe: supported targets: elf32-littlearm elf32-littlearm-fdpic elf32-bigarm elf32-bigarm-fdpic elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex plugin

运行完之后就可以看到生成了bin文件,就可以使用其他工具下载了,同时你也可以使用openOCD下载,这里不再展示,因为没有尝试(嫌每个项目都要重新配置配置文件太麻烦)。