优雅的用优雅的CLion进行STM32开发(全流程)

前期准备

软件准备

  • Clion 2022.3
  • STM32CubeMX
  • MinGW
  • OpenOCD
  • arm-none-eabi-gcc

硬件环境

  • windows系统
  • 野火挑战者V1开发板 STM32F429IGT6
  • 调试工具:STlink V2,DapLink,Jlink(有点不合适,因为要阉割后才能使用,后面说明)

环境准备

  • MinGW

        Clion需要使用MinGW环境来配置工具链。记住这句话

MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。

另有可用于产生32位及64位Windows可执行文件的MinGW-w64项目,是从原本MinGW产生的分支。如今已经独立发展

要知道,GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC 编译器,可以安装 GCC 的移植版本。

目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin。其中,MinGW 侧重于服务 Windows 用户可以使用 GCC 编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,使用更方便;而 Cygwin 则可以提供一个完整的 Linux 环境,借助它不仅可以在 Windows 平台上使用 GCC 编译器,理论上可以运行 Linux 平台上所有的程序。

有的同学可能会问,x86架构编译的程序不是不能给ARM架构的stm32使用吗,的确如此,这里我们主要是使用MinGW的make功能,如果找不到mingw32-make也就是,复制一份重命名为make.exe

很多其他的的帖子上需要安装MinGW,其实Clion安装的时候自带MinGW,自带的MinGW添加到环境变量中也没有问题

我只是简单的验证了一下,但是没有用于实际开发,还是随大流安装MinGW w64

 下载链接:MinGW-w64 - for 32 and 64 bit Windows - Browse /mingw-w64 at SourceForge.net

  • OpenOCD 开源的下载调试工具

 Download OpenOCD for Windows

  • arm-none-eabi-gcc 交叉编译环境

        在x86架构(即PC)编译的程序不能在ARM架构的stm32上运行,必须使用ARM的交叉编译工具链

具体的交叉编译环境的区别可以看这个帖子 ,说的很清楚ARM交叉编译器GNUEABI、NONE-EABI、ARM-EABI、GNUEABIHF等的区别_Tomhex的博客-CSDN博客因为是进行STM32的开发 裸机(bare metal)开发,所以选择这个版本

 下载链接 :Arm GNU Toolchain Downloads – Arm Developer

  •  CMake(自己决定,不用下载安装)

 有些帖子上安装了CMake,是想用Cmake,但是CLion自带很多的构建工具

 Cmake文件夹中的Cmake,MinGW文件夹中的mingw32-make,ninja文件夹中的ninja,所以不用下载,用Clion中自带的很多就可以,跳过

如果想要了解清楚,可以看这篇文章  GCC、CMake、CMakelist、Make、Makefile、Ninja啥关系?一图讲透!

  • Clion的安装和河蟹 

会搜索 会淘宝就行,那是一片广阔的世界,你值得拥有 

  • STM32CubeMX 

        默认安装即可

  • 环境变量的添加

以上 以上 OpenOCD/MinGW/Arm-none-eabi-gcc这三个需要添加进环境变量中的,我集中放在一个文件夹中,放在C盘中,路径中千万不要有中文或者空格存在,不然后面出问题排查很麻烦

 随后进行环境变量的添加,在windows搜索框中输入环境,就会出现编辑系统环境变量,按下图进行添加

验证一下,在CMD或者一些终端上验证结果如下

其中关于gcc -v,有些帖子也是这样验证:mingw32-make,其实一样的,都是验证mingw的bin是否成功添加进环境变量

 CLion配置

需要在设置中进行如下的设置

工具链配置

如果你平时还会使用 CLion 开发一般的 C/C++ 项目,可以创建两个工具链配置,一个作为普通 C/C++ 开发工具使用,另一个配置 arm-none-eabi-gcc 用于 STM32 的开发。

因为我只进行STM32的开发,所以只配置了一个工具链,先放出来我自己的配置

下面针对几个关键的配置选择进行说明

  • 名称

        区别于C的开发即可,我只保留了一个STM32的

  • 工具集

         我用CLion自带的MinGW ,而没有用前面自行安装的,其实是一样的,你可以切换看下,Clion自带的MinGW w64版本高些,所以,你懂的,丰俭由人。

  • CMake

        直接默认的,因为前面说了有些会额外安装CMake,但是CLion已经自带了,没必要,默认即可

  •  构建工具  

        可以默认使用CLion自带的Ninja.exe或者mingw32-make.exe,还可以选择自己安装的mingw中的mingw32-make.exe,我选择了后面的 自己安装的mingw中的mingw32-make,但是选择ninja.exe,在有很多文件的条件下,编译速度会快很多。

  • C/C++ 编译器

        这个必须要选择交叉编译环境中的gcc /g++

  •  调试器

        选择编译器相同文件路径下的gdb工具,有版本限制,注意一下。关于这个Debugger,有些人选择Clion默认的bundled版本才可以开发,但是有人反馈使用的默认的不能进Debugger

Cmake配置

 首先上方的那个勾选上,工具链选择你上一步刚命名的,生成器 选择 使用默认值

嵌入式开发

 选择openocd/STM32CubeMX,后面的测试按键可以检测。跳过

STM32CubeMX配置

  • ToolChain/IDE

STM32CubeIDE 或者 SW4STM32 均可用于 CLion

但是在STM32CubeMX更新后,具体哪个版本未知,我使用的V6.9.1,不再支持设置为SW4STM32了,设置为STM32CubeIDE,Clion也可以识别

  • Location

注意 注意 注意CLion新建STM32CubeMX工程的路径要和STM32CubeMX中最后的ToolChain Folder Location一致,否则Clion可能无法识别。

Clion开发编译调试下载

本来想用野火的开发板演示下,但是不太想动,还是重新建一个项目吧 ,用反客的Fanke429BIT6开发板演示下

新建项目

 ,记住这个路径,点击创建后等待STM32CUbeMX启动

弹出一弹窗,这个是配置编译下载器相关的,先跳过,后面再说

 点击打开,跳转到CubeMX中,默认会出现STM32F030的,需要根据自己的板子MCU重新选择

 其他的常规配置前面有说一些,我们来看下最重要的两个

 这个ToolChain Folder Location必须和前面创建CLion工程的路径一致,必须,必须,必须

Toolchain IDE 现在只能选择STM32CubeIDE了。没得选了。然后Generate Code,完成关闭CubeMX。

然后在CLion中等待一下或者双击面板,会出现面板配置文件,还是跳过,还没到下载和编译阶段,不选择的原因后面会详细说。现在还是选择跳过

现在说下这个,有些帖子说在CubeMX生成文件后,需要在这里操作下

 其实,可以不用这么操作,我们前面在CLion设置的CMake上有勾选一个,就是起到自动重新加载Cmake项目的作用。

编译/下载

 CubeMX生成文件后,Clion自动加载,此时跳过点灯代码编写,随便写一个HAL_GPIO_WritePin驱动LED,现在进行编译/下载操作

添加/编写配置

 选择OpenOCD下载并运行

 修改如下

目标和可执行文件这个默认即可, 重点是面板配置文件,也就是之前出现好几次的弹窗,选择跳过的那个,现在来解释下为什么先前要跳过去。

调试单片机程序需要调试器,在 Keil 或者 IAR 等 IDE 中可以通过图形界面选择需要的调试器,但 CLion 本身并没有调试 STM32 的能力,而是要通过 OpenOCD。OpenOCD 则通过调试配置文件确定使用的调试器和目标芯片类型。打开 OpenOCD 的软件目录 openocd-0.10.0\share\openocd\scripts (不同版本可能有所差异),可以看到下面三个文件夹:board, interface, target

  • board 文件夹存储了各家厂商官方开发板的配置文件,如果你使用的是 ST 官方出品的开发板,就可以直接使用其中的调试文件,例如 _NUCLEO_-_F103RB_(如下图) ,那么 board 文件夹中的 st_nucleo_f103rb.cfg 就是你应该选择的,其他官方开发板同理。
  • interface 文件夹存储了各种调试器的配置文件,包括 cmsis-dap、stlink-v2 等。
  • target 文件夹则存储了各种芯片的配置文件,例如 stm32f1x.cfg 就对应着 STM32F1 系列。

正点原子、野火等国内企业出品的开发板不属于官方开发板,自然在 board 文件夹中不会有他们的配置文件,因此我们需要根据自己使用的调试器和芯片,写自己的配置文件。

新建一个cfg格式的文件,位置可以设置在项目工程文件夹里面也可以放在openocd->share->openocd->scripts->board中,就看自己怎么方便了,包括后续的管理,具体的文件内容如下:

在配置文件中不要加reset_config srst_only这一句,会导致下载失败,这一句是指示系统重启的,删除不影响下载。

Fanke429BIT6_Link.cfg

# CMSIS-DAP 和 DAPLink 其实不是同一个东西,但都使用同一个调试器配置
#打开interface目录下的cmsis-dap.cfg文件,可以知道就是下面的注释掉的第一行
#adapter driver cmsis-dap
source [find interface/cmsis-dap.cfg]

# 使用 swd 调试接口
transport select swd

# stlink将下面两行取消注释
#source [find interface/stlink.cfg]
#transport select hla_swd

# 目标芯片设定为 STM32F4 系列  在target目录下
source [find target/stm32f4x.cfg]

# download speed = 10MHz
adapter speed 10000

# 不使用复位接口
#reset_config srst_only
reset_config none

这个只是展示cfg文件的作用是什么,我们需要告诉CLion芯片名称和下载器的型号,所以我们要先写好一个config文件,以后直接在CLion引用即可。这样就不用每次新建工程都新添加一次文件了

现场演示下如何编写cfg文件,我用的Daplink ,stlink也是一样的

 

 

 编写面板配置文件完成,开始修改运行/调试配置 ,将刚才的面板配置文件导入即可

 编译/下载

编译

 编译结果如下:

 下载

点击运行即可进行下载操作

 

 调试 Debugger

点击右上角的虫子按钮即可开始调试。与 STM32CubeIDE 开始调试后自动在 main 函数停止不同,CLion 中调试要手动添加断点才会停下来 因此点击Debug之后会暂停在断点处,需要重置后这些才可以操作单步调试。

 查看寄存器

直接查看 STM32 单片机各寄存器的值,方便在寄存器层面进行调试

需要下载到对应芯片的系统视图描述(SVD)文件,导入后才能正常显示。打开CubeMX->Help->Docs and Resources中找到System View Description,如下图。选择其中一个文件保存到一个适当的文件夹内。之后在Clion添加.svd文件,找到自己保存的文件地址添加进去即可。

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值