硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1844|回复: 22
收起左侧

[VS Code] 在vscode上基于cubemx和cubecl搭建stm32开发环境

  [复制链接]

6

主题

27

回帖

50

积分

初级会员

积分
50
发表于 2025-3-11 16:15:17 | 显示全部楼层 |阅读模式
看到网上还有很多在为keil的各种bug而烦恼为它的过时的ui而吐槽的,在这里分享一下我已经用了一年多的基于vscode的stm32开发环境.

!!!本方法无需在下载各种插件后还要进行层层配置,也不用手写各种json文件!!!

先说下整体感受,keil的debug功能的强大不管是stm32cubeide还是本文用到的cortex-debug都无法比拟,用vscode开发的理由无非是为了它的代码补全以及cursor和trae的自动补全,keil不能接入AI,在开发效率上就已经完败了。



因此接下来将介绍stm32cubemx+stm32cubeclt+vscode(cursor,trae)+vscode的扩展stm32 vscode extensions+stlink调试器搭建而成的stm32全套开发环境以及开发流程。

------------------------------------------------------------------------------------------------------------
一、准备工作
安装好上面提到的软件,这里提供cubeclt的下载链接 https://download.csdn.net/download/weixin_41958698/90073832?spm=1001.2014.3001.5503

如果用的是trae,插件市场没办法下载stm32 vscode extensions, 这里提供该插件下载链接 https://download.csdn.net/download/weixin_41958698/90455550?spm=1001.2014.3001.5503

必要插件:

1. CMake
2. CMake Tools
3. C/C++
4. Cortex-Debug
5. stm32 vscode extensions

其他推荐插件:

1. Binary Viewer
2. cland
3. Hex Editor
4. LinkerScript

二、开发流程
以stm32h723zgt6为例,用cubemx建立一个最简单的工程来演示。

1、cubemx生成cmake工程
cubemx简单配置一下时钟源和时钟树,再选择tim6做系统时钟时基,其他不做任何额外的配置,直奔project manager界面。

image.png
选择cmake编译工具即可,点击生成代码。

2、配置stm32 vscode extensions
在设置中搜索stm32,配置cubemx和cubeclt的路径:

1

1


[/url]

在侧边栏找到stm32 vscode extensions, 点击import cmake projects。

2

2



选择你的工程文件夹,点击import project

3

3



这时你会发现工程中多了一个文件夹

4

4



这个文件夹的内容包括了对本工程编程语言格式的规定,cortex-debug调试的配置,stlink的链接,编译任务和调试任务的脚本都给你自动写好了。



3、cmake编译工程[url=https://github.com/newtonltr/blogs/blob/main/%E5%9C%A8vscode%E4%B8%8A%E6%90%AD%E5%BB%BAstm32%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/%E5%9C%A8vscode%E4%B8%8A%E6%90%AD%E5%BB%BAstm32%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83.md#3cmake%E7%BC%96%E8%AF%91%E5%B7%A5%E7%A8%8B]

需安装cmake和cmake tools插件。
点击左边栏cmake插件,点击配置:

6

6

每次添加完新的文件都需要重新配置,在cmakelists.txt中编写好规则之后cmake会帮你处理好依赖关系。

配置没问题后点击生成:

7

7

编译结果如下:



到这里stm32工程的编译工作已经完成了,vscode的便捷相信只要用过的都很难再回去keil了,没有用过的也可以立刻编写一个简单的程序试试vscode丝滑的代码补全和跳转和文件搜索等功能。
在这里我强烈推荐使用cursor代替vscode,cursor完全继承vscode并且内嵌AI编辑功能,vscode虽然也能通过GitHub Copilot实现类似功能但在补全代码和生成完整项目上远不如cursor。Cursor有一个月试用期,用过之后你会发现从此编程再也离不开AI了。
如果cursor到期了不愿意续费,也不愿意折腾卡bug,可以考虑使用字节的trae,也是能同步vscode的所有设置,可以无缝衔接,功能和cursor类似但功能性不如cursor好用,但依然是cursor之下最好的替代品,因为他免费。

4、下载和调试[/url]
在cmake插件页面,点击运行任务,如图所示下载程序到stm32:

9

9


输出以下信息后则说明下载成功:

调试也会自动下载程序:

点击开始调试:

然后会出现这个框,点击继续或f5程序就开始运行:

可以在main的循环中加一个计数,体验断点和变量监视功能:

为什么开头说keil是最好的debug软件,因为vscode想要看运行中的变量需要暂停,而keil只需要将变量设置为全局变量即可,当然,对于现在的我来说,keil的这个优点依然无法让我忽视他别的缺点。


-----------------------------------------------------
即使排除在编程上的便利性,相比于keil的繁琐配置,使用cmake进行工程管理很明显要方便很多,在移植第三方库时也不用这里点点添加源文件那里点点添加头文件,很直白很直观。
mac os也可以使用本方法在macbook上进行stm32开发,下面提供mac版本的cubemx和cubeclt,祝大家有更省心的工作体验:
cubemx:
cubeclt:
我的github上也开源了一个基于threadx和netxduo的tcp服务器项目,用的开发环境就是本文所介绍的: https://github.com/newtonltr/stm32h723zgt6-nx-tx




8

8

10

10

11

11

12

12

13

13

14

14

评分

参与人数 2金币 +110 收起 理由
Love-JY + 10
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

4

主题

391

回帖

403

积分

高级会员

积分
403
发表于 2025-3-11 17:31:11 | 显示全部楼层
哈哈哈在用vscode通义灵码插件的路过,大概率他能猜到我写什么东西。
回复

使用道具 举报

6

主题

27

回帖

50

积分

初级会员

积分
50
 楼主| 发表于 2025-3-11 18:11:30 来自手机 | 显示全部楼层
cctv180 发表于 2025-3-11 17:31
哈哈哈在用vscode通义灵码插件的路过,大概率他能猜到我写什么东西。

我去年最开始也是用通义灵码,但是一年了他还是笨笨的,后面自己用continue插件搭配Claude的api更好用,再后来cursor出来后就再也离不开了,补全能力跟这些插件不是一个档次的,cursor有一个月试用你可以去试试
回复

使用道具 举报

8

主题

153

回帖

177

积分

初级会员

积分
177
发表于 2025-3-11 22:38:00 | 显示全部楼层
不会CMake是硬伤
回复

使用道具 举报

6

主题

27

回帖

50

积分

初级会员

积分
50
 楼主| 发表于 2025-3-11 22:44:44 | 显示全部楼层

问一下ai啥都出来了,cmake现在没必要自己写了,而且stm32的项目的cmake并不复杂,cubemx会给出最基础的cmakelists,用户只要添加源文件路径和头文件路径就可以了
回复

使用道具 举报

9

主题

32

回帖

59

积分

初级会员

积分
59
发表于 2025-3-12 08:13:07 | 显示全部楼层
学习码一下,多谢分享
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-3-12 09:12:46 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2025-3-12 10:30:44 | 显示全部楼层
补充一下,这个方法的调试界面有一个LiveWatch的,可以不用暂停也可以查看数据,但是变量必须是全局变量才可以。
回复

使用道具 举报

6

主题

27

回帖

50

积分

初级会员

积分
50
 楼主| 发表于 2025-3-12 15:40:32 | 显示全部楼层
godwen 发表于 2025-3-12 10:30
补充一下,这个方法的调试界面有一个LiveWatch的,可以不用暂停也可以查看数据,但是变量必须是全局变量才 ...

感谢大佬补充,尝试了一下很好用,这下除非到了要通过pc指针找hardfault的地步,keil应该是要被我彻底抛弃了
回复

使用道具 举报

14

主题

37

回帖

79

积分

初级会员

积分
79
发表于 2025-3-13 09:17:36 | 显示全部楼层
VSCode 的 C/C++ server,有时候 intellisense 太慢了。
回复

使用道具 举报

11

主题

694

回帖

727

积分

金牌会员

积分
727
发表于 2025-3-13 14:17:35 | 显示全部楼层
谢谢分享。先MARK,再看。
回复

使用道具 举报

6

主题

268

回帖

286

积分

高级会员

积分
286
发表于 2025-3-13 14:46:43 | 显示全部楼层
感谢分享,有空了试下。
回复

使用道具 举报

2

主题

26

回帖

32

积分

新手上路

积分
32
发表于 2025-3-25 17:01:01 | 显示全部楼层
请问stm32 vscode的扩展可以直接导入stm32cubeide的工程吗,我看网上其他帖子都说可以直接导入,但是我自己配的时候发现根本没有导入本地工程的选项,就只能导入Cmake工程。但是公司其他同事都是用stm32cubeide,stmcubemx支持同时生成两种工程文件吗
回复

使用道具 举报

5

主题

17

回帖

32

积分

新手上路

积分
32
发表于 2025-4-25 17:11:26 | 显示全部楼层
问一下楼主及其他朋友,第一次打卡加载文件后一切正常,关闭vscode再重新加载文件,cmake 相关命令全部报错,cmake拓展包无法正常加载,报no cache project found  ,是cmake缓存错误,大家都怎么解决的呢
回复

使用道具 举报

5

主题

17

回帖

32

积分

新手上路

积分
32
发表于 2025-4-25 17:14:44 | 显示全部楼层
楼主和其他朋友,第一次打开项目一切正常,关闭vscode再重新加载项目,cmake拓展包无法正常加载,报no cache project found,是cmake缓存问题引起的,大家有什么好的解决办法吗
回复

使用道具 举报

5

主题

17

回帖

32

积分

新手上路

积分
32
发表于 2025-4-25 17:15:40 | 显示全部楼层
大家有没有碰到这种问题,再次打开vscode,cmake报错怎么解决呢,
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-5-22 15:40:17 | 显示全部楼层
么改成jlink调试下载,jlink用习惯了
回复

使用道具 举报

3

主题

106

回帖

115

积分

初级会员

积分
115
发表于 2025-5-23 09:44:49 | 显示全部楼层
Fitten Code: Faster and Better AI Assistant
这个插件也不错
回复

使用道具 举报

3

主题

106

回帖

115

积分

初级会员

积分
115
发表于 2025-5-23 09:45:18 | 显示全部楼层
newton 发表于 2025-3-11 22:44
问一下ai啥都出来了,cmake现在没必要自己写了,而且stm32的项目的cmake并不复杂,cubemx会给出最基础的c ...

Fitten Code: Faster and Better AI Assistant
这个插件也不错
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 5 天前 | 显示全部楼层
为什么我在vs code里面找不到STM32 VS Code Extension这个插件啊??
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 5 天前 | 显示全部楼层
本帖最后由 Love-JY 于 2025-6-4 18:55 编辑

Mac m1 不能安装32cubeclt 不能安装吗?我安装程序显示成功,结果路径没有程序,我用的就是mac 的安装包
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 5 天前 | 显示全部楼层
楼主这个环境如何更换下载器啊
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 5 天前 | 显示全部楼层
DyWang 发表于 2025-6-4 09:55
为什么我在vs code里面找不到STM32 VS Code Extension这个插件啊??

更新啦,名字更改啦,浏览器搜这个,进官网下载,发现名字改啦

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-9 22:17 , Processed in 0.431668 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表