CLion开发STM32单片机以Cmake构建工程 快来体验吧~~~
本文介绍了如何使用Clion进行STM32开发的详细流程。首先说明Clion已对非商用免费,并原生支持ST-Link和J-Link调试器。接着详细讲解了工程创建步骤:通过STM32CubeMX生成CMake工程,配置工具链(分带/不带CMakePresets.json文件两种情况),并安装STM32CubeCLT提供必要的开发工具链。重点说明了调试器配置方法,包括启用调试服务器、设置ST-Link
前言
前段时间jetbrains的系列软件Clion对非商用使用免费啦!!!,并且对ST Link,Jlink调试器提供了原生的支持,借着对cmake+ninja构建工程的学习和对自己写的步进电机驱动库的测试的机会,写一篇如何使用Clion愉快开发stm32的笔记。
开始前,我们需要去官网下载Clion,安装过程网上很多不做赘述,安装比较简单。其次,我们还需准备ST公司提供的调试工具STM32CubeCLT,之前开发我们需要自己去准备Cmake、arm-gcc、ninja、openOCD等工具,ST公司非常贴心的为我们打包了STM32CubeCLT。
在STM32CubeCLT的安装路径中,我们可以看到官方是给出Cmake+Ninja来构建工程,使用GNU专门给STM32工具链,也就是我们常见的arm-gcc编译工具链,这里不再细述。
本文使用的软件版本:
STM32CubeMX:version 6.15.0(不同版本生成的Cmake工程会有区别,新版会多一个CMakePresets.json文件,本文是有这个文件的工程)
STM32CubeCLT:version 1.18.0
创建工程
首先,我们打开Clion,选择新建项目。

接下来,我们要用STM32CubeMX创建一个基础的工程,和我们平常使用没有其他的区别,唯一的区别在于选择生成工程的模板为Cmake,然后我们正常GENERATE CODE即可。
生成的目录工程目录如下
配置工程工具链
进入工程后,会弹出构建工程的设置界面,没有弹出的,可以自己手动找到。
点击设置后选择Cmake设置。
如果STM32CubeMX生成的工程不带CMakePresets.json文件,需要在这里新建配置,自己选择一下配置,我分两种情况进行讲解。这里非常重要
首先是工程自带CMakePresets.json文件

点击确定即可,这里相当于ide会根据json文件里面的配置进行预设,我们可以看到在下它指定了工具链的配置文件位置。toolchainFile": "${sourceDir}/cmake/gcc-arm-none-eabi.cmake"。感兴趣的朋友可以进这个.cmake文件看看,便可以理解。
CMakePresets.json:
{
"version": 3,
"configurePresets": [
{
"name": "default",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"toolchainFile": "${sourceDir}/cmake/gcc-arm-none-eabi.cmake",
"cacheVariables": {
}
},
{
"name": "Debug",
"inherits": "default",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "Release",
"inherits": "default",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
}
],
"buildPresets": [
{
"name": "Debug",
"configurePreset": "Debug"
},
{
"name": "Release",
"configurePreset": "Release"
}
]
}
我们配置完Cmake设置,确定后可以重新加载Cmake工程,防止设置没生效。
加载后我们可以看到生成了build文件夹,并且下方终端会有一些路径加载的信息。
工程不带预设文件(如果有预设文件这里不用看,可以用作了解预设文件做了什么,直接跳到调试器那一章)

这里的名称可以自己定
配置好工具链的位置,就是我们下载的STM32CuBeCLT工具链的地址即可,已经都打包了,我们只需要去里面找到对应的二进制位置地址就行。
接下来回到Cmake配置界面,然后工具链选择我们刚才配置的就好了,其他配置可以按下图进行设置
点击确认后会生成一个debug的构建文件夹,这一步就做完啦,这个后缀的名字是上面填的,如果你填的和我不一样,自然这里文件夹名字不一样。
调试器
配置调试器
现在Clion已经原生支持stlink和Jlink调试器,所有我们在这里进行配置便可以编译下载啦。
首先要点击右上角文件菜单栏,然后进入设置选项。高级设置下,翻到最后面,有个启用调试服务器。
然后在这里配置调试器选项。
选择stlink(按自己的下载器选)

按自己STM32CubeCLT的位置填写对应的可执行文件exe和..\bin地址,这里应该会默认找到的。配置完记得点确认


配置完成如下图会出现ST-LINK

点击构建,开始编译工程,构建成功如下图,然后可以下载啦!

点击小三角型进行下载,下载后可以在服务框看到下载的输出信息。

下载完成~
调试操作
添加断点在语句旁边点击即可,和其他ide是差不多的。
可以查看内存状态

也可以看外设,外设要加载svd文件,该文件在STM32CubeCLT目录下

选好svd文件后我们可以选择外设啦,想看的寄存器打勾就行。


如何添加自己的驱动代码
CMake语法
笔者自己也不太熟悉,只能列出几条常用的,够用就行😂
将文件添加到现有目标的写法:
#添加源文件
target_sources(目标名称 可见性 [源文件列表])
#添加头文件路径
target_include_directories(目标名称 可见性 [目录列表])
通配符定义法(貌似不太好的写法):
# 收集 src 目录下所有 .c 文件(仅当前目录,不含子目录)
file(GLOB SOURCES "src/*.c")
# 收集 include 目录下所有 .h 和 .hpp 文件
file(GLOB HEADERS "include/*.h" "include/*.hpp")
# 收集 src 目录及所有子目录下的 .c 和 .cpp 文件
file(GLOB_RECURSE ALL_SOURCES
"src/*.c"
"src/*.cpp"
)
# 收集项目中所有 .h 头文件(包括任意层级子目录)
file(GLOB_RECURSE ALL_HEADERS "*.h")
添加自定义文件
这里笔者添加了自己的文件,然后在main.c我们可以#include “文件名”

再到工作根目录下的CMakeLists.txt中添加自己文件的路径

如果使用通配符写法,如下所示
#通配符写法 收集bsp/stepper_driver/Src所有.c文件
file(GLOB_RECURSE STEPPER_SOURCE bsp/stepper_driver/Src/*C)
# Add sources to executable
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
# Add user sources here
# bsp/stepper_driver/Src/stepper_driver.c
${STEPPER_SOURCE}
)
# Add include paths
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
# Add user defined include paths
bsp/stepper_driver/Inc
)
更多推荐



所有评论(0)