2. 开发环境搭建

做嵌入式开发,第一道坎就是搭环境。我见过太多学员卡在这一步,工具链没配好,连个LED都点不亮,信心直接崩了。这一章咱们就把这事彻底搞定。

说白了,开发环境就是你的武器库。选对工具,后面写代码、调bug才能顺手。咱们这门课涉及STM32和ESP32两个平台,所以Keil、STM32CubeIDE、ESP-IDF、Arduino IDE都得安排上。别怕,我一个一个带你过。

本章核心目标: 完成4个IDE的安装与验证,确保串口驱动正常工作,能成功编译并下载一个空工程。
开发环境全景图 你的开发电脑 Keil MDK STM32CubeIDE STM32CubeMX ESP-IDF Arduino IDE CP210x/CH340驱动 STM32用Keil/CubeIDE,ESP32用IDF/Arduino

2.1 Keil MDK 安装与配置

Keil MDK是ARM内核MCU的老牌工具。我个人习惯用它做STM32开发,编译快,调试稳。不过要注意,Keil现在只支持ARM内核,老51项目得用C51版本。

安装步骤

  1. 下载安装包:去ARM官网或Keil官网下载MDK-Arm最新版(目前是5.38)。
  2. 运行安装程序:一路Next,路径别带中文。我建议装到 C:\Keil_v5,省心。
  3. 安装器件包:打开Keil,点 Pack Installer,找到STM32F1系列(咱们课程用STM32F103C8T6),点击Install。
  4. 注册许可证:免费版有32KB代码限制,做小项目够用。想解锁全部功能,得买License。
我的经验: 装完Keil第一件事,去 Project → Manage → Run-Time Environment 看一眼。很多新手不知道这里可以一键添加CMSIS、RTX等组件,省去手动移植的麻烦。

验证安装

新建一个空工程,选STM32F103C8,写个简单的main函数,编译通过就算成了。

// test.c - 验证Keil环境
#include "stm32f10x.h"

int main(void)
{
    // 开启GPIOB时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
    // 配置PB0为推挽输出
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    while(1)
    {
        GPIO_SetBits(GPIOB, GPIO_Pin_0);   // 点亮LED
        // 延时函数省略...
    }
}

2.2 STM32CubeIDE 安装与配置

STM32CubeIDE是ST官方基于Eclipse打造的免费IDE。它集成了CubeMX的图形化配置功能,说白了就是画个引脚图,代码自动生成。我最近几年做原型验证,越来越喜欢用它。

安装步骤

  1. 下载:去ST官网搜STM32CubeIDE,选对应操作系统版本。
  2. 安装:解压后运行安装程序。注意,它会自动安装Java运行环境,别中断。
  3. 首次启动:选择工作空间路径(workspace),我建议单独建个文件夹,别跟项目混一起。
  4. 安装固件包:新建STM32工程时,IDE会自动提示下载对应系列固件包。咱们用F1系列,大概200MB左右。
避坑提醒: 我曾经在Win7上装CubeIDE,死活打不开。后来发现是缺少VC++运行库。如果你遇到类似问题,去微软官网装 Visual C++ Redistributable for Visual Studio 2015-2022 就能解决。

与CubeMX的关系

CubeIDE内置了CubeMX功能。你可以在IDE里直接配置时钟树、外设引脚、中间件,然后一键生成初始化代码。不需要单独开CubeMX。

功能 Keil MDK STM32CubeIDE
编译器 ARMCC(v5/v6) GCC ARM Embedded
图形化配置 需配合CubeMX 内置CubeMX
调试器 ULINK/J-Link/ST-Link ST-Link(原生支持)
代码大小限制 免费版32KB 无限制
跨平台 仅Windows Windows/Linux/macOS

2.3 ESP-IDF 环境搭建

ESP-IDF是乐鑫官方的物联网开发框架。说实话,第一次配IDF环境确实有点劝退——命令行操作,依赖多,下载慢。但配好之后,你会发现它真的很强大。

安装方式选择

有两种主流方式:

  • 离线安装器(推荐):乐鑫提供了Windows下的离线安装包,一键装好Python、Git、工具链和IDF本身。适合新手。
  • 手动安装:用pip和git拉取。适合Linux/macOS用户,或者想自己控制版本的开发者。

离线安装步骤(Windows)

  1. 去乐鑫官网下载 ESP-IDF Tools Installer。
  2. 运行安装器,选 Use an existing ESP-IDF directory 或 Download ESP-IDF。我建议选后者,省事。
  3. 安装器会自动下载ESP-IDF v5.x(咱们用v5.1.2),以及配套的Python虚拟环境。
  4. 安装完成后,桌面会出现 ESP-IDF 5.1 CMD 快捷方式。双击打开,输入 idf.py --version 验证。
# 验证ESP-IDF环境
C:\Users\YourName> idf.py --version
ESP-IDF v5.1.2

# 创建一个示例工程
C:\Users\YourName> idf.py create-project my_project
C:\Users\YourName> cd my_project
C:\Users\YourName\my_project> idf.py set-target esp32
C:\Users\YourName\my_project> idf.py menuconfig  # 配置项目
C:\Users\YourName\my_project> idf.py build       # 编译
小技巧: 如果你网络不好,下载IDF源码时经常断。我一般用 git clone --depth=1 只拉最新版本,省流量也省时间。

2.4 Arduino IDE 环境搭建

Arduino IDE适合快速验证想法。虽然它隐藏了很多底层细节,但做原型开发时效率极高。咱们课程后面会用Arduino IDE演示一些快速原型案例。

安装步骤

  1. 去arduino.cc下载Arduino IDE 2.x(新版本有代码补全和串口监视器增强)。
  2. 安装后,打开 文件 → 首选项,在 附加开发板管理器网址 里填入ESP32的JSON链接:https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. 打开 工具 → 开发板 → 开发板管理器,搜索 esp32,安装 esp32 by Espressif Systems。
  4. 安装完成后,在 工具 → 开发板 里就能看到ESP32系列了。

验证安装

选 ESP32 Dev Module,写个Blink例程,编译下载到板子上。

// Arduino Blink 验证
void setup() {
    pinMode(2, OUTPUT);  // ESP32开发板上的LED通常接GPIO2
}

void loop() {
    digitalWrite(2, HIGH);
    delay(1000);
    digitalWrite(2, LOW);
    delay(1000);
}

2.5 串口驱动安装与验证

串口是嵌入式开发者的生命线。调试信息、AT指令、固件下载,全得靠它。咱们用的STM32最小系统板通常带CH340或CP2102芯片,ESP32开发板一般用CP2102。

驱动安装

芯片型号 驱动名称 下载方式
CH340 CH340/CH341驱动 搜索"CH340驱动",从沁恒官网下载
CP2102 CP210x USB to UART Bridge 从Silicon Labs官网下载
FT232 FTDI VCP驱动 从FTDI官网下载
我曾经踩过的坑: 有一次客户说板子连不上电脑,我远程看了半天,最后发现是CH340驱动被360杀毒软件误删了。装驱动时最好关掉杀毒软件,或者把驱动目录加入白名单。

验证串口通信

驱动装好后,插上开发板,打开设备管理器,在 端口(COM和LPT) 下应该能看到对应的COM口。然后打开串口助手(比如Putty、SSCOM或Arduino IDE自带的串口监视器),设置波特率115200,8N1,就能收发数据了。

// 串口验证代码(Arduino)
void setup() {
    Serial.begin(115200);  // 初始化串口,波特率115200
    Serial.println("Hello from ESP32!");
}

void loop() {
    if (Serial.available()) {
        char c = Serial.read();
        Serial.print("Received: ");
        Serial.println(c);
    }
}

打开串口监视器,如果看到 Hello from ESP32!,说明串口驱动和硬件都正常。嗯,到这里,你的开发环境就全部就绪了。

环境检查清单:
  • ☐ Keil MDK 能编译STM32空工程
  • ☐ STM32CubeIDE 能创建并编译工程
  • ☐ ESP-IDF 命令行能执行 idf.py build
  • ☐ Arduino IDE 能编译ESP32 Blink例程
  • ☐ 串口驱动安装成功,设备管理器显示COM口
  • ☐ 串口助手能收发数据