ubuntu 使用clion 搭建stm32开环境使用stlink下载调试

linux下开发stm32的选择

stm32cubeide 是支持linux的,可以用它在linux下来开发stm32,但是cubeide是魔改版的eclipse,反正我是用不习惯,太难用了。clion貌似从2019就指数stm32 了,所以打算试一试。

废话不多说,开始

1、 下载clion

官网
clion 是jetbrains全家桶里的一个,收费,可以试用一个月

  • 下载完成后解压,进入解压目录里的bin目录,在控制台执行clion.sh即可。
  • 关于ubuntu下如何创建clion的快捷方式,自行百度,文章很多不再啰嗦了。

2、下载stm32cubemx

这样我们可以用cubemx自动生成一些配置代码,非常方便,当然你也可以全部手撸不嫌费事的话。stm32cubeide=eclipse+cubemx,我们相当于把eclipse换成clion。
建议去st官网下载
官网
请添加图片描述点击下载后可以能会让你输入邮箱,然后自动跳出下载内容

下载后解压,执行解压目录下的可执行文件,选择默认安装位置即可

3、安装openocd(重要,重要,重要)

注意ubuntu 的apt源里可以安装openocd,但是版本是0.10,不支持stlink V3,建议从源码编译安装

  • apt安装
    • sudo apt install openocd

  • 编译安装
    • github 获取源码
      github地址
      也可以在桌面新建一个文件夹,然后进入文件夹,在此打开终端,执行
      git clone https://github.com/openocd-org/openocd.git
      克隆代码后,进入文件夹,下图是一些准备工作在这里插入图片描述要安装一些依赖,不用担心都可以用apt安装,大部分系统可能自带了,最好都安一下确保都有
      然后安装提示一步步执行
      请添加图片描述

4、安装stlink驱动

github地址
请添加图片描述
请添加图片描述下载后安装deb包

5、 安装arm编译器

sudo apt install gcc-arm-none-eabi

安装工作终于完成,接下载开始正式建立工程

6、配置clion

打开设置->构建、执行和部署->嵌入式开发
请添加图片描述配置你的openocd和stm32cubemx的位置,定位到可执行文件,点击一下测试看看是否正确

ps: 插件库可以下载官方的中文汉化包

7、新建工程

请添加图片描述注意记住自己起的工程的名字,这里我起名test,后面要用
正在创建
请添加图片描述
创建完成后点击通过stm32cubemx打开请添加图片描述请添加图片描述
stm32cubemx打开后是一默认的单片机,这里点击型号选择自己的芯片型号请添加图片描述
我的板子是stm32f407,然后点击开始工程
请添加图片描述出现了407的引脚图
请添加图片描述后面设置时钟,配置io啥的不讲了,不了解的自行百度stm32cubemx的使用教程

这里注意工程名一定要和刚刚创建的一致,路径也要仔细检查,这样才会覆盖旧的文件,否则clion会自动创建一个子文件夹,导致不能正确读取配置
请添加图片描述这里选择创建.h文件,项目结构会更清晰,方便后续开发
请添加图片描述
这里选择不自动生成main函数
解释一下原因:我想把main函数放到我自己创建的代码文件里,如果不勾选,每次用mx更新代码后,即使你删除了它自动生成的main函数,还是又自动创建,就很烦,所以我选择不生成,至于为什么我要把main函数放到其他文件里,后面会说
请添加图片描述
Toolchain/IDE就选择stm32cubeide就行

出现这样表示配置成功,否则请检查一下路径和名称请添加图片描述创建成功后,不要选择打开文件或工程,直接close就行,回到clion
请添加图片描述clion自动检测到工程,我是f407,clion自动给我选择了f4的openocd配置文件,很智能,这里选择复制到项目并使用,放到项目里好修改
请添加图片描述配置一下openocd
407的flash是512kb,我用的stlink,swd调试
在这里插入图片描述

看一下工程结构
请添加图片描述
每次代码结构改动后点一下这个请添加图片描述

8、实现一个最简单的LED闪烁

mx自动生成的main.c文件里有几个初始化的函数,我们手动把定义移动到main.h中,因为我后面不用main.c作为程序入口,只把它作为一个普通代码文件,只不过名字就main.c/main.h,如果你的程序入口打算就用main.c,那么可以不同改动。
这里系统时钟的配置函数是在main.c中定义的,我把它在mian.h中再定义一次,这样使用时只要包含main.h就行了。
为啥不把main.c删除呢,因为每次更新配置后mx会自动生成main.c,否则我早删除了,现在这样是把它作为一个普通文件存在
请添加图片描述接下来重点了,为啥要在自己的文件里定义main函数呢,因为我要用C++,哈哈,clion写c++,爽到爆,智能提示好用度比stm32cubeide高100倍
说明一下,现在arm-gcc/arm-g++编译器是支持C++的,keil5 的编译器V6版也是支持C++的。
可能有些高级库不支持,但基本上C++11的功能大多支持的。至于说C++编译后程序体积比纯C大问题,看项目情况,如果芯片空间大的话,能用C++还是果断用,底层驱动用C,上层业务用C++,个人觉得是很合理的。
请添加图片描述
我们定义个简单的控制led开关的类请添加图片描述程序完成后配置一下启动任务,把下载勾选始终下载,这样每次点击运行后,会先把程序自动下载进去
请添加图片描述

编译会报错,找不到我们刚刚添加的main.cpp
请添加图片描述点击
请添加图片描述再次编译,成功
请添加图片描述
点击运行请添加图片描述

请添加图片描述

9、在线调试

这里选运行,默认是初始化,需要手动复位才会进入调试状态,选择运行后,我们点击调试,程序会自动下载并运行,进入调试状态。
![请添加图片描述](https://img-blog.csdnimg.cn/6bc19861631d486aab3f28e847793e0c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Z-z5p-v6Lev5b63,size_20,color_FFFFFF,t_70,g_se,x_16
请添加图片描述

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值