STM32 & ESP32 嵌入式学习路线

🎯 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 MDKSTM32CubeIDE(推荐)

  • 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个月 嵌入式开发能力

💡 学习建议

✅ 应该做的

  1. 动手为王 - 看10遍不如做1遍

  2. 先跑通再深入 - 先用库函数,再研究寄存器

  3. 多做项目 - 项目驱动学习最有效

  4. 看数据手册 - 培养查阅原厂文档能力

  5. 记录笔记 - 写博客/CSDN/GitHub记录

  6. 参与开源 - 阅读优秀代码,提交PR

❌ 避免的坑

  1. 不要死磕寄存器(初学阶段)

  2. 不要只看不练

  3. 不要急于学习多种平台(先精通一个)

  4. 不要忽视基础知识(C语言、数据结构)

  5. 不要闭门造车(多交流、看社区)


📝 项目推荐清单

初级项目(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

职业发展方向

  • 🔧 嵌入式硬件工程师

  • 💻 嵌入式软件工程师

  • 🌐 物联网工程师

  • 🤖 机器人工程师

  • 🚗 汽车电子工程师

  • 📱 消费电子工程师

  • 🏭 工业控制工程师


🦾


相关推荐
猫猫的小茶馆3 小时前
【Linux 驱动开发】Linux 内核启动过程详解
linux·c语言·arm开发·驱动开发·stm32·单片机·mcu
辰哥单片机设计3 小时前
STM32太阳能光伏板
stm32·单片机·嵌入式硬件
weixin_443478513 小时前
flutter组件学习之Flex / Expanded弹性布局组件
javascript·学习·flutter
mftang3 小时前
MCU上应用的主流NVM技术: 嵌入式相变存储器(PCM) 和嵌入式磁阻随机存取存储器(MRAM)
单片机·嵌入式硬件·pcm
炸膛坦客3 小时前
Cortex-M3-STM32F1 开发:(五十四)CAN(车企会用),难但很重要
stm32·单片机·嵌入式硬件
im_AMBER3 小时前
Leetcode 136 最小栈 | 逆波兰表达式求值
数据结构·学习·算法·leetcode·
willhuo4 小时前
RS485回响程序设计方案
单片机·lua
Xzq2105094 小时前
网络基础学习(一)
网络·学习
Fuliy964 小时前
第三阶段:进化与群体智能 (Evolutionary & Swarm Intelligence)
人工智能·笔记·python·学习·算法
ejinxian4 小时前
Go语言完整学习规划(2026版)- Part 1
学习·go