3、开发环境搭建:Keil/STM32CubeIDE安装、ESP-IDF配置、Arduino IDE设置、调试工具准备
好,咱们开始搭建开发环境。这一步其实挺关键的——环境没搭好,后面写再多代码也跑不起来。我见过不少新手卡在这一步,其实说白了就是几个工具链的安装和配置。别急,我一个一个带你过。
3.1 Keil MDK 安装与配置
Keil MDK 是 ARM 内核单片机开发的老牌工具。我个人习惯用它做 STM32 的裸机开发,尤其是调试起来很顺手。
安装步骤
- 去 Keil 官网下载 MDK-ARM 安装包(建议用 5.38 或更新版本)
- 双击安装,一路 Next。注意安装路径不要有中文
- 安装完成后,打开 Keil uVision,点击
Pack Installer图标 - 在 Pack Installer 里搜索你的芯片型号,比如 STM32F103C8,点击 Install
- 安装对应的 Device Family Pack,这样 Keil 才能识别你的芯片
许可证激活
Keil 是收费软件,但可以申请免费的评估版许可证(限制 32KB 代码大小)。对于学习照明系统来说,32KB 完全够用。如果你用正版授权,记得在 File → License Management 里输入许可证 ID。
3.2 STM32CubeIDE 安装
STM32CubeIDE 是 ST 官方推出的免费 IDE,基于 Eclipse。说实话,我更喜欢用它做 HAL 库开发,因为代码生成器太方便了。
安装流程
- 从 ST 官网下载 STM32CubeIDE 安装包(Windows/Linux/macOS 都有)
- 安装时选择默认组件,建议勾选
STM32CubeProgrammer(烧录工具) - 安装完成后,首次启动会提示选择工作空间(Workspace),建议单独建一个文件夹
配置要点
- 新建工程:
File → New → STM32 Project,选择芯片型号 - 时钟配置: 在
.ioc文件里配置时钟树。我一般先选外部晶振,再配 PLL - 调试器设置: 默认用 ST-Link,如果用的是 J-Link 或 DAP-Link,记得在 Debug Configuration 里切换
Window → Preferences → General → Keys 里可以改。
3.3 ESP-IDF 配置
ESP-IDF 是乐鑫官方的物联网开发框架。做照明系统时,如果你要用 ESP32 做 Wi-Fi 或蓝牙控制,这套工具链是必须的。
安装方式(推荐用 VS Code 插件)
- 安装 VS Code,然后在扩展市场搜索
ESP-IDF,安装乐鑫官方插件 - 按
Ctrl+Shift+P,输入ESP-IDF: Configure ESP-IDF Extension - 选择
Express模式,插件会自动下载 ESP-IDF 工具链和 Python 环境 - 等待下载完成(大概 10-20 分钟,看网速)
手动安装(Linux/Mac 用户)
# 克隆 ESP-IDF 仓库
git clone --recursive https://github.com/espressif/esp-idf.git
# 安装工具链
cd esp-idf
./install.sh
# 设置环境变量(每次打开终端都要执行)
. ./export.sh
避坑指南: 我曾经在 Windows 上手动装 ESP-IDF,结果 Python 路径搞乱了。后来发现用 VS Code 插件一键安装最省心。说白了,能用工具解决的问题就别自己折腾。
验证安装
打开终端,输入 idf.py --version。如果显示版本号,说明安装成功。然后可以跑一个示例工程:
cp -r $IDF_PATH/examples/get-started/hello_world .
cd hello_world
idf.py set-target esp32
idf.py menuconfig
idf.py build
3.4 Arduino IDE 设置
Arduino IDE 虽然简单,但做照明系统原型验证时特别好用。尤其是用 WS2812 灯带的时候,Arduino 的库支持最全。
安装步骤
- 从 arduino.cc 下载 Arduino IDE(建议用 2.x 版本,界面更现代)
- 安装后,打开
文件 → 首选项,在附加开发板管理器网址里添加:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
- 打开
工具 → 开发板 → 开发板管理器,搜索esp32并安装 - 同样搜索
STM32并安装(STM32duino 支持)
库安装
做照明系统常用的库:
| 库名 | 用途 | 安装方式 |
|---|---|---|
| Adafruit NeoPixel | WS2812 灯带控制 | 库管理器搜索安装 |
| FastLED | 高性能 LED 控制 | 库管理器搜索安装 |
| DHT sensor library | 温湿度传感器 | 库管理器搜索安装 |
3.5 调试工具准备
调试工具是嵌入式开发的「眼睛」。没有它们,你写代码就像闭着眼睛走路。
必备硬件
- ST-Link V2: 调试 STM32 的标配,淘宝 20 块一个。注意买带隔离的版本,我曾经烧过一个 ST-Link,就是因为没隔离
- J-Link EDU: 如果预算够,J-Link 的调试体验更好,支持断点更多
- USB 转 TTL 模块: 用 CH340G 芯片的就行,几块钱一个,用来串口打印
- 逻辑分析仪: 推荐 Saleae 逻辑分析仪(或者国产 24MHz 8 通道的),抓取时序波形必备
软件调试工具
| 工具 | 用途 | 备注 |
|---|---|---|
| 串口助手(SSCOM) | 串口数据收发 | 免费,轻量 |
| Putty | 串口终端 | 支持 SSH |
| Wireshark | 网络抓包 | 调试 Wi-Fi 时用 |
调试技巧
嗯,这里要注意——调试不是出了问题才做,而是从一开始就要规划好。我一般会在代码里预留串口打印接口,用宏控制开关:
#define DEBUG_ENABLE 1
#if DEBUG_ENABLE
#define DEBUG_PRINT(fmt, ...) printf("[DEBUG] " fmt "\r\n", ##__VA_ARGS__)
#else
#define DEBUG_PRINT(fmt, ...)
#endif
3.6 环境验证:跑一个 LED 闪烁
工具都装好了,咱们跑个最简单的程序验证一下。以 STM32F103C8 为例:
#include "stm32f1xx_hal.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);
}
}
static void MX_GPIO_Init(void)
{
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
编译下载后,如果板子上的 LED 以 0.5 秒间隔闪烁,说明环境搭建成功。如果没反应,先检查接线,再检查调试器驱动。我遇到过最奇葩的问题——ST-Link 的驱动没装好,设备管理器里显示黄色感叹号。重装驱动就好了。
好了,环境搭建就到这里。下一章咱们开始写真正的照明控制代码。记住,环境搭好了,后面就顺了。