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官网下载
官网
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第1张图片点击下载后可以能会让你输入邮箱,然后自动跳出下载内容

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

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
      克隆代码后,进入文件夹,下图是一些准备工作ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第2张图片要安装一些依赖,不用担心都可以用apt安装,大部分系统可能自带了,最好都安一下确保都有
      然后安装提示一步步执行
      ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第3张图片

4、安装stlink驱动

github地址
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第4张图片
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第5张图片下载后安装deb包

5、 安装arm编译器

sudo apt install gcc-arm-none-eabi

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

6、配置clion

打开设置->构建、执行和部署->嵌入式开发
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第6张图片配置你的openocd和stm32cubemx的位置,定位到可执行文件,点击一下测试看看是否正确

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

7、新建工程

ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第7张图片注意记住自己起的工程的名字,这里我起名test,后面要用
正在创建
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第8张图片
创建完成后点击通过stm32cubemx打开ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第9张图片ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第10张图片
stm32cubemx打开后是一默认的单片机,这里点击型号选择自己的芯片型号ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第11张图片
我的板子是stm32f407,然后点击开始工程
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第12张图片出现了407的引脚图
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第13张图片后面设置时钟,配置io啥的不讲了,不了解的自行百度stm32cubemx的使用教程

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

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

看一下工程结构
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第21张图片
每次代码结构改动后点一下这个ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第22张图片

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,否则我早删除了,现在这样是把它作为一个普通文件存在
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第23张图片接下来重点了,为啥要在自己的文件里定义main函数呢,因为我要用C++,哈哈,clion写c++,爽到爆,智能提示好用度比stm32cubeide高100倍
说明一下,现在arm-gcc/arm-g++编译器是支持C++的,keil5 的编译器V6版也是支持C++的。
可能有些高级库不支持,但基本上C++11的功能大多支持的。至于说C++编译后程序体积比纯C大问题,看项目情况,如果芯片空间大的话,能用C++还是果断用,底层驱动用C,上层业务用C++,个人觉得是很合理的。
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第24张图片
我们定义个简单的控制led开关的类ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第25张图片程序完成后配置一下启动任务,把下载勾选始终下载,这样每次点击运行后,会先把程序自动下载进去
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第26张图片

编译会报错,找不到我们刚刚添加的main.cpp
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第27张图片点击
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第28张图片再次编译,成功
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第29张图片
点击运行ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第30张图片

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
ubuntu 使用clion 搭建stm32开环境使用stlink下载调试_第31张图片

你可能感兴趣的:(STM32,stm32,Clion,ubuntu,openocd)