嵌入式学习路线规划(写给和我一样的嵌入式小白)
最近系统在梳理自己的学习路线,顺便总结出来分享给同样在入门嵌入式的同学。这条路线我按"先打基础 → 再上板子 → 最后做项目"的逻辑来排,避免一上来就啃 STM32、结果连 C 语言指针都迷糊的尴尬。
路线不是让你"学完一门再学下一门",可以穿插进行。但基础不牢,后面会非常痛苦。
一、整体路线一览
→ C++ → Linux基础 → 网络编程 → STM32/单片机 → 项目实战 → 面试
每一阶段不用"学完"再进下一阶段,可以并行。但 C 语言、数据结构这两块是地基。
二、阶段一:C语言(最重要,没有之一)
嵌入式 95% 的代码是 C,这一关必须过。
必掌握:
- 数据类型、运算符、控制流
- 函数、数组、指针(重中之重)
- 结构体、联合体、枚举
- 内存布局(栈 / 堆 / 静态区 / 代码段)
- 预处理、typedef、宏
高频易错点:
- 指针和数组的关系
- 指针传参(传值 vs 传址)
- 野指针、内存泄漏
- 字符串与字符数组的区别
动手练:
- 手写单链表(增删改查)
- 自己实现
strcpy/strcmp/strlen
- 用指针遍历二维数组
三、阶段二:数据结构
不用全背,先掌握常用的:
结构 | 重点 |
线性表 | 数组、单/双链表 |
栈和队列 | 实现 + 应用场景 |
二叉树 | 四种遍历(前/中/后/层序) |
排序 | 冒泡、快排、归并(要会写+讲原理) |
查找 | 二分、哈希表 |
面试高频:链表反转、快排原理、二叉树层序遍历、两个栈实现队列。
四、阶段三:C++
嵌入式岗位对 C++ 要求不等,但学了不亏。
- 类与对象、封装/继承/多态
- 构造/析构函数、拷贝构造
- 智能指针(unique_ptr / shared_ptr,现代 C++ 重点)
- STL 常用容器(vector / map / unordered_map)
- 面向对象的设计思维
如果时间紧,C++ 学到"能看懂工程代码 + 写基本类"的程度即可,把更多时间留给 C 和项目。
五、阶段五:Linux 基础
嵌入式开发基本都在 Linux 下:
- 常用命令(ls / cd / grep / find / vim / top)
- 文件权限、软硬链接
- 进程 / 线程概念与区别
- 基础 shell 脚本
- gcc 编译流程、Makefile 入门
核心搞懂一件事:程序是怎么从.c源码变成可执行文件的(预处理→编译→汇编→链接)。
六、阶段六:网络编程
嵌入式设备联网是趋势:
- TCP 与 UDP 的区别与适用场景
- socket 编程(客户端 / 服务端)
- HTTP 协议基础(请求/响应、状态码)
- 多线程 / 多进程服务器模型
- 阻塞与非阻塞、I/O 多路复用(select / epoll 入门)
七、阶段七:STM32 / 单片机
(我下个月才开这门课,先列框架)
- GPIO、中断、定时器
- UART / I2C / SPI 通信协议
- PWM、ADC 采集
- 跑一个 RTOS(FreeRTOS)
- 看懂数据手册(datasheet)的能力
建议:先点灯,再逐步上外设,别一上来就搞复杂项目。
八、项目实战
光看不练等于没学。简历里放 2-3 个项目:
- STM32 小系统:温控 / 智能小车 / 环境监测
- Linux 下的 C 项目:简易 shell / 文件同步工具
- 网络编程小工具:局域网聊天室 / 文件传输
把项目推到 GitHub,写清楚 README,面试时能讲深讲透比项目本身高级更重要。
九、面试准备(10月秋招)
每天用豆包模拟面试 30 分钟:
- 整理高频八股(C语言 / 数据结构 / 操作系统 / 网络)
- 项目经历准备"STAR"讲法,能应对深挖
- 刷牛客 / LeetCode 简单~中等题
- 每周写一篇技术总结文章(CSDN),逼自己输出
十、资源推荐
- 书:《C Primer Plus》《嵌入式 Linux 应用开发完全手册》
- 视频:B站搜 "STM32 入门""嵌入式 Linux" 有一堆优质 UP 主
- 刷题:牛客网、LeetCode
- 社区:CSDN、掘金、Stack Overflow
结语
嵌入式这条路不算短,但每一步都算数。我把路线贴出来也是逼自己按表推进。如果你也在学,欢迎评论区一起卷(一起加油)👋