前言

前段时间jetbrains的系列软件Clion对非商用使用免费啦!!!,并且对ST LinkJlink调试器提供了原生的支持,借着对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官方下载地址

STM32CubeCLT官方下载地址

创建工程

首先,我们打开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已经原生支持stlinkJlink调试器,所有我们在这里进行配置便可以编译下载啦。
首先要点击右上角文件菜单栏,然后进入设置选项。高级设置下,翻到最后面,有个启用调试服务器。
在这里插入图片描述然后在这里配置调试器选项。
在这里插入图片描述
选择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
)
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐