1. 为什么是 VScodePlatformIO开发环境选型的核心逻辑1.1 Arduino IDE 到底输在哪里先说一个我自己的经历。几年前我刚开始玩 Arduino 的时候用的还是官方 Arduino IDE 1.8.x那时候觉得界面简洁、什么都不用配插入板子点上传就行挺省心。但项目一多问题就接二连三地冒出来了代码稍微超过一两百行找变量、查定义全靠肉眼想给 ESP32 配 WiFi 密码想在多个 .ino 文件之间跳转在 Arduino IDE 里简直就是折磨更别提单文件结构带来的模块化困难写个智能小车项目电机驱动、超声波、蓝牙三块逻辑全堆在一个 tab 里改一个功能头都大。用过一段时间 Arduino IDE 2.x 之后体验有改善代码补全和调试功能比 1.8 好得多但依然有它的短板。比如多平台支持不够灵活ESP32、STM32、RP2040 这些板子要装各种不同的开发板管理器地址不同框架之间切换麻烦项目管理能力弱没有清晰的依赖声明也没有“一键部署到多个开发板”的配置逻辑最要命的是它的编辑器本质上还是轻量级的大型工程一旦打开卡顿和误报满天飞。这时候 VScode PlatformIO 这套组合就是绕不开的方案了。VScode 本身是微软出品的跨平台编辑器生态极强而 PlatformIO 是一个嵌入式开发的专业工具链它把编译、依赖管理、烧录、串口监视器、单元测试全部整合进来了。两者一配合Arduino 开发直接从“玩具模式”进入“工程模式”。1.2 PlatformIO 的架构和工作原理很多人以为 PlatformIO 只是个 VScode 插件其实它的核心是一个独立的命令行工具叫 PlatformIO Core。你可以把它理解成嵌入式领域的 npm 或者 pip你只需要在配置文件里声明“我要用 Arduino 框架、开发板是 uno、需要 DHT 温湿度库”PlatformIO 就会自动去下载对应的工具链、编译器和依赖库然后完成构建和烧录。这个“自动解决依赖”的过程是它跟 Arduino IDE 最大的本质区别。Arduino IDE 的库管理是“手动装好再用”PlatformIO 是“声明了就有”这对于团队协作和工程复现特别友好。具体到架构上PlatformIO 有四个核心概念平台Platform、框架Framework、开发板Board和库Library。平台指的是芯片厂商体系的工具链比如 atmelavr 对应 AVR 芯片espressif32 对应 ESP32 芯片框架就是你写在代码上面的那一层 APIArduino 是其中一种ESP-IDF、STM32Cube 也是开发板就是具体型号比如 arduino uno、nodemcu-32s库则是第三方功能包。PlatformIO 的安装目录通常在用户目录下的.platformio文件夹里里面按平台分了子目录平台包、工具链、库全部按版本管理想换版本随时改配置文件。1.3 这套组合能覆盖哪些实际场景从我的实际体验来说VScode PlatformIO 能应对的不仅仅是“写灯闪”这种入门场景。拿最近几年特别火的 Arduino 智能小车来说电机驱动、灰度传感器、超声波避障、蓝牙遥控、WiFi 图传这些模块堆在一起代码量轻松过千行靠 Arduino IDE 单文件管理基本是灾难但用 PlatformIO 我可以很自然地分成driver/、sensor/、control/这样的目录每个模块独立成文件和类接口清晰后期维护非常轻松。再比如基于 Arduino 的舵机控制项目需要在 PWM 脉冲宽度和角度之间做映射用 PlatformIO 可以方便地引入 Servo 库还能用lib_deps固定版本避免“在我电脑上能编译、到你电脑上报错”的尴尬。还有 ESP32 做网络服务器、用 Home Assistant 做智能家居网关、基于 RDM6300 做门禁系统这类偏 IoT 的项目PlatformIO 的 espressif32 平台包已经默认提供完整的 WiFi、BLE、HTTP Server 相关库用起来比 Arduino IDE 里手动粘贴各种 .h 文件要省心得多。换句话说如果你只是玩个灯、做个温度计Arduino IDE 完全够用但只要你打算正经做项目、以后还想接触更多芯片平台VScode PlatformIO 是一个值得投入的长期选择。2. 环境搭建实操VScode 与 PlatformIO 安装避坑指南2.1 VScode 安装要点与汉化先说 VScode 本体。它官网那个地址下载的时候注意选对系统对应的安装包Windows 就选 User Installer 版macOS 选 Apple Silicon 还是 Intel 要看你芯片型号Linux 一般是 .deb 或 .rpm。安装过程简单但有一个隐藏的坑安装路径不要带中文和空格比如D:\Software\VSCode这种可以D:\软件\VScode这种就别用了。虽然 VScode 本身对中文路径宽容度还可以但后续 PlatformIO 要调用 Python、编译器、Git 等外部工具一旦路径里有中文或空格某些工具链解析路径的时候会出幺蛾子为这种事情排查老半天真的不值。装完之后第一件事我建议做两件事汉化和安装 C/C 插件。汉化很简单左侧扩展商店搜“Chinese”安装那个“中文语言包”重启之后界面就是中文了。C/C 插件是微软官方的 ms-vscode.cpptoolsPlatformIO 的代码补全、语法高亮、错误提示很大程度上依赖它。要注意的是现在 VScode 还有 C/C Extension Pack 这种全家桶不用全装装核心的 cpptools 就够了。用 VScode 的过程中我强烈建议顺手把“自动保存”打开File → Auto Save或者快捷键 CtrlShiftP 搜 auto save因为这个习惯能避免很多“我明明改了代码为什么编译还是旧的”这种糊涂问题。另外VScode 的快捷键和界面布局刚开始可能不太适应但忍一忍它的搜索、全局文件跳转、多光标编辑用熟了之后再回去碰 Arduino IDE 会感觉像回到了上个世纪。2.2 PlatformIO 插件安装与扩展商店细节PlatformIO 插件在 VScode 扩展商店里直接搜“PlatformIO IDE”就行注意看发行方是不是 “PlatformIO”不要装成别人的仿冒插件。装的时候 VScode 会连带安装 Python 依赖和 PlatformIO Core这个过程一般需要三四分钟耐心等。装完以后VScode 会自动提示你重新加载窗口加载完左侧边栏会出现一个小蚂蚁头图标那才是 PlatformIO 的控制台入口。有一个细节要特别提醒PlatformIO 插件首次启动时会在后台初始化 PlatformIO Core如果你发现点击小蚂蚁图标之后一直转圈、或者提示 “PlatformIO Core is not installed”先别急着重装插件。Windows 用户可以打开 PowerShell 或者 CMD手动执行pio --version看看命令行能不能用。如果提示找不到命令那多半是核心工具没装好如果命令行正常但是插件不认试试完全退出 VScode 再重新打开有时候只是前端进程没有识别到新装的命令行工具。插件装完之后VScode 底部状态栏会多出一排小按钮从左到右依次是“Build编译”“Upload上传”“Serial Monitor串口监视器”等这是 PlatformIO 最常用的操作入口。说实话很多人不知道这些按钮是可以悬停显示快捷键的编译的默认快捷键是CtrlAltB上传是CtrlAltU串口监视器是CtrlAltS这三个快捷键用熟了效率能提升一大截。2.3 核心工具下载慢问题的镜像加速方案很多人在安装 PlatformIO 后第一次创建工程时卡在“Downloading packages”这一步大半天不动最后直接放弃。这个问题的根源在于PlatformIO 默认从国外的服务器拉取平台包和工具链比如 ESP32 的 espressif32 平台包有几百兆字节如果不采取加速手段网络状况稍差就很容易超时。我的建议是不要死等直接配置国内镜像加速。具体做法是找到 PlatformIO 的全局配置文件。在 Windows 下这个文件在C:\Users\你的用户名\.platformio\platformio.ini注意这个文件可能不存在需要手动建一个。在 macOS 和 Linux 下路径是~/.platformio/platformio.ini。往里面写入如下内容[platformio] core_dir /Users/你的用户名/.platformio [package_install] enable_cache yes [env] platformio_use_download_cache yes这样写只能说优化了缓存真正解决下载慢的问题需要把下载地址改成国内可达的镜像源。常见的做法是为PLATFORMIO_CORE_DIR和PLATFORMIO_PLATFORMS_DIR配置环境变量同时在安装时使用--global参数或者修改~/.platformio/.piocore里的安装脚本。这里分享一个我在实际项目中用到的方案在系统环境变量中新增一个变量PLATFORMIO_SETTING_ENABLE_PROXY值为false然后再添加PLATFORMIO_HTTP_PROXY和镜像地址。不过这个方法在不同版本上表现有差异更通用的做法是直接在用户目录下配置pip.ini或者用国内源直接替换。如果你用的是国内开发者比较常用的镜像服务核心思路是把platformio的包下载源切到国内节点。不同网络环境下最稳妥的做法是手动下载离线平台包。举个例子你去 PlatformIO 的官方 registry 页面找到espressif32平台包手动下载然后解压到~/.platformio/platforms/espressif32同时在~/.platformio/platforms/manifest.json里登记一下版本信息PlatformIO Core 就能识别并跳过在线下载了。这个方法虽然麻烦但一劳永逸适合网络条件比较差的环境。3. 工程创建与配置从空白工程到点亮第一块板3.1 快速创建工程的方法和“创建慢”的破解思路安装好环境之后我们要开始创建工程。点击 VScode 左侧的 PlatformIO 图标找到 “Quick Access → PIO Home → Open”进入 PlatformIO Home 页面点击 “New Project”。填上项目名称比如my_arduino_project然后选择开发板。这里有个技巧直接在搜索框里输入uno就能快速找到 Arduino Uno输入esp32能找到各种 ESP32 开发板。Framework 选择ArduinoLocation 如果勾选 “Use default location”工程会被放在~/Documents/PlatformIO/Projects/下我个人习惯取消勾选自己指定一个工作目录。很多人第一次创建工程会卡很久核心瓶颈还是平台包下载。如果你已经按上一节的方法配置好了镜像或离线包这一步应该会比较快。如果还是慢还有一个省时间的技巧先创建一个空的配置文件然后手动执行编译让它后台慢慢下载该干嘛干嘛去。实际操作是这样的先手工建一个文件夹在里面放一个空的platformio.ini然后在 VScode 终端里运行pio project init pio runpio project init会生成项目的目录结构和基础文件pio run则会触发工具链和平台包的自动下载。第一次运行可能需要十几分钟这期间可以去做别的事。而且用这种方式创建的工程目录结构清晰比从 PIO Home 向导创建的版本更可控。3.2 platformio.ini 核心参数逐行解读创建完成之后整个工程的核心是platformio.ini这个配置文件。很多新手不理解为什么 PlatformIO 要搞出一个配置文件而不是像 Arduino IDE 那样在图形界面里点一点。我的理解是这个文件才是整个工程的“灵魂”它把开发板型号、编译选项、烧录参数、依赖库全部声明化代码提交到 Git 之后另一个人 clone 下来只要安装好 PlatformIO一条命令就能编译上传彻底摆脱“环境不一致”的困扰。一个典型的 Arduino Uno 工程的platformio.ini长这样[env:uno] platform atmelavr board uno framework arduino monitor_speed 9600 upload_speed 115200 lib_deps DHT sensor library^1.4.4逐行解释一下。[env:uno]是环境名称你可以在这里定义多个环境比如[env:uno]和[env:esp32]同时存在于一个文件中。platform指定的是芯片平台AVR 芯片对应atmelavrESP32 对应espressif32如果想用 STM32就改成ststm32。board指定开发板型号framework指定代码框架这里选arduino如果你以后想用 ESP-IDF可以改成espidf。monitor_speed是串口监视器的波特率很多人在这里踩坑代码里Serial.begin(115200)但监视器默认是 9600导致串口输出乱码所以修改代码后别忘同步修改monitor_speed。upload_speed是烧录波特率Arduino Uno 用 bootloader 烧录默认 115200 可以但如果你用的开发板是 ESP32上传时建议保持默认。lib_deps是依赖库声明这是 PlatformIO 最值的功能之一。它支持从官方库中心自动拉取写法可以是简单的库名字也可以带版本号。版本号里的^表示兼容指定版本的最新版~表示补丁版本更新则是锁定精确版本。我强烈建议在项目里把主要依赖库的版本号写死哪怕麻烦一点至少不会出现“上午能编译、下午拉了个新版本库就全部报错”的情况。3.3 库管理与依赖管理以 DHT.h 为例库管理这块很多人会遇到一个典型问题在 Arduino IDE 里装过 DHT 库但在 PlatformIO 里编译时却提示找不到DHT.h。原因是 PlatformIO 不会自动读取 Arduino IDE 装好的库它有自己的库目录。解决办法有两个一是在lib_deps里声明 DHT 库然后执行编译PlatformIO 会自动下载到~/.platformio/lib目录二是把第三方库源码直接放在项目的lib/目录下PlatformIO 会优先搜索这个目录。以 DHT 温湿度传感器为例在platformio.ini里加一行lib_deps adafruit/DHT sensor library^1.4.4这里的adafruit是库的作者的 namespaceDHT sensor library是库名。执行编译后PlatformIO 会自动从 registry 拉取这个库以及它依赖的 Adafruit Unified Sensor 库。这就是依赖管理的意义你不用手动去下载一堆相互依赖的库文件一个声明全搞定。除了自动下载PlatformIO 还支持在项目里自由放置库文件。比如你想用某个在 GitHub 上单独下载的库把文件夹丢到lib/目录下然后在代码里#include xxx.h就能引用了。注意lib/下每个子文件夹会被视为一个独立的库PlatformIO 会为它们生成构建目标所以不要在lib/下放乱七八糟的测试代码否则会影响编译速度。3.4 多环境配置一套代码编译多种开发板这是 PlatformIO 一个很实用的进阶功能我是做项目之后才学会的。以前用 Arduino IDE 的时候想在 Uno 和 ESP32 之间切换要手动换开发板型号、重新选端口有时候还要注释掉跟特定板子有关的代码。但用 PlatformIO只要在一个platformio.ini里定义多个环境[env:uno] platform atmelavr board uno framework arduino [env:esp32] platform espressif32 board nodemcu-32s framework arduino monitor_speed 115200编译时用pio run -e uno或者pio run -e esp32指定具体环境上传同理。如果需要两个环境都编译直接pio run就行。这个功能在做跨平台验证时特别有用比如你的项目打算先在 Uno 上验证逻辑然后迁移到 ESP32 做网络功能就可以共用一套业务代码只把跟硬件相关的部分用#ifdef隔离开然后靠环境宏来区分。PlatformIO 会自动为每个环境定义宏比如ARDUINO_AVR_UNO、ESP32代码里可以这样写#ifdef ESP32 // ESP32-specific init code WiFi.begin(ssid, password); #else // AVR-specific init code Serial.begin(9600); #endif这样同一份代码在两个板子上跑的是各自的逻辑分支省去了大量复制粘贴的工作。4. 编译、上传与串口调试的全流程4.1 编译上传的完整流程与产物解析现在到了最令人兴奋的部分把代码烧到板子上。整个流程其实很简单点 VScode 底部状态栏的编译按钮或者按CtrlAltB开始编译编译日志会在终端中输出。这里我先说明一下 PlatformIO 编译的几个阶段平台包加载、源码收集、依赖解析、编译、链接。前两个阶段一般不会出错出错主要集中在编译和链接阶段报的错大多是语法错误、变量未声明、依赖库缺失。日志里会用红色标注 error 行直接从最后一个错误开始往前看十有八九能找到原因。编译成功后PlatformIO 会在项目根目录生成一个.pio/build/环境名/目录里面放着编译产物。以 Arduino Uno 为例生成的固件是firmware.hex以 ESP32 为例生成的是firmware.bin。这个文件就是最终要烧到开发板上的二进制文件。如果你后来想用其他工具烧录比如 esptool 或者 AVRDUDE可以直接从这个目录里取现成的固件不用重新编译。上传前有一步很容易忽略确认开发板连接到了正确的串口。在 PlatformIO 里可以点击状态栏的“Serial Port”按钮查看当前电脑识别的串口列表。Windows 上一般显示为COM3、COM5macOS 和 Linux 上是/dev/cu.usbmodemXXXX。如果你插上板子却在列表里看不到串口大概率是 USB 驱动问题。Arduino Uno 用的是 ATmega16U2 芯片做 USB 转串口通常免驱但很多国产开发板用的是 CH340 芯片需要单独装 CH340 驱动ESP32 开发板常用 CP2102也要装驱动。驱动搞不定后面板子怎么插电脑都没反应这是新手最容易卡住的地方之一。4.2 串口监视器排查数据的核心工具代码烧进去了但数据对不对得看串口监视器。PlatformIO 的串口监视器就是一个集成在 VScode 底部面板里的串口终端点底部按钮或者按CtrlAltS就能打开。打开之前它会弹出让你选择串口号和波特率的界面但实际波特率已经由monitor_speed配置好了所以最省心的是直接把参数写在platformio.ini里每次打开监视器自动生效。用串口监视器有几点经验。第一代码里Serial.begin(9600)和配置里的monitor_speed 9600必须一致否则输出乱码。第二如果你想看的数据太多可以在监视器窗口里设置过滤条件比如只显示包含ERROR的行。第三串口监视器打开的时候会独占串口这时候如果在上传会报“port busy”错误所以正确流程是先关监视器再上传上传完再重新打开监视器。4.3 ESP32 常见上传配置与特殊注意事项ESP32 和其他 Arduino 板子在烧录上有一些差异。首先是上传方式ESP32 通过串口进入 bootloader常见的nodemcu-32s、esp32dev这类板子只要按住板子上的 BOOT 按键再按一下 EN 键就能进入下载模式PlatformIO 会自动识别并烧录。有些开发板支持自动下载电路不用手动按键但第一次用建议还是按一下 BOOT 键能减少很多“连接超时”的烦恼。其次ESP32 的闪存和分区配置可以在platformio.ini里设置。比如board_build.partitions huge_app.csv board_build.flash_size 4MB如果你的代码超过默认的 Arduino 分区大小一般是 1.2MB编译会报错说固件太大放不下这时就需要调整分区表。实际项目里我做 ESP32 网络服务器时把分区表换成huge_app.csv把大部分 flash 都分配给 app 分区问题就解决了。这个参数在 Arduino IDE 里调整起来比较麻烦在 PlatformIO 里只是几行配置这也是我推荐这套方案的原因之一。调试方面Arduino Uno 这种 AVR 板子一般用串口打印来调试ESP32 可以用 PlatformIO 的调试功能配合framework arduino和debug_type esp-prog能实现硬件断点、变量监控但这需要额外的 JTAG 调试器。如果只是做普通项目建议先别折腾 JTAG串口打印在绝大多数场景下够用了。5. 常见问题与排查技巧实录5.1 上传失败的典型原因与处理顺序问十个用 PlatformIO 的人九个都遇到过上传失败。最常见的是这个报错avrdude: ser_open(): cant open device COM3: 拒绝访问这种情况十有八九是串口被占用了。解决办法是关掉串口监视器、关掉其他串口工具比如 Arduino IDE 的串口监视器或者第三方串口助手然后再试上传。如果还是不行看一下 Windows 设备管理器里是不是同时识别了多个 COM 口比如内置蓝牙和 USB 转串口都用的是同一个端口号有时系统会把端口号分配得很奇怪手动改一下端口号往往能解决问题。上传失败的另一个常见原因是驱动问题。CH340 芯片的 Windows 驱动有时会被系统默认驱动顶掉导致端口识别成 “USB-SERIAL CH340” 但实际不通。解决办法是去芯片厂商官网下载对应驱动或者用驱动管理工具更新。macOS 上 CH340 的驱动兼容性差一些如果系统升级后突然不认设备多半是驱动签名问题重新安装最新驱动基本能解决。还有一类 ESP32 特有的上传失败报错Failed to connect to ESP32: Timed out waiting for packet header。这通常是因为开发板没有进入下载模式。按着 BOOT 键不放再按一下 EN 键有的板子上标的是 RST然后松开 BOOT再点上传按钮基本上就能成功。如果你用的板子支持自动下载但还是超时检查一下有没有把upload_speed设置得太高比如超过 921600有时候降速到 460800 或 115200 会更稳定。5.2 编译报错与依赖缺失的处理思路编译报错里让我印象最深的一类是fatal error: xxx.h: No such file or directory。一开始我以为是代码写错了后来才意识到是依赖库没装对。处理思路是这样的先在platformio.ini的lib_deps里搜索库名注意库名一定要用 registry 上的准确名字大小写都要跟官方一致如果lib_deps已经写了但还是找不到那么可能是库名冲突或者版本兼容问题。这时候可以在终端执行pio pkg search DHT sensor library搜出来之后把完整的owner/nameversion写进lib_deps而不是只写一个名字能避免很多歧义。如果库的版本号之间互相冲突比如 A 库依赖 B 库的 1.x而你又显式声明了 B 库的 2.xPlatformIO 会报依赖冲突这时候最好的办法是统一用官方推荐版本或者把 B 库的版本降到 A 库兼容的范围内。另一个常见的编译报错是Multiple libraries were found for xxx.h这是平台包自带的库和lib/目录里的同名库冲突了。解决办法是把lib/下那个多余库删掉或者给它改个名字。检查方法很简单在 VScode 终端运行pio run -v看看具体链接的是哪个路径的库文件一目了然。5.3 代码补全不生效与 IntelliSense 误报PlatformIO 插件在代码补全这块依赖 Microsoft C/C 扩展的 IntelliSense 引擎。有些人装完之后发现代码补全完全没反应这是因为 PlatformIO 的 IntelliSense 索引需要基于编译数据库compile_commands.json来生成首次打开工程会先扫描一遍源码这个过程可能需要几分钟。如果长时间不生效可以在 VScode 命令面板CtrlShiftP里运行PlatformIO: Rebuild IntelliSense Index强制刷新。还有一类更烦人的问题IntelliSense 给出的错误是误报。比如代码明明可以正常编译但在编辑器里却画着红色波浪线点开显示#include errors detected。这通常是 IntelliSense 没有加载正确的编译参数最常见的原因是没有为当前环境生成 compile_commands.json。解决办法是在platformio.ini里加一行build_flags -D PIO_UNIT_TESTING或者更直接的运行pio run -t compiledb生成compile_commands.json然后在 VScode 的 C/C 配置里指定这个文件作为编译数据库。注意这里的-t compiledb需要安装 compiledb 工具或者使用 PlatformIO 的pio project config命令来自动生成。搞定了编译数据库IntelliSense 基本就不会乱报了。如果误报依然存在还可以检查一下 VScode 的 C/C 扩展是否设置了错误提示等级。把C_Cpp.errorSquiggles改成disabled能暂时屏蔽误报但这不是根治办法最终还是靠编译数据库来解决问题。5.4 工程迁移与团队协作的隐藏坑很多人把 Arduino 工程从 Arduino IDE 迁移到 PlatformIO 时会遇到一个很隐蔽的问题老的.ino文件是 Flat 结构所有代码都在一个文件里而 PlatformIO 默认的src/目录下放的是标准 C 文件。直接复制粘贴.ino的代码到.cpp文件里有时候会出现函数顺序问题因为在.ino文件里 Arduino IDE 会自动生成函数声明变成.cpp后就不自动处理了。解决办法有两个一是继续用.ino文件作为主文件PlatformIO 支持直接编译.ino它会自动为你补全函数声明二是把原来的setup()和loop()之外的函数全部加上前置声明或者把自定义函数的实现放在头文件里再#include进来。我个人的习惯是把业务逻辑拆成多个.h和.cpp主文件只保留setup()和loop()的调用入口这样工程结构最清晰也最符合 C 的项目惯例。工程迁移后还有一个隐患是路径问题。Arduino IDE 的工程文件里如果包含绝对路径的依赖到了新环境就会找不到。PlatformIO 好就好在所有依赖要么通过lib_deps声明要么放在项目lib/目录下不用移动绝对路径。所以在迁移时一定要把所有外部库整理到lib_deps或lib/里不要在源码里写#include C:/Users/xxx/Arduino/libraries/xxx.h这种绝对路径否则坑死后人。6. 给新手的几个建议和我的使用体会写了这么多最后说几句我的心得。环境搭建这事儿说难不难但确实有不少弯弯绕绕尤其是网络问题和驱动问题最容易劝退新手。我在最开始搭环境的时候光是 PlatformIO Core 下载就折腾了一个晚上后来搞明白镜像和离线包的方案之后才算是真正用起来。所以别怕踩坑每踩一个坑你对这套工具链的理解就加深一层。如果你现在还在犹豫要不要从 Arduino IDE 换到 VScode PlatformIO我的建议是如果你只是入门三五天的玩票可以把 Arduino IDE 当踏板但如果你打算认真做个项目、以后还想用 ESP32、STM32那 VScode PlatformIO 这套组合绝对是值得投入时间的选择。它的学习曲线确实比 Arduino IDE 陡一点但跨过前面几道坎之后你会发现它的工程管理、依赖管理和多平台支持能帮你省下大把时间。最后再分享一个小技巧我后来做多板项目时用得特别多在platformio.ini里配置upload_port参数把常用的板子串口固定下来比如upload_port COM5这样每次插线、点上传不用每次去选端口。如果你有两个板子经常互换着插也可以给每个环境指定不同的口一键切换非常省心。希望这篇攻略能帮你把环境搭顺让你少走弯路早点把精力放在代码本身和项目实现上。
