🎯 STM32 & ESP32 嵌入式学习路线
📋 学习路线图总览
第一阶段:基础准备
↓
第二阶段:STM32 入门 → STM32 进阶
↓
第三阶段:ESP32 入门 → ESP32 进阶
↓
第四阶段:嵌入式进阶(RTOS/物联网/Linux)
↓
第五阶段:专业方向选择
🏗️ 第一阶段:基础准备(1-2个月)
1.1 必备 C 语言基础
| 知识点 | 重要程度 | 内容 |
|---|---|---|
| 数据类型 | ⭐⭐⭐⭐⭐ | int/char/float/struct/enum/指针 |
| 流程控制 | ⭐⭐⭐⭐ | if/else, switch, for, while |
| 函数与递归 | ⭐⭐⭐⭐ | 函数定义、参数传递、递归思想 |
| 指针 | ⭐⭐⭐⭐⭐ | 一级指针、二级指针、函数指针 |
| 数组与字符串 | ⭐⭐⭐⭐ | 数组操作、字符串处理函数 |
| 结构体与联合体 | ⭐⭐⭐⭐⭐ | struct、union、位域 |
| 内存管理 | ⭐⭐⭐⭐ | 堆栈区别、malloc/free |
| 预处理器 | ⭐⭐⭐ | 宏定义、条件编译、头文件 |
1.2 数字电路基础
-
二进制/十六进制转换 - 必须熟练
-
逻辑门电路 - 与或非、异或
-
时序电路 - 时钟、触发器
-
总线协议 - 理解地址总线、数据总线概念
1.3 计算机组成原理
-
CPU 基本工作原理
-
内存与寄存器
-
中断与异常处理概念
-
存储器层次结构
1.4 硬件基础
-
基本电子元件:电阻、电容、电感、二极管、三极管
-
电源电路:LDO、DC-DC 基础
-
示波器、万用表基本使用
📚 推荐资源
-
C语言:《C程序设计语言》(K&R)、《C Primer Plus》
-
数字电路:《数字电子技术基础》(阎石)
-
在线平台:B站 江科大/野火/正点原子教程
🔷 第二阶段:STM32 学习路线
2.1 STM32 入门(2-3个月)
开发环境搭建
-
Keil MDK 或 STM32CubeIDE(推荐)
-
ST-Link/V2 调试器驱动安装
-
第一个工程:点亮 LED(Hello World)
核心外设学习顺序
1. GPIO (通用输入输出)
├── 推挽输出/开漏输出
├── 上拉/下拉输入
└── 复用功能 AF
2. 时钟系统 RCC
├── HSE/HSI/PLL
├── 系统时钟配置
└── 外设时钟使能
3. 中断 NVIC + EXTI
├── 外部中断配置
├── 中断优先级
└── 中断服务函数
4. 定时器 TIM
├── 定时中断
├── PWM 输出
└── 输入捕获
5. 串口 USART
├── 轮询方式
├── 中断方式
└── DMA 方式
6. ADC 模数转换
├── 单通道采集
├── 多通道扫描
└── DMA + 连续转换
7. I2C/SPI 通信
├── I2C: OLED、EEPROM
└── SPI: Flash、TFT屏
8. DMA 直接内存访问
├── 内存到内存
├── 外设到内存
└── 循环模式
入门必做项目
| 项目 | 涉及知识点 |
|---|---|
| 🚥 流水灯 | GPIO、定时器 |
| 📟 OLED 显示 | I2C、字符/图形显示 |
| 🎮 按键控制 | GPIO输入、中断/消抖 |
| 📊 ADC 电压表 | ADC、串口打印 |
| 🌡️ 温湿度监测 | I2C、DHT11/DHT22/SHT30 |
| 🕐 电子时钟 | 定时器、RTC、OLED |
2.2 STM32 进阶(2-3个月)
高级外设
1. 高级定时器
├── 互补 PWM (电机控制)
├── 死区时间插入
└── 刹车输入
2. CAN 总线
├── CAN 协议基础
├── 滤波器配置
└── 多节点通信
3. USB 外设
├── USB HID (键盘/鼠标)
├── USB CDC (虚拟串口)
└── USB MSC (U盘)
4. 以太网 ETH
├── LWIP 协议栈
├── TCP/UDP 通信
└── HTTP 服务器
5. SD 卡 + FATFS
├── SDIO/SDMMC 接口
├── FATFS 文件系统
└── 文件读写操作
6. 触摸屏 + GUI
├── 电阻/电容屏驱动
├── LVGL 图形库
└── 界面设计
进阶项目建议
| 项目 | 技术栈 |
|---|---|
| 🎛️ 电机 PID 控制系统 | PWM、编码器、PID算法 |
| 📡 无线遥控器 | NRF24L01/HC-12、SPI |
| 🌐 物联网网关 | 以太网、MQTT、JSON |
| 🎵 音乐播放器 | SD卡、I2S、DAC、FATFS |
| 🖥️ 简易示波器 | ADC+DMA、TFT屏、触发 |
| 🚗 智能小车 | 电机驱动、红外/超声避障、PID |
2.3 STM32 学习资源
| 类型 | 推荐 |
|---|---|
| 开发板 | 正点原子 MiniSTM32、野火指南者 |
| 教程 | 正点原子/野火/江科大视频 |
| 文档 | 《STM32参考手册》《库函数手册》 |
| 社区 | ST中文论坛、知乎、CSDN |
🔶 第三阶段:ESP32 学习路线
3.1 ESP32 入门(1-2个月)
为什么选择 ESP32?
-
✅ 内置 WiFi + 蓝牙
-
✅ 性能强:双核 240MHz
-
✅ 便宜:开发板 20-30元
-
✅ Arduino/IDF/MicroPython 多生态
开发环境选择
| 方案 | 难度 | 适用场景 |
|---|---|---|
| Arduino | ⭐ 简单 | 快速原型、学习入门 |
| ESP-IDF | ⭐⭐⭐ 中等 | 专业开发、性能优化 |
| MicroPython | ⭐ 简单 | 脚本快速验证 |
| PlatformIO | ⭐⭐ 较易 | VS Code 开发 |
核心知识点
1. GPIO 与数字 IO
├── digitalRead/Write
├── 中断 attachInterrupt
└── PWM (LEDC)
2. WiFi 通信
├── STA 模式 (连路由器)
├── AP 模式 (开热点)
└── SmartConfig 配网
3. 网络协议
├── HTTP Client/Server
├── WebSocket
├── MQTT (物联网核心)
└── UDP/TCP Socket
4. 蓝牙 BLE
├── BLE Server/Client
├── GATT 服务
└── Beacon/iBeacon
5. 存储
├── EEPROM
├── SPIFFS / LittleFS
└── Preferences (NVS)
6. 睡眠与功耗
├── Light Sleep
├── Deep Sleep
└── 定时唤醒/外部唤醒
入门项目
| 项目 | 知识点 |
|---|---|
| 🌡️ 温湿度上报云端 | DHT22 + MQTT + 云平台 |
| 📱 手机控制 LED | HTTP Server + 手机浏览器 |
| 🔔 门铃通知 | 中断 + 微信推送/钉钉 |
| ⏰ 网络时钟 | NTP + OLED显示 |
| 🏠 智能家居开关 | 继电器 + Web控制界面 |
3.2 ESP32 进阶(2-3个月)
高级功能
1. FreeRTOS 深度使用
├── 任务创建与管理
├── 队列/信号量/互斥锁
├── 事件组
└── 软件定时器
2. 摄像头 (ESP32-CAM)
├── OV2640 驱动
├── 视频流服务器
└── 人脸识别 (ESP-WHO)
3. 音频处理
├── I2S 麦克风/扬声器
├── 语音播放
└── 离线语音唤醒 (ESP-SR)
4. 边缘 AI
├── TensorFlow Lite Micro
├── 模型量化与部署
└── 图像/语音分类
5. 高级网络
├── ESP-MESH 组网
├── ESP-NOW (低延迟通信)
└── Web Server + SPIFFS 文件系统
进阶项目
| 项目 | 技术点 |
|---|---|
| 🎥 智能监控摄像头 | ESP32-CAM + 移动侦测 + 云端存储 |
| 🎙️ 语音助手 | 离线唤醒 + 在线语音识别 |
| 🌡️ 完整气象站 | 多传感器 + Grafana 可视化 |
| 🏠 全屋智能家居 | 多设备 MQTT + Home Assistant |
| 🤖 平衡车/无人机 | PID + MPU6050 + 电机控制 |
| 📡 LoRa 网关 | LoRa + WiFi 透传 |
3.3 ESP32 学习资源
| 类型 | 推荐 |
|---|---|
| 开发板 | ESP32-DevKitC、ESP32-S3-DevKit |
| 教程 | 太极创客、B站 ESP32 教程 |
| 文档 | ESP-IDF 编程指南、Arduino-ESP32 文档 |
| 社区 | ESP32 论坛、知乎、GitHub |
🚀 第四阶段:嵌入式进阶
4.1 实时操作系统 RTOS
| RTOS | 特点 | 适用 |
|---|---|---|
| FreeRTOS | 轻量、文档丰富、生态好 | 通用首选 |
| RT-Thread | 国产、组件丰富 | 国内项目 |
| Zephyr | 现代、安全、Linux基金会 | 高端产品 |
| RTX | ARM官方、MDK内置 | 工业项目 |
FreeRTOS 核心概念
├── 任务管理
│ ├── 任务创建/删除
│ ├── 任务状态(就绪/运行/阻塞/挂起)
│ └── 任务调度策略
├── 同步机制
│ ├── 二值信号量/计数信号量
│ ├── 互斥锁 (Mutex)
│ ├── 递归互斥锁
│ └── 事件组 (Event Group)
├── 通信机制
│ ├── 队列 (Queue)
│ ├── 流缓冲区 (Stream Buffer)
│ └── 消息缓冲区 (Message Buffer)
└── 内存管理
├── 静态分配
└── 动态分配 (Heap_1~Heap_5)
4.2 物联网全栈
设备端 云端 应用端
│ │ │
├─→ MQTT Broker ───────┼─→ 后端服务 ────────────┼─→ Web/App
│ (Mosquitto/EMQX) │ (Node.js/Python) │ (React/Vue)
│ │ │
├─→ CoAP/LwM2M ────────┼─→ 物联网平台 ──────────┼─→ 小程序
│ │ (阿里云/华为云/AWS) │
│ │ │
└─→ HTTP API ──────────┴─────────────────────────┘
必学技术栈
| 层级 | 技术 |
|---|---|
| 通信协议 | MQTT、CoAP、HTTP/2、WebSocket、TCP/UDP |
| 数据格式 | JSON、CBOR、Protobuf、MessagePack |
| 云平台 | 阿里云IoT、华为云IoT、AWS IoT、Azure IoT |
| 数据库 | InfluxDB (时序)、MySQL/MongoDB |
| 可视化 | Grafana、ThingsBoard、自建Web |
| 安全 | TLS/SSL、X.509证书、OTA签名 |
4.3 Linux 嵌入式
学习路径
1. Linux 基础
├── 常用命令 (文件/网络/进程)
├── Shell 脚本
├── Makefile 基础
└── GCC 编译工具链
2. 嵌入式 Linux
├── 交叉编译
├── U-Boot 移植
├── Linux 内核裁剪与编译
├── 根文件系统制作 (Buildroot/Yocto)
└── 设备树 (Device Tree)
3. Linux 驱动开发
├── 字符设备驱动
├── 平台总线 (Platform Bus)
├── 中断与并发
├── 总线驱动 (I2C/SPI/USB)
└── Device Tree 绑定
4. Linux 应用开发
├── 文件 IO
├── 多线程编程 (pthread)
├── 网络编程 (Socket)
├── 进程间通信 (IPC)
└── 嵌入式 GUI (Qt/LVGL)
推荐开发板
| 板子 | 用途 |
|---|---|
| 树莓派 | Linux 学习、快速验证 |
| 全志 H3/H5 | 国产入门、便宜 |
| i.MX6ULL | 工业级、文档全 |
| RK3566/RK3588 | AIoT、性能强 |
🎯 第五阶段:专业方向选择
方向 A:物联网工程师
核心技能:
├── 无线通信 (WiFi/BLE/Zigbee/LoRa/NB-IoT)
├── 低功耗设计
├── 云平台对接
├── 边缘计算
└── 推荐:ESP32 + RT-Thread + 阿里云
方向 B:嵌入式 Linux 工程师
核心技能:
├── Linux 内核与驱动
├── Bootloader 开发
├── 文件系统优化
├── 性能调优
└── 推荐:i.MX6ULL/全志 + Yocto/Buildroot
方向 C:单片机/RTOS 工程师
核心技能:
├── 裸机开发优化
├── RTOS 深度定制
├── 电机控制/电源管理
├── 功能安全 (ISO 26262/IEC 61508)
└── 推荐:STM32 + FreeRTOS + 工业项目
方向 D:AIoT/边缘 AI 工程师
核心技能:
├── 深度学习基础
├── 模型量化与部署 (TFLite/ONNX)
├── 视觉/语音处理
├── NPU 加速 (Rockchip/TI/Qualcomm)
└── 推荐:ESP32-S3/RK3566 + TensorFlow Lite
📚 学习资源汇总
视频教程
| 平台 | UP主/频道 | 内容 |
|---|---|---|
| B站 | 正点原子 | STM32 全系列 |
| B站 | 野火电子 | STM32、RTOS |
| B站 | 江协科技 | 51、STM32 入门 |
| B站 | 太极创客 | ESP32、物联网 |
| B站 | 韦东山 | Linux 驱动、应用 |
| YouTube | Andreas Spiess | ESP32 项目 |
书籍推荐
| 书名 | 作者 | 阶段 |
|---|---|---|
| 《STM32库开发实战指南》 | 刘火良 | STM32入门 |
| 《嵌入式实时操作系统FreeRTOS原理与实战》 | 卢有亮 | RTOS |
| 《Linux设备驱动开发详解》 | 宋宝华 | Linux驱动 |
| 《奔跑吧Linux内核》 | 笨叔 | Linux内核 |
| 《嵌入式C语言自我修养》 | 王利涛 | C语言进阶 |
在线文档
开源项目学习
| 项目 | 说明 |
|---|---|
| Marlin | 3D打印机固件,STM32 |
| Betaflight | 飞控固件,STM32 |
| Tasmota | ESP8266/32 智能家居 |
| ESPHome | ESP32 物联网框架 |
| OpenMV | 嵌入式视觉,STM32 |
🛠️ 工具清单
硬件工具
| 工具 | 用途 | 推荐型号 |
|---|---|---|
| 开发板 | 学习实验 | STM32F103、ESP32-DevKit |
| 调试器 | 烧录调试 | ST-Link V2、J-Link OB |
| 示波器 | 信号观测 | DSO138入门、DS1054Z进阶 |
| 逻辑分析仪 | 协议分析 | Saleae Logic (国产24MHz够用) |
| 万用表 | 电压/电阻测量 | 福禄克/胜利 |
| 电烙铁 | 焊接 | 黄花907、Quick 936 |
| 热风枪 | 拆焊芯片 | 快克861DW |
软件工具
| 工具 | 用途 |
|---|---|
| STM32CubeIDE / Keil | STM32 开发 |
| VS Code + PlatformIO | 跨平台开发 |
| ESP-IDF / Arduino IDE | ESP32 开发 |
| SerialTools / SSCOM | 串口调试 |
| Wireshark | 网络抓包 |
| MQTT X / MQTT.fx | MQTT 调试 |
| Logic 2 | 逻辑分析 |
| Altium Designer / KiCad | PCB 设计 |
| MATLAB / Python | 算法验证 |
⏱️ 时间规划参考
全职学习(每天4-6小时)
| 阶段 | 时长 | 里程碑 |
|---|---|---|
| 基础准备 | 1个月 | 熟练C语言、数电基础 |
| STM32入门 | 2个月 | 完成5个基础项目 |
| STM32进阶 | 2个月 | 完成复杂项目1个 |
| ESP32入门 | 1个月 | WiFi/蓝牙基础应用 |
| ESP32进阶 | 2个月 | 物联网完整项目 |
| RTOS | 1个月 | FreeRTOS熟练应用 |
| Linux嵌入式 | 3个月 | 能独立移植裁剪系统 |
| 总计 | 12个月 | 可胜任嵌入式工程师 |
业余学习(每周10-15小时)
| 阶段 | 时长 | 里程碑 |
|---|---|---|
| 基础准备 | 2个月 | C语言过关 |
| STM32入门 | 3个月 | 完成基础项目 |
| STM32进阶 | 4个月 | 复杂项目经验 |
| ESP32 | 3个月 | 物联网应用 |
| RTOS | 2个月 | 掌握FreeRTOS |
| 总计 | 14个月 | 嵌入式开发能力 |
💡 学习建议
✅ 应该做的
-
动手为王 - 看10遍不如做1遍
-
先跑通再深入 - 先用库函数,再研究寄存器
-
多做项目 - 项目驱动学习最有效
-
看数据手册 - 培养查阅原厂文档能力
-
记录笔记 - 写博客/CSDN/GitHub记录
-
参与开源 - 阅读优秀代码,提交PR
❌ 避免的坑
-
不要死磕寄存器(初学阶段)
-
不要只看不练
-
不要急于学习多种平台(先精通一个)
-
不要忽视基础知识(C语言、数据结构)
-
不要闭门造车(多交流、看社区)
📝 项目推荐清单
初级项目(1-2周)
- 电子时钟(RTC + OLED)
- 温湿度监测器(DHT11 + 串口)
- PWM 调光灯
- 超声波测距仪
- 简易计算器(矩阵键盘 + LCD)
中级项目(2-4周)
- 智能小车(电机驱动 + 避障 + 蓝牙遥控)
- 气象站(多传感器 + SD卡存储 + 屏幕显示)
- 智能家居控制中心(ESP32 + Web界面 + 继电器)
- 简易示波器(ADC+DMA + TFT屏)
- 无人机飞控(MPU6050 + PID + 无刷电机)
高级项目(1-3个月)
- 完整物联网系统(设备端 + 后端 + 前端 + APP)
- 智能监控摄像头(ESP32-CAM + 移动侦测 + 云端存储)
- 3D打印机控制器(步进电机 + 温度控制 + G代码解析)
- 智能音箱(语音识别 + 离线唤醒 + 音频播放)
- 嵌入式Linux网关(多协议转换 + 边缘计算)
🔗 延伸阅读
相关技术栈
-
PCB设计:Altium Designer、KiCad、嘉立创EDA
-
3D建模:Fusion 360、SolidWorks(结构设计)
-
上位机开发:Python (PyQt/Tkinter)、C# (WinForms/WPF)
-
移动开发:Flutter、React Native(做配套APP)
-
后端开发:Node.js、Python Flask/Django、Go
职业发展方向
-
🔧 嵌入式硬件工程师
-
💻 嵌入式软件工程师
-
🌐 物联网工程师
-
🤖 机器人工程师
-
🚗 汽车电子工程师
-
📱 消费电子工程师
-
🏭 工业控制工程师
🦾