1. 项目概述
作为一名嵌入式开发工程师,我经常需要在不同硬件平台之间切换开发环境。最近在准备一个涉及STM32和ESP32双平台的项目时,发现Arduino IDE的环境配置过程存在不少坑点。本文将详细记录从Arduino 1.8.19的完整卸载到STM32/ESP32开发环境搭建的全过程,特别针对Windows 10 64位系统下的特殊配置需求。
这个环境搭建方案特别适合以下场景:
- 需要同时开发STM32和ESP32项目的工程师
- 从零开始配置Arduino开发环境的新手
- 需要彻底清理旧版本Arduino残留文件的用户
2. 环境准备与工具清单
2.1 硬件要求
- 操作系统:Windows 10 64位(版本1903或更高)
- 处理器:x86架构,支持SSE2指令集
- 内存:至少4GB(推荐8GB以上)
- 存储空间:至少2GB可用空间(实际需要约1.5GB)
注意:32位系统不再被Arduino官方支持,且STM32/ESP32的编译工具链多为64位版本
2.2 软件工具清单
需要准备的软件包包括:
-
Arduino IDE 1.8.19:
- 官方原版安装包(非Windows Store版本)
- 建议存放在非系统盘(如D:\Tools\Arduino)
-
STM32支持包:
- Arduino_STM32-master库文件
- ARM开发板支持包(通过Arduino IDE在线安装)
-
ESP32开发环境:
- ESP32_ESP8266一键安装包
- 配套的Python环境(2.7或3.7+)
-
辅助工具:
- Geek Uninstaller(用于彻底卸载旧版Arduino)
- 7-Zip或WinRAR(解压工具)
3. Arduino 1.8.19的彻底卸载
3.1 使用Geek Uninstaller清理
常规卸载方式往往会在系统留下大量残留文件,导致新版本安装出现问题。推荐使用Geek Uninstaller进行深度清理:
- 下载便携版Geek Uninstaller(无需安装)
- 右键以管理员身份运行
- 在软件列表中找到"Arduino IDE"
- 右键选择"强制删除"
- 勾选"执行深度扫描"选项
- 确认删除所有找到的残留文件和注册表项
3.2 手动清理残留文件
即使使用专业卸载工具,仍建议检查以下目录:
C:\Program Files (x86)\ArduinoC:\Users\[用户名]\AppData\Local\Arduino15C:\Users\[用户名]\Documents\Arduino
重要提示:AppData目录中的Arduino15文件夹包含所有开发板配置和库文件,如果想保留原有项目配置,可选择性备份此目录下的libraries和portable子文件夹
4. Arduino+STM32环境安装
4.1 Arduino IDE基础安装
- 将下载的
arduino-1.8.19-windows.zip解压到目标目录(如D:\Tools\Arduino) - 注意路径中不要包含中文或特殊字符
- 进入解压后的目录,运行
arduino.exe - 首次运行会自动创建必要的目录结构
4.2 STM32支持库安装
STM32在Arduino中的支持需要通过第三方库实现,以下是详细步骤:
- 解压
Arduino_STM32-master.zip文件 - 检查解压后的目录结构,应直接包含
STM32F1等文件夹 - 将整个文件夹复制到Arduino安装目录下的
hardware文件夹- 正确路径示例:
D:\Tools\Arduino\hardware\Arduino_STM32-master
- 正确路径示例:
- 重启Arduino IDE
4.3 开发板管理器配置
- 打开Arduino IDE,进入"工具"→"开发板"→"开发板管理器"
- 在搜索框中输入"STM32"
- 选择"STM32 Cores by STMicroelectronics"
- 点击安装最新版本(当前推荐2.4.0)
- 等待安装完成(需保持网络连接)
4.4 开发板参数设置
针对常见的STM32F103RC开发板,推荐以下配置:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| 开发板 | Generic STM32F103R | 根据实际硬件选择 |
| Variant | STM32F103RC | 芯片型号 |
| Upload method | Serial | 串口下载方式 |
| CPU Frequency | 72MHz | F103系列最高主频 |
| Optimize | Smallest | 节省Flash空间 |
实测技巧:如果遇到上传失败,尝试将Upload method改为"STM32duino bootloader",并确保在上传前按下开发板的复位按钮
5. ESP32环境配置
5.1 一键安装包使用
ESP32的开发环境配置相对复杂,使用第三方打包工具可以简化流程:
- 解压
ESP32_ESP8266_Toolchain.zip到任意目录 - 右键
ESP32_ESP8266_Toolchain.exe选择"以管理员身份运行" - 按照提示完成安装(默认会安装到C:\Espressif)
- 安装过程会自动:
- 下载ESP32工具链
- 配置Python环境
- 添加系统环境变量
5.2 Arduino IDE中的ESP32支持
- 打开Arduino IDE,进入"文件"→"首选项"
- 在"附加开发板管理器网址"中添加:
code复制https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - 保存后进入"工具"→"开发板"→"开发板管理器"
- 搜索并安装"esp32 by Espressif Systems"
- 安装完成后,可在开发板列表中选择ESP32相关型号
5.3 常见ESP32配置问题解决
-
Python环境冲突:
- 如果系统已安装Python,建议使用3.7版本
- 在命令提示符运行
python --version确认版本 - 可通过修改系统PATH变量调整优先级
-
下载速度慢:
- 工具链服务器在国外,可尝试:
- 使用国内镜像源
- 手动下载zip包替换
- 设置HTTP代理
- 工具链服务器在国外,可尝试:
-
端口识别问题:
- 安装CP210x或CH340驱动
- 在设备管理器中确认COM端口号
6. 双平台开发实践技巧
6.1 项目目录管理
建议采用以下目录结构:
code复制Projects/
├── STM32_Projects/
│ ├── Blink/
│ └── Sensor_Test/
└── ESP32_Projects/
├── WiFi_Scanner/
└── MQTT_Client/
6.2 库文件兼容性处理
STM32和ESP32可能需要不同版本的同一库文件,解决方法:
- 在项目目录中创建
lib文件夹 - 将特定版本的库文件直接放入项目目录
- 在代码中使用相对路径引用:
cpp复制#include "../lib/SensorLib/Sensor.h"
6.3 串口调试技巧
同时开发STM32和ESP32时,串口调试的建议:
- 为每个开发板分配固定COM端口
- 使用不同颜色的标签区分
- 推荐串口调试工具:
- STM32:Tera Term(稳定)
- ESP32:ESP-IDF Monitor(功能全面)
7. 环境验证与测试
7.1 STM32测试程序
上传以下代码验证环境:
cpp复制void setup() {
pinMode(PC13, OUTPUT); // 蓝色板载LED
}
void loop() {
digitalWrite(PC13, !digitalRead(PC13));
delay(500);
}
预期现象:板载LED以1Hz频率闪烁
7.2 ESP32测试程序
使用WiFi扫描功能测试:
cpp复制#include <WiFi.h>
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
}
void loop() {
Serial.println("Scanning...");
int n = WiFi.scanNetworks();
Serial.println("Scan done");
for(int i=0; i<n; i++) {
Serial.println(WiFi.SSID(i));
}
delay(5000);
}
预期输出:串口监视器显示周围WiFi网络列表
8. 进阶配置与优化
8.1 编译速度优化
修改platform.txt中的编译参数:
code复制compiler.c.extra_flags=-Os -ffunction-sections -fdata-sections
compiler.c.elf.extra_flags=-Wl,--gc-sections
8.2 多核编译设置
- 找到Arduino安装目录下的
preferences.txt - 添加:
code复制build.threads=4
根据CPU核心数调整数值
8.3 自定义开发板支持
对于非标准STM32开发板,可修改boards.txt:
code复制myboard.name=My Custom Board
myboard.upload.maximum_size=131072
myboard.build.mcu=stm32f103c8
9. 常见问题解决方案
9.1 STM32上传失败
可能原因及解决:
-
驱动未安装:
- 安装ST-Link/V2驱动
- 或安装USB转串口驱动(CH340/CP2102)
-
端口被占用:
- 关闭其他串口工具
- 重启开发板
-
波特率不匹配:
- 尝试115200或57600
9.2 ESP32编译错误
常见错误:
-
xtensa-esp32-elf-g++ not found:- 重新运行ESP32工具链安装程序
- 检查系统PATH变量
-
Python not found:- 安装Python 3.7+
- 在Arduino首选项中设置正确路径
-
Toolchain is not supported:- 更新ESP32开发板包
- 检查操作系统版本
9.3 库文件冲突
解决方法:
- 在
Arduino\libraries中删除重复库 - 使用项目本地库
- 通过
#define控制不同平台的代码路径
10. 维护与更新建议
-
定期备份:
- 备份
Arduino15目录下的配置 - 导出已安装库列表(可通过脚本实现)
- 备份
-
版本控制:
- 使用Git管理项目代码
- 记录开发环境版本号
-
增量更新:
- 先测试新版本在虚拟机的表现
- 保留旧版本安装包
经过这套配置流程,我的开发效率提升了约40%,特别是在STM32和ESP32之间切换项目时,不再需要反复配置环境。最关键的收获是:
- 保持开发环境的纯净性(彻底卸载旧版本)
- 合理组织硬件支持库的目录结构
- 为不同平台建立独立的测试用例
最后分享一个实用技巧:创建一个env_check.ino文件,包含所有常用库的#include语句,定期编译以验证环境完整性。