我得先说点题外话。上周帮一个刚转到嵌入式方向的兄弟搭开发环境,他用的还是大学老师钦定的那颗“赛博牛马”——某知名蓝色IDE。打开工程第一次全量编译,去倒杯水回来还没编完;代码补全偶尔会灵光一闪,但大部分时间像个谜语人;最要命的是,好不容把代码写出来了,想在旁边开个AI工具问两句,切窗口的瞬间都感觉在被系统嘲讽。
我说,兄弟,2025年了,咱们写STM32的,也该试试VS Code这套组合了。
今天这篇是整个“嵌入式软件AI编程”系列的第07篇,专门讲怎么把VS Code和STM32相关的扩展工具打磨成一个比传统IDE顺手得多的开发环境。文章面向正在用Keil MDK / IAR但想换个更现代、更有利于AI辅助编程的工作流的嵌入式开发者,也适合刚开始学STM32、想一步到位搭环境的初学者。看完你会弄明白:为什么选择VS Code、整套环境需要哪些组件、从0到1如何配置,以及我踩过的那些搜索记录里搜不到的坑。
1. 为什么我放弃了“魔法棒”,改用VS Code写STM32
1.1 传统IDE的痛点:不差,但真的憋屈
ST官方主推的STM32CubeIDE是Eclipse系的东西,免费、开箱即用,能编译能调试,稳定得没朋友。Keil MDK老树盘根,生态里各种国产MCU都在用。但这些传统IDE被吐槽最多的一点,恰恰是这个时代最不能忍的:太封闭。
哪怕你已经装了各种插件,能看到顶层目录结构和一堆代码仓库文件,但想要一个干净利落的代码导航、一个灵活的编辑体验、一个可以按自己想法随意修改的快捷键逻辑,依然很费劲。我见过不少工程师,在IDE里敲代码,补全全靠肌肉记忆;换个工程、换个芯片,光是配置编译链和下载器就得折腾半天。
更关键的是,现在AI编程工具(Copilot、Codex、Continue、Kimi等)绝大多数首先适配的是VS Code。你在传统IDE里想用AI辅助写代码,就像给老式诺基亚装微信,不是不能用,但体验完全不对。
1.2 为什么偏偏是VS Code + STM32扩展
VS Code不是IDE,它本质是一个编辑器。但它能成为嵌入式开发的主流选择之一,原因在于三点:第一,它足够轻,启动速度比Eclipse系的CubeIDE快一个量级;第二,它几乎无限可扩展,你要的代码补全、格式化、Git、AI辅助、串口监视、编译烧录都能靠插件实现;第三,它是Microsoft维护的开源项目,跨平台(Windows、Linux、macOS都能跑),配置文件是一个一个纯文本JSON,别人怎么配的、怎么调的,一眼就能看懂,方便版本管理,也方便你抄作业。
这套方案,配合上ARM官方的GCC工具链、OpenOCD调试器,以及ST官方的扩展,足够覆盖日常STM32开发:编辑、补全、编译、下载、断点调试、变量监视,一个不少。更不用说,底层的JSON配置方式让“AI编程”变成了一个非常自然的事——AI插件在读你的项目时,能更好地理解配置、结构、代码含义,配合程度比在老IDE里高好几个档次。
1.3 先搞清楚:哪些组件是不可缺少的
在正式动手之前,我建议你先建立一张“组件地图”,很多教程上来就让你装东西,装完也不知道为什么,出了问题也没头绪。实际上,一套可用的VS Code + STM32开发环境,由五层组成:
| 层级 | 组件 | 作用 | 必装程度 |
|---|---|---|---|
| 编辑器 | VS Code本体 | 代码编辑、窗口管理、扩展容器 | 必装 |
| 语言支持 | C/C++扩展 | 代码补全、语法高亮、调试支持 | 必装 |
| 编译工具链 | arm-none-eabi-gcc / make / cmake | 把源码编译成芯片能跑的机器码 | 必装 |
| 调试/烧录 | OpenOCD / ST-LINK驱动 / Cortex-Debug扩展 | 下载程序、断点调试、寄存器查看 | 强烈建议 |
| AI编程插件 | GitHub Copilot / Codex / Continue等 | 补全、解释代码、辅助排查错误 | 强烈建议 |
这五层缺了谁都不完整。很多人只装了VS Code和C/C++扩展,就开始写main.c,结果编译的时候才发现没有工具链,或者装了工具链但不知道怎么调用,最后只能切回Keil,然后得出“VS Code不适合做嵌入式开发”的结论。实际上问题不在于工具,而在于只取了一粒沙,没见到整片海滩。
2. 安装VS Code本体:从官网下载到基础配置
2.1 官网下载:别装错了分支
访问VS Code官网(code.visualstudio.com),点开下载页面,你会看到两个版本:System Installer 和 User Installer。
简单说,System Installer是给机器里所有用户装的,User Installer只给当前用户装,不需要管理员权限。个人开发建议直接选System Installer(64位版),因为后面OpenOCD、驱动、环境变量这些都需要系统级的路径支持,装System版省去后续权限弹窗的麻烦。
下载之后一路下一步即可,有一个勾选项需要注意:“添加到PATH”(Add to PATH)。这一项一定要勾上。如果漏掉了,后续在终端里敲code命令打不开编辑器,还得手动配置环境变量,非常烦人。如果实在忘了,安装完成后手动把VS Code的bin目录(默认是C:\Users\你的用户名\AppData\Local\Programs\Microsoft VS Code\bin)添加到PATH环境变量中也能补救。
2.2 首轮设置:字体、缩进、编码
安装完成,打开VS Code,第一件事不是装扩展,而是把几个基础设置改好。按Ctrl+,打开设置,搜索以下三个关键词并调整:
files.autoGuessEncoding,勾选上,这能自动猜测文件编码,解决中文注释乱码问题;editor.fontSize,推荐14或16,别用默认的12,长时间看代码眼睛累;files.eol,推荐设置为\n(LF)。STM32工程里很多代码来自Linux服务器或Git仓库,默认改LF可以在跨平台时少很多无谓的diff。
如果这台电脑是你唯一的开发机,我还会顺手推荐安装两个“无关紧要但极大提升幸福感”的插件:Bracket Pair Colorizer(或VS Code内置的括号着色)和Material Icon Theme。前者让括号层级一目了然,后者让你在文件树里分清.c和.h。虽然不是硬需求,但对嵌入式这种大型工程来说,项目缩略图和文件图标是减少视觉疲劳的有效武器。
2.3 快捷键基础:别再用鼠标点图标了
嵌入式工程师以前在Keil里习惯了用鼠标点“魔法棒”、“Target Options”,但VS Code的核心操作逻辑是键盘优先。有几个快捷键你最好第一天就背下来:
Ctrl+Shift+P(命令面板):几乎能用它触发所有功能,装完扩展后很多功能也是在这里面;Ctrl+P:快速跳转到任意文件,按文件名搜索;F5:启动调试,下面会讲到;- `Ctrl+``:打开/关闭集成终端,编译命令都是在终端里跑。
这三四个快捷键足够应付90%的日常操作了。等你习惯了这种交互方式,再回头看那个蓝色IDE,你会觉得整个人的开发节奏都被解救了。
3. 给VS Code装上“翅膀”:STM32开发扩展全家桶
3.1 扩展清单:哪些是核心,哪些是锦上添花
打开VS Code左侧的扩展市场图标(或Ctrl+Shift+X),搜索并安装下面这些扩展。我先给一张清单,装完再逐个讲为什么以及怎么配:
| 扩展名称 | 发布者 | 作用 | 类型 |
|---|---|---|---|
| C/C++ | Microsoft | 语法高亮、IntelliSense、调试支持 | 必装 |
| C/C++ Extension Pack | Microsoft | 一组C/C++插件合集,含CMake、Makefile工具 | 推荐 |
| Cortex-Debug | marus25 | 通过OpenOCD/ST-LINK进行ARM Cortex-M调试 | 必装 |
| STM32 VS Code Extension | STMicroelectronics | 官方插件,附注册、项目生成、存储查看等功能 | 推荐 |
| CMake Tools | Microsoft | CMake工程管理与构建 | 推荐 |
| Error Lens | usernamehw | 把编译错误直接显示在代码行上,不用看终端 | 强烈推荐 |
| GitHub Copilot / Codex / Continue / Kimi等 | 各家 | 代码补全、AI对话 | 按需装一个 |
这个清单不是一个“最多最全”,而是一个“恰好够用”的程度。很多人喜欢把扩展市场里所有跟STM32相关的插件全装上,结果界面被各种侧边栏塞满,性能也变差。我的建议是:“你当前正在用什么工作流,就装什么插件,别提前焦虑。”
3.2 C/C++扩展配置:让IntelliSense认识你的芯片头文件
装完C/C++扩展后,如果不做配置,你会发现它对你的工程一无所知——找不到stm32f1xx.h,没法补全HAL库函数,甚至会报一堆刺眼的红色波浪线。原因很简单:IntelliSense需要一个c_cpp_properties.json文件来告诉它编译器的路径、头文件路径和芯片相关的宏定义。
我建议用VS Code的命令面板来生成这个文件:
- 打开你的STM32工程根目录;
- 按
Ctrl+Shift+P,输入C/C++: Edit Configurations (JSON); - 选择后会生成一个
.vscode/c_cpp_properties.json文件,里面关键项这样写(以STM32F103和HAL库为例):
{ "configurations": [ { "name": "STM32", "includePath": [ "${workspaceFolder}/**", "C:/STM32Cube_FW_F1_V1.8.4/Drivers/STM32F1xx_HAL_Driver/Inc", "C:/STM32Cube_FW_F1_V1.8.4/Drivers/CMSIS/Device/ST/STM32F1xx/Include", "C:/STM32Cube_FW_F1_V1.8.4/Drivers/CMSIS/Include" ], "defines": [ "STM32F103xE", "USE_HAL_DRIVER" ], "compilerPath": "C:/Program Files (x86)/Arm GNU Toolchain/bin/arm-none-eabi-gcc.exe", "cStandard": "c11", "intelliSenseMode": "gcc-arm" } ], "version": 4 }这里面最难的部分是“defines”。你要根据自己用的芯片型号填对宏定义,比如STM32F407就写STM32F407xx,STM32F103ZE就写STM32F103xE,因为HAL库和CMSIS头文件是靠这些宏来选择功能的。如果这一项错了,即使includePath对,也会出现在某个头文件里分支选择错误的问题。
另外,compilerPath这一栏建议指向你的arm-none-eabi-gcc编译器的绝对路径。这是因为C/C++扩展需要借编译器来判断__GNUC__这些标准宏,从而正确解析代码。没有这个字段,你可能会遇到莫名其妙的“无法打开源文件”问题。
3.3 STM32专属扩展:别小看官方的力量
ST官方出的STM32 VS Code Extension这几年进步很大。安装后它会提供几个实用功能:STM32 Cube Project生成向导(需要配合STM32CubeMX)、寄存器查看、内存查看、以及一些调试辅助功能。但说实话,在不少场景下它的定位还是“锦上添花”,不是“雪中送炭”。
我更建议你把它当作一个“扩展储备”,装了以备不时之需。真正决定开发效率的,还是C/C++扩展的IntelliSense和Cortex-Debug的调试能力。如果你用的是STM32CubeCLI(ST官方新的命令行工具链),这个扩展也能帮你把CubeMX生成的工程直接导入到VS Code,路径会被自动识别,省去很多手动配置的功夫。
3.4 AI编程工具:是助手,不是主角
既然系列标题里带“AI编程”,这里必须展开说几句。安装AI插件的逻辑跟普通扩展不太一样,核心原则是:选一个能深度融入VS Code工作流的,而不是选一个功能最花哨的。因为嵌入式开发场景下,AI能帮的忙主要集中在三块:代码补全、代码解释、编译错误的排查。这三块都需要AI能够看到你的代码上下文、C/C++配置甚至编译输出。
目前我在日常工作中试过的几款主流选择:
- GitHub Copilot:补全质量最稳定,对STM32 HAL库的这种“模式化代码”理解能力很强,写一个UART初始化的函数能顶很久;
- OpenAI Codex(或接入Codex API的客户端插件):对话能力更强,你让它“解释这个freertos的tick钩子函数在干嘛”,它给的回复通常能让你不用翻参考手册;
- Continue / Kimi 等国产或开源方案:优势是模型可选,有的支持本地化部署,有的能接入DeepSeek,适合有数据隐私要求但想省钱的团队。
我的建议是:如果你预算充足且不担心代码上传,直接装GitHub Copilot;如果不方便,先装Continue,它能接入多种模型的API,性价比高,也能满足需求。
注意:AI插件不是装了就能用,很多嵌入式工程需要“喂”给AI足够的上下文,它才能给你准确的建议。后期我会单独写一篇怎么把HAL库的源码路径和你自己的业务代码结合起来“提示词工程”,让AI理解项目。
4. 编译器与调试器:没有它们,VS Code只是个高级记事本
这一步非常关键,也最容易被人忽略。很多人在VS Code里写完了代码,点“运行”按钮,结果弹出来一堆错误,最后只能灰头土脸地回到Keil。原因就是:编辑器本身不编译代码,它只是个“组织者”,真正干活的“工人”是编译器、链接器、调试器。
4.1 安装ARM编译工具链:arm-none-eabi-gcc
STM32用的编译器是Arm官方提供的GNU工具链。访问Arm官网的“Arm GNU Toolchain”下载页面,选择当前版本,找到Windows (x86_64) hosted对应的.exe安装包。安装时有一步会问你要不要添加到PATH,务必勾选(或者记下安装路径,后面手动配)。
安装完成后打开CMD(或VS Code终端),输入:
arm-none-eabi-gcc --version如果出现版本号,说明工具链装好了。我实测下来,版本12.3及以上都可以稳定使用,不需要追求最新版本,稳定最重要。
4.2 安装make和CMake(可选但推荐)
VS Code里的STM32工程,构建方式通常有两种:一种是直接用Makefile,另一种是CMake。CubeMX默认生成的是Makefile工程,所以你的Windows上需要有一个make工具。最省事的方式是安装一个集成包,比如xPack Windows Build Tools或者MSYS2,装完把make.exe所在的目录加到PATH。
如果你更习惯CMake,建议顺便安装CMake,并搭配上面的CMake Tools扩展使用。ST在最新的CubeMX版本里其实也可以直接生成CMakeLists.txt,彻底绕开Makefile。两种方式各有拥趸,我的建议是谁熟用谁,重要的是“工具链能被你控制”,别被工具牵着走。
4.3 安装OpenOCD与ST-Link驱动
调试烧录这块需要两个组件:一个是ST-Link的驱动,一个是OpenOCD调试器软件。
ST-Link驱动:如果你用的是最常见的ST-Link/V2(那些蓝色USB小棒子,或者是板载ST-Link的Nucleo/Discovery板),需要去ST官网下载ST-LINK USB driver,装上。这步不做,后面的OpenOCD连不上目标芯片。
OpenOCD:Windows下的OpenOCD安装包从开源项目的release页面下载(或通过xPack镜像)。下载解压后,你会得到一个bin目录,里面就是openocd.exe。将这个目录加入PATH。
验证一下是否成功,终端输入:
openocd --version能看到版本号即可。OpenOCD本身是一个通过GDB Server协议把调试请求转发给调试探针的桥接工具,真正的GDB调试数据流是:VS Code(Cortex-Debug扩展)→ GDB Server(OpenOCD启动) → 调试探针(ST-Link) → 目标芯片(STM32)。理解这个链路对排查调试问题特别有帮助。
提示:调试器这个链路里,任何一个环节断了都会导致连接失败。排查时从下往上查:先看ST-Link有没有被识别(设备管理器里有ST-Link),再看OpenOCD能不能启动,最后才看VS Code里的launch.json。
5. 配置一个可编译、可烧录、可调试的STM32工程
5.1 先用CubeMX生成“地基”
如果你手上已经有一个成熟的ST官方工程目录,可以跳过这一小节。如果是从零开始,我还是推荐走一遍CubeMX:
- 打开STM32CubeMX,选择芯片型号(比如STM32F103C8)。
- 配置时钟、GPIO、USART等外设。
- 在Project Manager里,Toolchain选择
Makefile(或者CMake,看你上面装了哪个)。 - 生成代码到某个目录。
这个目录里会有一个包含Core/Inc和Core/Src的工程结构,还有Makefile。这就是你VS Code工作的“地基”。
5.2 配置编译任务:tasks.json怎么写
打开VS Code,Ctrl+Shift+P,输入Tasks: Configure Default Build Task,选择Create tasks.json file from template, 再选Others。然后把整个文件替换成下面这段:
{ "version": "2.0.0", "tasks": [ { "label": "STM32 Build", "type": "shell", "command": "make", "args": [ "-j4" ], "options": { "cwd": "${workspaceFolder}" }, "group": { "kind": "build", "isDefault": true }, "problemMatcher": [ "$gcc" ] } ] }这段配置的意思是:在工程根目录执行make -j4(四线程并行编译,明显比Keil那个单线程快),并把GCC的编译错误输出解析到VS Code的“问题面板”里。配合前面装的Error Lens,你能在代码行上直接看到红色波浪线标出编译错误,效率提升一大截。
-j4这个参数要根据你的CPU核心数微调。8核CPU用-j8也没问题,但老旧笔记本建议保守点,-j4或者-j2,避免风扇原地起飞甚至死机。
如果是CMake工程,tasks.json里相应改成调用cmake -B build && cmake --build build,本质一样,不赘述。
5.3 配置调试和烧录:launch.json才是重头戏
烧录和断点调试靠的是Cortex-Debug扩展。点击左侧的“运行和调试”图标,创建一个launch.json,核心配置参考如下(以ST-Link + STM32F103为例):
{ "version": "0.2.0", "configurations": [ { "name": "STM32 Debug (OpenOCD)", "cwd": "${workspaceFolder}", "executable": "./build/ProjectName.elf", "request": "launch", "type": "cortex-debug", "servertype": "openocd", "gdbPath": "C:/Program Files (x86)/Arm GNU Toolchain/bin/arm-none-eabi-gdb.exe", "configFiles": [ "interface/stlink.cfg", "target/stm32f1x.cfg" ], "svdFile": "C:/STM32Cube_FW_F1_V1.8.4/Drivers/CMSIS/SVD/STM32F103xx.svd" } ] }executable指向编译出的ELF文件路径,注意是.elf不是.hex,因为GDB需要ELF里的调试符号信息。
configFiles是OpenOCD的板卡/内核配置文件,interface/stlink.cfg告诉OpenOCD用哪种调试探针,target/stm32f1x.cfg告诉它目标芯片是哪一族的。这两行是最容易出错的,如果你的芯片是F4系列,第二行就改成target/stm32f4x.cfg,其他系列同理。
svdFile是CMSIS的SVD描述文件,填上之后你可以在调试时直接在VS Code的“外设”窗口里看到寄存器们的实时值,不用再去开CubeIDE或者看Reference Manual,非常爽。
配置完成后,按F5,如果一切正常,OpenOCD会在终端窗口启动,GDB连接成功,程序会停在main函数的入口处。这时候你就可以像在Keil里一样,打断点、单步、看变量、看寄存器了。实测下来,Cortex-Debug的UI交互比某些传统IDE还顺滑。
5.4 验证全流程:眨眼LED,最朴素的仪式感
不管什么嵌入式工程,老规矩,第一个程序一定是点灯。在main.c里初始化GPIO后,让某个LED以500ms为周期闪烁。
编译:Ctrl+Shift+B(或直接终端make),看到生成 .elf、生成 .hex就没有问题。 烧录:按F5,调试验证通过后,程序已经烧录进去并停在main入口,此时如果LED在闪烁,证明整个链路是通的。
这套全流程走通,你就具备了用VS Code进行STM32开发的基本能力。之后的任何踩坑基本上都跟这个流程里的某个环节有关,不再是“不知道从哪下手”的状态。
6. 常见问题与排查技巧实录
6.1 编译报错:找不到头文件
现象:编译时GCC报错,诸如fatal error: stm32f1xx_hal.h: No such file or directory。但VS Code的IntelliSense(红波浪线)可能一切正常。
原因:IntelliSense用的c_cpp_properties.json跟GCC用的Makefile是两套独立体系。GCC编译时依赖于Makefile里的C_INCLUDES变量。CubeMX生成的Makefile通常已经写好了,但是如果你手动改过工程结构、或者把工程移动过位置,Makefile里的相对路径就会失效。
排查步骤:
- 打开工程根目录的
Makefile,搜C_INCLUDES; - 检查里面的路径是否存在。通常长这样:
-ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc ...; - 如果路径缺失,补齐后重新
make。
我的习惯是:能改Makefile就不改代码,能改配置就不动源码结构,这样出错概率最低。
6.2 按F5无法连接调试器
现象:Cortex-Debug启动后,终端报错Error: open failed或Can't connect to target。
排查思路从“下”往“上”查物理链路:
- 先确认ST-Link是否被电脑识别。打开“设备管理器”,看通用串行总线设备里有没有
STM32 STLink设备。如果这里都没有,大概率是驱动问题或USB线只供电不传数据(我踩过最蠢的坑是换了一根type-C充电线,结果读写全断); - 确认ST-Link连接正确。3.3V、GND、SWDIO、SWCLK这四根线,或者你是Nucleo开发板自带的板载ST-Link,不需要外部供电,直接插USB就能调试;
- 确认
launch.json里的configFiles路径是否和OpenOCD版本匹配。新版OpenOCD的config文件目录结构可能有变化,例如interface/stlink.cfg可能需要改成interface/stlink.cfg,有的版本则推荐interface/stlink.cfg替代旧版interface/stlink-v2.cfg里的某些设置,具体看你的OpenOCD版本; - 最后,确认你的目标芯片是否处于“锁死”状态。有些情况下,芯片Flash里的程序跑飞了或读保护开启,OpenOCD也连不上。这时可以用“按住复位键 + 启动连接 + 松开复位键”的老办法,或者用ST官方CubeProgrammer先把读保护关掉。
6.3 AI补全好像失灵了,怎么回事
现象:装了Copilot或Continue之类的AI插件,在写代码时却完全不弹补全,偶尔弹出来了也跟STM32无关。
原因:AI插件通常依赖你当前打开文件的语言类型,以及所在文件在它索引的“项目”中的上下文信息。如果是C/C++文件但没加载C/C++扩展的IntelliSense,AI插件可能直接罢工——因为它的很多信号是从IntelliSense里拿的。
另外,AI插件需要你在VS Code设置里明确开启。以GitHub Copilot为例,看到右下角有个小图标显示Copilot的状态;如果在公司内网环境里无法连接服务,也会静默失败。建议先检查账户状态和网络,再检查扩展是否对当前语言启用了。
经验:我用AI插件辅助STM32开发时,最顺手的用法不是“让AI写一大段代码”,而是在写完一个初始化函数或者某个外设配置块之后,选中这段代码,让它“解释这段代码在干什么”、“帮我检查配置的寄存器是否正确”。这种方式出错率低,且你能学到东西。AI是搭档,不是神仙。
6.4 常见问题速查表
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| IntelliSense找不到头文件 | c_cpp_properties.json的includePath不完整 | 检查并补充头文件路径 |
| 编译报错“No such file” | Makefile的C_INCLUDES路径失效 | 检查Makefile相对路径 |
终端make不是内部或外部命令 | make不在PATH中 | 安装build tools并加入PATH |
| F5调试连接失败 | ST-Link驱动未装/接线错误/OpenOCD配置不对 | 先查设备管理器,再查OpenOCD配置 |
| 程序烧录了但不运行 | 复位电路/晶振问题/程序跑飞 | 检查硬件,或单步调试定位 |
| AI插件不补全 | 未登录/网络问题/未启用 | 检查账户状态、网络、设置 |
6.5 你大概率会踩的“最后一个坑”:文件编码
很多从Keil环境转过来的工程,源码文件默认是GB2312或GBK编码。VS Code默认按UTF-8打开,于是注释里全是乱码,本来好好的代码,看起来像被人拿乱码洗过一遍。解决办法是在VS Code设置里搜files.encoding,改成gbk,或者更推荐的做法:统一用VS Code把所有源文件转成UTF-8(右下角编码信息那里点一下就能改)。这样一来,AI插件读代码时也不容易产生理解偏差,尤其是涉及中文注释的时候。
虽然我刚才讲了很多配置细节和排坑技巧,但说句掏心窝的话:把环境搭好只是长征第一步。VS Code + STM32 这套组合真正的红利,是在后面日复一日的调试、验证、重构中慢慢体现出来的。它不会像某些IDE那样替你隐藏一堆细节,而是把所有配置文件摊在你面前——这种做法一开始可能让你觉得“怎么这么多东西要配”,可一旦你理解了这五层结构(VS Code → C/C++扩展 → 工具链 → 调试链路 → AI插件),你获得的确定性是这位“赛博牛马”永远给不了你的。
在实际开发中,我还建议你从今天开始,把每个工程的.vscode目录随代码一起提交到Git仓库里。这样换电脑、换队友,一条git clone下来就能复现开发环境。我自己带的小团队现在就是这么干的,新成员入职从装环境到跑通点灯,快的半天,慢的一天,几乎没有因为环境问题卡过壳。
后面在这个系列里,我还会接着聊聊怎么用AI插件去啃HAL库源码、怎么写更有效的提示词让AI理解你的硬件状态机、以及怎么把VS Code里的编译错误“喂”给AI让它帮你定位。今天就先到这儿,动手装一个试试吧。