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文件:
在这里插入图片描述
关于上图的ASSIST按钮:CLion会自动检测这个目录下的cfg:/usr/local/Cellar/open-ocd/0.10.0/share/openocd/scripts/board,这个目录里是一些board的配置,我们一般用不到。为了以后使用方便,建议把他们删除或备份,清空目录后添加几个自己常用的放在上面,比如根据以上组合:stm32f1x-stlink-v2.cfg。这样就不用每次配置了。

配置调试器为GDB:
在这里插入图片描述
完成以上设置后,设置任意断点,然后点击debug就能正常调试了~
如图:
在这里插入图片描述

其他

SW4STM32无法烧写和调试

这是因为默认的配置需要我们手动复位,而且手动复位的时间很微妙,很不容易成功。需要设置如下即可:
在这里插入图片描述
在这里插入图片描述

PS:

新版本的openocd和clion有所变化。但是整体流程差不多:

找到openocd的scripts目录:
比如:/opt/homebrew/share/openocd/scripts/


board里有很多一般用不到,为了方便后续在IDE定位,先移动:
mv board board_backup

新建board文件夹并在里面创建一些自己使用的cfg(从board_backup复制修改):
比如:
stm32f1x-stlink.cfg
内部是:
source [find interface/stlink.cfg]
source [find target/stm32f1x.cfg]


后续使用它就可以了

PS:
对于jlink,类似上述过程,创建stm32f1x-jlink-swd.cfg
内容为:
source [find interface/jlink-swd.cfg]
source [find target/stm32f1x.cfg]
其中interface/jlink-swd.cfg来自于interface/jlink.cfg,在原有基础上修改成为:
adapter driver jlink
transport select swd

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值