macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现)

STM32的开发工具相对来说还是不少的,从STM32CubeMX支持生成的工程就能看出来。但是他们都基于Eclipse的,实际使用遇到过各种问题。

嵌入式开发工具都很原始,Keil、IAR、Eclipse,都算不上方便!是不是很羡慕Android开发者、QT开发者、前端开发者、后端开发者… …都有一个强大的IDE?
这里推荐使用CLion进行C/C++相关开发,这算得上目前C/C++最好的IDE了。

CLion从2019版本开始官方支持嵌入式开发,在低版本可搜索OpenOCD插件(不推荐),2019也就是把这个插件并入了。

本文介绍如何配置CLion用来开发和调试STM32。其他嵌入式项目也可作为参考。

注:

  • 测试环境是macOS,Ubuntu也是可以的,基本上一样。
  • 需使用CLion2019

这里有个例子,可参考:GitHub Repository

所需的软件和工具

  • STM32CubeMX
  • SW4STM32
  • CLion 2019
  • stlink调试器

生成项目

使用CubeMX生成SW4STM32的工程,用CLion直接打开项目目录即可。

编译

基本原理/过程:

CLion的插件根据SW4STM32项目生成CMake文件,这个cmake文件就是配置使用交叉编译器进行编译。
交叉编译器我们需要自行下载,如gcc-arm-none-eabi-8-2018-q4-major,然后把bin目录加入环境变量。

  • 安装交叉编译器

三种方式:

  1. 使用SW4STM32自带的,请在安装目录找。对于macOS它在/Applications/Ac6/SystemWorkbench.app/Contents/Eclipse/plugins/fr.ac6.mcu.externaltools.arm-none.macos64_1.17.0.201812190825/tools/compiler
  2. 在官网下载:https://developer.arm.com/tools-and-software
  3. 使用包管理器
brew cask install gcc-arm-embedded
  • 配置环境变量
    把交叉编译器的bin目录加入环境变量:
    PATH=$PATH:交叉编译器路径/bin

运行和调试:

用CLion这个插件/功能目前问题多多,直接使用是不行的,以下是解决方法。

  • 准备工具

烧写和调试芯片使用openocd和stlink。在macOS下,可使用下面的安装步骤。ubuntu下吧brew安装的包换成apt应该就可以。

brew install openocd
brew install stlink

创建配置文件:
新建config.cfg内容如下:

source [find interface/stlink-v2.cfg]
source [find target/stm32f1x.cfg]

其中第一行目前有三种stlink,对应的文件名为:
stlink-v1.cfg
stlink-v2.cfg
stlink-v2-1.cfg
第二行stm32f1x.cfg必须取自于openocd安装目录(mac下:/usr/local/Cellar/open-ocd/0.10.0/share/openocd/scripts/target)里有的。
基本上是类似如下:
stm32f0x.cfg
stm32f1x.cfg
stm32f2x.cfg
stm32f3x.cfg
stm32f4x.cfg
stm32f7x.cfg
stm32l0x.cfg
stm32l1x.cfg
stm32l4x.cfg
… …

配置cfg文件:
macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现)_第1张图片
关于上图的ASSIST按钮:CLion会自动检测这个目录下的cfg:/usr/local/Cellar/open-ocd/0.10.0/share/openocd/scripts/board,这个目录里是一些board的配置,我们一般用不到。为了以后使用方便,建议把他们删除或备份,清空目录后添加几个自己常用的放在上面,比如根据以上组合:stm32f1x-stlink-v2.cfg。这样就不用每次配置了。

配置调试器为GDB:
macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现)_第2张图片
完成以上设置后,设置任意断点,然后点击debug就能正常调试了~
如图:
macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现)_第3张图片

其他

SW4STM32无法烧写和调试

这是因为默认的配置需要我们手动复位,而且手动复位的时间很微妙,很不容易成功。需要设置如下即可:
macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现)_第4张图片
macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现)_第5张图片

你可能感兴趣的:(macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现))