4、环境搭建:Arduino IDE / ESP-IDF / STM32CubeIDE 安装与配置、串口驱动安装、第一个LED闪烁程序
说实话,做物联网开发这么多年,我见过太多新手卡在环境搭建这一步。明明代码逻辑没问题,就是编译报错、下载失败,最后发现是工具链没配好。嗯,这一章咱们就把这事彻底搞定。
我会带你装三个主流开发环境:Arduino IDE(适合快速验证)、ESP-IDF(乐鑫官方框架,功能全)、STM32CubeIDE(ST家的硬核工具)。最后再写个LED闪烁程序,让板子真正“活”起来。
4.1 Arduino IDE:五分钟上手
Arduino IDE 是我个人最常用的快速原型工具。说白了,它就是个“傻瓜式”IDE,但背后有庞大的社区和库支持。
安装步骤
- 去官网下载对应系统的安装包(Windows选.exe,Mac选.dmg)
- 一路默认安装,注意勾选“安装USB驱动”
- 打开IDE,进入 文件 → 首选项,在“附加开发板管理器网址”里填入:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - 进入 工具 → 开发板 → 开发板管理器,搜索“ESP32”并安装
配置串口
插上ESP32开发板,打开设备管理器(Windows)或系统信息(Mac),看看串口号。我习惯记成“COM3”或“/dev/cu.usbserial-xxx”。然后在IDE里选对端口和开发板型号(比如“ESP32 Dev Module”)。
4.2 ESP-IDF:专业玩家的选择
如果你要做量产级产品,ESP-IDF 是绕不开的。它提供了完整的FreeRTOS支持、WiFi/BLE协议栈,还有丰富的组件库。我第一次用IDF时也被它的安装流程吓到,但用顺了之后真香。
安装方式(推荐离线安装器)
- 从乐鑫官网下载 ESP-IDF Tools Installer(选择离线版,大概1.5GB)
- 运行安装器,选择安装路径(注意:路径不要有中文和空格)
- 安装器会自动下载Python、Git、交叉编译工具链
- 安装完成后,桌面会出现“ESP-IDF 5.x CMD”快捷方式
验证安装
打开ESP-IDF命令行,输入:
idf.py --version
如果看到版本号,说明安装成功。然后可以创建一个示例项目:
idf.py create-project my_blink
cd my_blink
idf.py set-target esp32
idf.py menuconfig # 配置项目(可选)
idf.py build
4.3 STM32CubeIDE:工业级MCU开发
STM32在工业控制、电机驱动领域用得特别多。STM32CubeIDE 整合了代码生成、编译、调试功能,比Keil更现代。我个人觉得它的代码生成器(CubeMX)是最大亮点。
安装要点
- 去ST官网注册账号并下载安装包(约1.2GB)
- 安装时选择“Full installation”,包含所有MCU包
- 安装完成后,首次启动会提示安装驱动(ST-Link驱动)
配置调试器
如果你用ST-Link调试器,插上后系统会自动识别。如果没识别,手动安装驱动:
- Windows:运行
ST-Link_USB_driver.exe - Mac/Linux:一般免驱,但可能需要给权限
4.4 串口驱动安装:让电脑认识你的板子
很多新手插上开发板,电脑没反应,就以为板子坏了。其实大概率是缺驱动。常见的USB转串口芯片有:
| 芯片型号 | 常见于 | 驱动下载 |
|---|---|---|
| CH340 | 便宜的ESP32/Arduino板 | 官网或驱动精灵 |
| CP2102 | 官方ESP32开发板 | Silicon Labs官网 |
| FT232 | 高端调试器 | FTDI官网 |
| ST-Link | STM32开发板 | ST官网 |
4.5 第一个LED闪烁程序
好了,环境都搭好了,咱们来写个经典的“Hello World” —— LED闪烁。我会分别给出三个环境的代码。
Arduino IDE 版本
// 大多数ESP32开发板的LED接在GPIO2
#define LED_PIN 2
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
Serial.println("LED Blink Start!");
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(1000); // 亮1秒
digitalWrite(LED_PIN, LOW);
delay(1000); // 灭1秒
}
上传后,如果板子上的LED以1秒间隔闪烁,恭喜你,环境搭建成功了!
ESP-IDF 版本
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define LED_GPIO GPIO_NUM_2
void app_main(void)
{
gpio_reset_pin(LED_GPIO);
gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT);
while (1) {
gpio_set_level(LED_GPIO, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(LED_GPIO, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
编译命令:idf.py build flash monitor。注意,IDF的延时用的是FreeRTOS的vTaskDelay,而不是delay()。
STM32CubeIDE 版本
用CubeMX生成代码时,在Pinout视图里把PC13(或板载LED引脚)设为GPIO_Output。然后在主循环里加:
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(1000);
STM32的HAL库用HAL_Delay做毫秒级延时。我第一次用的时候,忘了初始化定时器,结果LED死活不闪。后来才发现CubeMX默认用SysTick做时基,不需要额外配置。
4.6 常见问题与排查
- 编译报错“找不到头文件”:检查开发板型号是否选对,路径是否有中文
- 上传失败“连接超时”:按住开发板的BOOT键再点上传,或者检查串口是否被占用
- LED不亮:先确认引脚号对不对。我见过有人把LED接在GPIO5,代码里写GPIO2,当然不亮
- 串口没输出:检查波特率是否匹配(Arduino默认115200,IDF也是115200)
下一章,咱们会深入传感器数据采集,用真实的温湿度模块来实战。到时候你会发现,今天搭的环境,就是未来所有项目的起点。