第2章:开发环境搭建——安装Keil/Arduino IDE,配置STM32CubeMX或ESP-IDF,点亮第一个LED

好,咱们正式开始动手了。上一章聊了方案选型,这一章咱们把“家伙事儿”备齐。说白了,就是装软件、配环境,然后让板子上的LED闪一下。

很多新手倒在这一步——装了一堆软件,结果点不亮灯。我当年也干过这事,装完Keil发现找不到芯片包,折腾了一下午。嗯,咱们今天就把这些坑填平。

2.1 开发工具的选择:两条路,看你选哪个

咱们课程里用两种主流方案:STM32 + Keil + CubeMXESP32 + Arduino IDE + ESP-IDF。你选哪个都行,我建议初学者先从Arduino IDE入手,简单。想深入搞工业级产品,再转Keil。

对比项 STM32方案 ESP32方案
IDE Keil MDK(收费,但有社区版) Arduino IDE(免费)
配置工具 STM32CubeMX(图形化配置) ESP-IDF(命令行或VS Code插件)
上手难度 中等,需要理解寄存器 简单,封装好,适合快速验证
典型应用 工业控制、复杂外设 物联网、WiFi/蓝牙项目

我个人习惯是:原型验证用Arduino,正式产品用Keil+CubeMX。你想想看,Arduino写个点灯就几行代码,Keil那边还得配时钟树、管脚映射。但Keil的调试功能强太多了,出问题能直接看寄存器值。

2.2 安装Keil MDK + STM32CubeMX

2.2.1 下载与安装Keil

去Keil官网(www.keil.com)下载MDK-Arm版本。注意,别下成C51了,那是给51单片机用的。安装时一路默认就行,但有个坑——安装路径不要有中文。我曾经帮一个学员远程调试,他装在“D:\开发工具\Keil”下,结果编译报错,改成英文路径就好了。

装完后,需要安装芯片包。打开Keil,点 Pack Installer,搜索你的芯片型号,比如STM32F103C8,点击Install。这一步很关键,不然你写代码时找不到头文件。

2.2.2 安装STM32CubeMX

CubeMX是ST官方的图形化配置工具。下载后安装,同样注意路径无中文。打开后,选择你的芯片型号,就能开始配置时钟、管脚、外设了。

我举个例子:配置一个LED灯。在CubeMX里,找到PC13管脚(很多STM32板载LED连这个脚),设置为GPIO_Output。然后生成代码,Keil会自动打开。

2.2.3 点亮第一个LED(Keil版)

生成代码后,在 main.cwhile(1) 循环里加上这几行:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);  // 低电平点亮
HAL_Delay(500);                                          // 延时500ms
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);    // 高电平熄灭
HAL_Delay(500);

编译下载,如果看到LED一闪一闪的,恭喜你,环境搭好了。如果没反应,检查一下:BOOT0跳线帽是不是接地了? 我刚开始用STM32时,忘了接BOOT0,程序死活下不进去。

注意: 下载程序时,需要按住板子上的RESET键,点击下载后再松开。有些开发板需要手动复位才能进入下载模式。

2.3 安装Arduino IDE + ESP-IDF

2.3.1 安装Arduino IDE

去arduino.cc下载最新版。安装后,打开 文件 -> 首选项,在“附加开发板管理器网址”里填入ESP32的JSON链接(百度搜“ESP32 Arduino 板管理链接”)。然后打开 工具 -> 开发板 -> 开发板管理器,搜索ESP32,安装。

这一步网速慢的话,你可能要等很久。我建议你换个时间段,或者用手机热点试试。装好后,选择开发板为“ESP32 Dev Module”,端口选对,就能用了。

2.3.2 安装ESP-IDF(可选)

如果你用ESP32做复杂项目,比如OTA升级、蓝牙Mesh,那还是得上ESP-IDF。去乐鑫官网下载离线安装器,装完后配置环境变量。说实话,这个比Arduino麻烦不少,但功能强很多。

我一般这样分工:快速验证用Arduino,正式产品用ESP-IDF。你想想看,Arduino的库虽然好用,但出了问题你很难调试底层。ESP-IDF可以让你直接操作FreeRTOS任务、WiFi事件循环,心里踏实。

2.3.3 点亮第一个LED(Arduino版)

ESP32的板载LED通常连在GPIO2上。打开Arduino IDE,新建一个文件,输入:

void setup() {
  pinMode(2, OUTPUT);  // 设置GPIO2为输出
}

void loop() {
  digitalWrite(2, HIGH);  // 高电平点亮
  delay(500);
  digitalWrite(2, LOW);   // 低电平熄灭
  delay(500);
}

点击上传,等几秒,如果LED开始闪烁,说明环境没问题。如果不闪,检查一下:GPIO2是不是被其他外设占用了? 有些ESP32开发板的GPIO2同时连了LED和SD卡,可能会有冲突。

小技巧: 如果你用的是ESP32-C3或S3,板载LED可能连在不同的GPIO上。先查一下原理图,或者用万用表量一下。我上次用C3,折腾了半天才发现LED在GPIO8上。

2.4 避坑指南:我踩过的那些雷

  • 驱动问题: 插上开发板后,电脑没反应?去装CH340或CP2102驱动。我遇到过好几次,学员说“板子坏了”,结果就是没装驱动。
  • 端口占用: 下载时提示“端口被占用”?关掉串口监视器,或者拔掉其他USB设备。有时候Arduino IDE的串口监视器没关,就会卡住。
  • 电源不足: 如果LED亮度很暗,或者板子反复重启,可能是USB口供电不足。换一个带外接电源的USB HUB,或者用5V 2A的适配器。
  • 代码下载失败: 按住BOOT键,再按一下RESET,然后松开BOOT。这是ESP32的经典下载姿势。我刚开始不知道,每次都要试好几次才能成功。

2.5 小结:环境搭好了,然后呢?

现在你的电脑上应该有了Keil或Arduino IDE,也点亮了第一个LED。说实话,这一步虽然简单,但意义重大——你亲手让一块冰冷的芯片“活”了过来。

下一章,咱们开始接传感器。我会教你如何用I2C总线读取温湿度数据,然后显示在OLED屏幕上。嗯,到时候你会发现,点灯只是热身,真正的乐趣才刚刚开始。

如果你在搭建环境时遇到问题,别急。先检查路径、驱动、端口这三样,90%的问题都出在这。实在搞不定,翻翻评论区,或者直接问我。咱们慢慢来,不赶时间。