电子信息工程这个专业,每年都有大批学生进来,但真正能在毕业时拿到嵌入式或芯片方向满意offer的,往往是那些从大一开始就有清晰路线图的人。我带过几届学弟学妹,也看过太多人到大三才慌慌张张问“现在学STM32还来得及吗”。这篇内容就是把我这些年观察到的、自己踩过的、以及和同行交流中反复验证过的经验,整理成一份四年规划。它不只是一份学习清单,更是一套关于“什么时间做什么事、为什么这么做”的决策逻辑。适合电子信息类本科生、刚入行的嵌入式新人,以及想从其他方向转到芯片或嵌入式领域的同学参考。
1. 为什么嵌入式与芯片方向需要“提前四年布局”
1.1 这个方向的技能树到底长什么样
很多人对嵌入式的理解停留在“写单片机代码”,对芯片的理解停留在“画版图”。实际上这两个方向在本科阶段有大量重叠,核心技能可以分成四层。
最底层是电路与信号基础。你得看得懂原理图,知道上拉下拉电阻的作用,能区分去耦电容和旁路电容的摆放逻辑。这一层不过关,后面写再多代码都是空中楼阁。我见过太多人STM32跑得飞起,但连自己板子上某个芯片的供电引脚接没接对都说不清楚。
第二层是微控制器与外围驱动。STM32是绝大多数人的起点,但重点不是“会调库”,而是理解定时器模式、中断优先级、DMA传输、通信协议时序这些底层机制。比如I2C的时钟拉伸、SPI的四种模式、UART的波特率误差计算,这些细节在面试和实际项目中反复出现。
第三层是嵌入式系统与操作系统。从裸机到RTOS再到嵌入式Linux,这是一个分水岭。RTOS让你理解任务调度和资源竞争,Linux让你接触驱动框架、设备树、内核裁剪。很多岗位直接要求“熟悉嵌入式Linux驱动开发”,这不是短期能突击出来的。
第四层是芯片设计与验证。如果走芯片方向,Verilog/VHDL、FPGA原型验证、时序约束、低功耗设计是核心。FPGA实现UART收发、SPI读取ADC、图像处理流水线,这些都是典型的入门到进阶项目。
这四层不是严格串行的,但大方向是:大一打电路和C语言基础,大二啃STM32和通信协议,大三上RTOS和Linux,大三下根据兴趣分流到驱动、应用或FPGA/芯片验证,大四用项目或实习把方向坐实。
1.2 企业招聘时真正在看什么
我参与过几次校招简历筛选,也帮朋友的公司内推过候选人。说几个真实的观察。
第一,项目经历比课程成绩重要,但前提是项目能讲清楚。简历上写“基于STM32的智能小车”,面试官一定会问:电机驱动用的什么方案?PWM频率多少?为什么选这个频率?编码器测速怎么做的?如果答不上来,这个项目反而减分。
第二,通信协议和调试能力是硬通货。嵌入式岗位面试八股文里,I2C、SPI、UART、CAN的出现频率极高。不是让你背概念,而是问“你实际调试中遇到过什么问题,怎么定位的”。比如I2C通信失败,你怎么用示波器或逻辑分析仪排查?上拉电阻选多大?这些问题没有标准答案,但能看出你有没有真正动过手。
第三,芯片方向越来越看重FPGA和验证思维。国产芯片替代的大背景下,很多公司在做自研芯片,需要能写Verilog、能搭验证环境、能做时序收敛的人。FPGA实现UART接收仿真、SPI接口ADC采集、LVDS接收这些项目,在面试中很能打。
第四,嵌入式Linux岗位对内核源码有要求。不是让你通读内核,而是至少知道字符设备驱动框架、设备树怎么匹配、中断处理流程。有“深入解析OMAP-L137 DSP内存映射与C674x缓存架构”这类经验的人,在异构计算相关岗位上非常抢手。
1.3 时间窗口为什么这么紧
本科四年看起来很长,但真正能用来系统学习的时间并不多。大一有高数、大物、C语言,大二有模电、数电、信号与系统,大三有通信原理、微机原理、单片机课程设计,大四要考研或找工作。如果等到大三才开始学STM32,你会发现课程压力和项目压力叠加,很难深入。
更关键的是,嵌入式面试八股文和项目经验需要时间沉淀。你不可能一周背完所有通信协议,也不可能一周做出一个能讲二十分钟的项目。从大二开始动手,到大三下才有足够素材写简历。如果拖到大四,要么草草做个项目,要么只能拼考研。
所以我的建议是:大一寒假就开始接触STM32,大二上学期必须跑通第一个完整项目,大二暑假争取进实验室或参加竞赛,大三上确定方向并深入,大三下找实习,大四秋招收割。这个节奏不是制造焦虑,而是这个行业的客观要求。
2. 大一到大二:把电路底子和C语言变成肌肉记忆
2.1 电路基础不是“学过”,而是“用过”
模电数电是电子信息专业的必修课,但课堂上的分析和实际动手是两回事。我的建议是,大一学模电的时候,就同步买一块面包板、一些基础元件,把课本上的共射放大电路、差分放大电路、有源滤波电路实际搭出来。
为什么要这么做?因为当你实际搭电路时,会遇到课本上不会讲的问题:电源纹波导致输出漂移、示波器探头接地不良引入噪声、电阻误差导致增益偏差。这些问题在后续做STM32项目时同样会遇到,提前踩坑比后面踩便宜得多。
具体操作上,可以按这个顺序来:
- 用面包板搭一个LED限流电路,计算限流电阻阻值,实测电流是否吻合。
- 搭一个按键消抖电路,对比硬件消抖和软件消抖的效果。
- 用运放搭一个同相放大器,输入正弦波,观察输出波形和理论增益的差异。
- 搭一个555定时器电路,输出方波,用示波器看频率和占空比。
这些实验不需要复杂设备,一块几十块钱的万用表、一个入门级示波器(或者借用实验室的)就够了。关键是养成“理论计算-实际搭建-测量验证-分析偏差”的闭环习惯。
2.2 C语言要写到“能看懂指针的指针”
嵌入式开发对C语言的要求比普通软件开发更高,因为你直接操作内存和寄存器。很多同学C语言考试能考90分,但看到*(volatile uint32_t *)0x40021018这种代码就懵了。
我的建议是,大一学C语言的时候,不要只刷题,要动手写一些“贴近硬件”的代码。比如:
- 用指针遍历数组,理解指针运算和数组名的区别。
- 写一个函数,通过指针参数修改调用者的变量。
- 理解
const、volatile、static在嵌入式中的实际意义。 - 手动实现一个简单的链表,理解结构体和内存分配。
如果学有余力,可以提前看一下《C和指针》或者《嵌入式C编程实战》。重点不是看完,而是把指针、结构体、位操作这三块练熟。位操作在STM32寄存器配置中无处不在,比如GPIOA->CRL &= ~(0xF << 4)这种写法,不熟练的话看代码会很吃力。
2.3 从51到STM32的过渡时机
很多学校会先教51单片机,再教STM32。51单片机适合理解寄存器操作和中断的基本概念,但它的资源有限,做复杂项目很吃力。我的建议是,51学完中断和定时器之后,就可以直接上STM32了,不需要在51上停留太久。
STM32的入门路径可以这样设计:
- 先不急着用HAL库,用标准库或者直接寄存器操作点亮一个LED。理解时钟使能、GPIO模式配置、输出电平控制这三个步骤。
- 用定时器做一个精确的延时函数,对比
delay()循环延时和定时器中断延时的精度差异。 - 用外部中断做一个按键计数,理解NVIC优先级分组和中断服务函数的编写规范。
- 用UART发送数据到电脑串口助手,理解波特率计算和发送接收流程。
- 用I2C读取一个传感器(比如MPU6050或OLED屏幕),理解起始信号、地址帧、应答位的时序。
这个过程中,STM32芯片包安装和Keil5兼容C51和STM32安装是很多人遇到的第一个坑。Keil5默认不包含STM32的器件支持包,需要单独下载安装。如果同时要开发51和STM32,建议装两个版本的Keil,或者用Keil5的Pack Installer安装对应芯片包。安装路径不要有中文和空格,否则容易出现奇怪的问题。
2.4 第一个完整项目应该做成什么样
大二上学期,我建议至少完成一个能拿得出手的完整项目。什么叫“完整”?不是功能多复杂,而是从需求到原理图到代码到调试到文档,全流程走一遍。
以“基于STM32的超声波测距”为例,这个项目看似简单,但可以挖得很深:
- 硬件上,HC-SR04的Trig和Echo引脚怎么接?Echo输出是5V,STM32输入是3.3V,需不需要电平转换?
- 软件上,用定时器输入捕获测量Echo高电平时间,还是用外部中断加定时器计数?两种方案各有什么优缺点?
- 精度上,声速随温度变化,要不要加温度补偿?DS18B20怎么接?
- 显示上,用OLED还是LCD?I2C接口还是SPI接口?刷新率够不够?
- 调试上,测距不稳定怎么办?是电源噪声还是超声波串扰?怎么用逻辑分析仪看时序?
把这些都做一遍、想一遍,这个项目就能在面试中讲二十分钟。比那些“做了十个项目但每个都只会调库”的简历强得多。
3. 大二到大三:通信协议、RTOS与Linux的进阶路线
3.1 五种通信协议必须动手调通
嵌入式面试八股文里,通信协议是必考项。但面试官想听的不是“I2C是两线制,SPI是四线制”这种背书,而是你实际调试中的经验。
UART:重点理解异步通信的起始位、数据位、校验位、停止位,以及波特率误差计算。实际项目中,UART常用于调试输出和模块通信。STM32 USB虚拟串口发送数据是一个很实用的技能,可以把UART数据通过USB转发到电脑,省去USB转TTL模块。
I2C:重点理解起始条件、停止条件、应答位、时钟拉伸。实际调试中,I2C上拉电阻的选择很关键,一般4.7kΩ到10kΩ之间,取决于总线电容和速度。如果通信失败,先用示波器看SDA和SCL波形,确认起始信号是否正常。
SPI:重点理解四种模式(CPOL和CPHA的组合)、全双工和半双工、多从机片选。SPI速度比I2C快,常用于屏幕、Flash、ADC等。FPGA SPI ADC采集是一个很好的练手项目,可以同时理解SPI时序和FPGA状态机设计。
CAN:汽车电子和工业控制中常用。重点理解差分信号、仲裁机制、错误帧。如果有条件,用两块STM32加CAN收发器做一个双机通信实验。
USB:嵌入式Linux和STM32都会用到。STM32如何做USB设备是一个进阶话题,可以从HID设备(比如自定义键盘)开始,再到CDC虚拟串口,最后到MSC大容量存储。
这五种协议,建议每种都至少写一个完整的收发程序,并用逻辑分析仪抓波形验证。逻辑分析仪不贵,几十块钱的入门款就够用,但它是嵌入式调试的“眼睛”。
3.2 RTOS不是选修课,是必修课
很多同学觉得裸机够用了,RTOS可以等工作再学。但实际情况是,中高级嵌入式岗位几乎都要求RTOS经验。FreeRTOS、RT-Thread、uC/OS都是常见选择,建议从FreeRTOS入手,资料多、社区活跃。
学RTOS的重点不是会调用xTaskCreate(),而是理解:
- 任务调度机制:抢占式调度和时间片轮转的区别。
- 任务间通信:队列、信号量、互斥锁、事件标志组的使用场景。
- 内存管理:静态分配和动态分配的选择,堆栈溢出怎么排查。
- 中断与任务的交互:中断服务函数中不能调用阻塞API,需要用
FromISR版本。
一个很好的练手项目是:用STM32+FreeRTOS做一个多任务数据采集系统。一个任务负责ADC采集,一个任务负责UART发送,一个任务负责按键处理,任务之间用队列传递数据。这个项目能覆盖RTOS的大部分核心概念。
3.3 嵌入式Linux的入门门槛在哪里
嵌入式Linux是很多人的痛点。从裸机或RTOS转到Linux,最大的障碍不是Linux本身,而是开发思维的转变。
裸机开发是“我控制一切”,Linux开发是“我在操作系统框架下工作”。你需要理解:
- 内核空间和用户空间的区别,为什么驱动不能直接调用用户空间的函数。
- 字符设备驱动框架:file_operations结构体、设备号、cdev、自动创建设备节点。
- 设备树:怎么描述硬件资源,驱动怎么匹配设备树节点。
- 中断处理:上半部和下半部、工作队列、tasklet。
入门路径建议:
- 先在Ubuntu虚拟机上熟悉Linux基本命令和Shell脚本。
- 用正点原子或野火的开发板(比如RK3588或i.MX6ULL),跑通第一个LED驱动。
- 写一个字符设备驱动,实现open、read、write、close。
- 用设备树描述一个GPIO,在驱动中读取设备树属性。
- 写一个中断驱动,按键触发中断,在中断处理函数中打印信息。
这个过程至少需要三到六个月,而且需要反复调试。但一旦入门,嵌入式Linux的岗位机会和薪资水平都会明显提升。
3.4 FPGA与芯片验证的切入时机
如果你对芯片方向感兴趣,FPGA是绕不开的。FPGA入门可以从大二暑假开始,先学Verilog基础,然后做几个典型项目:
- FPGA实现UART接收仿真:这是最经典的入门项目,涵盖状态机、波特率生成、采样判决。
- FPGA SPI ADC:理解SPI时序,用状态机读取ADC数据。
- FPGA图像处理:比如灰度转换、边缘检测,理解流水线设计和时序约束。
- FPGA的LVDS接收:高速接口,理解差分信号和源同步时序。
进阶方向可以看多die FPGA的Laguna约束、Microchip FPGA CoreEDAC IP更新与配置优化这些偏工程化的内容。如果学校有FPGA实验室或相关竞赛(比如集成电路创新创业大赛),一定要参加。
芯片设计方向还需要了解芯片测试的基本流程,以及低功耗设计的思路。国产步进电机驱动芯片、升压电源芯片、LED闪灯驱动芯片这些具体芯片的分析,可以作为了解芯片内部结构的切入点。比如电源芯片8205的引脚功能和充电电路图,就是很好的学习材料。
4. 大三到大四:项目、竞赛、实习与秋招的节奏把控
4.1 大三上学期必须确定主攻方向
到了大三上,你需要做一个选择:嵌入式硬件、嵌入式软件(MCU方向)、嵌入式Linux、FPGA/芯片验证。这四个方向的学习路径和面试重点不同,不能平均用力。
- 嵌入式硬件:重点看原理图设计、PCB Layout、电源设计、信号完整性。需要熟悉常用芯片选型,比如电源芯片、看门狗芯片、电机驱动芯片。
- 嵌入式软件(MCU):重点看STM32外设驱动、RTOS、通信协议、低功耗设计。项目以数据采集、电机控制、物联网终端为主。
- 嵌入式Linux:重点看驱动开发、内核裁剪、文件系统、Qt应用开发。项目以边缘网关、通信测试终端为主。
- FPGA/芯片验证:重点看Verilog/SystemVerilog、时序约束、验证方法学。项目以接口协议实现、图像处理、高速收发为主。
选择依据不是“哪个热门”,而是你的兴趣、你已有的基础、以及你所在学校能提供的资源。比如学校没有Linux相关课程和实验室,自学Linux的难度会大很多。
4.2 竞赛和开源项目怎么选
竞赛是快速提升和丰富简历的好途径。电子信息相关的竞赛有:
- 蓝桥杯嵌入式:适合MCU方向,题目包括外设驱动、通信协议、逻辑控制。第16届省赛题目就涉及了定时器、ADC、UART等综合应用。
- 全国大学生电子设计竞赛:含金量高,题目覆盖电源、控制、信号处理。需要组队,建议找两个靠谱的队友。
- 集成电路创新创业大赛:适合芯片和FPGA方向,有企业命题,能接触真实工程问题。
- 嵌入式芯片与系统设计竞赛:覆盖STM32、FPGA、Linux等多个平台。
开源项目方面,可以在GitHub上找一些嵌入式开源项目参与,比如RT-Thread、LuatOS、一些驱动框架。参与开源不一定要提交代码,提Issue、写文档、做测试也是贡献。
4.3 实习什么时候找、怎么找
大三下学期的暑假是实习的黄金时间。很多公司的暑期实习转正率很高,相当于提前拿到秋招offer。
找实习的渠道:
- 公司官网招聘页面,直接投递。
- 学校就业中心和院系老师推荐。
- 竞赛中认识的企业工程师内推。
- 招聘平台,但要注意筛选,嵌入式岗位描述里如果出现“应用层开发”和“嵌入式Linux”混在一起,要仔细看JD。
实习面试的准备:
- 复习C语言、数据结构、操作系统、计算机网络的基础知识。
- 把简历上的项目重新过一遍,每个项目准备“背景-方案-难点-结果”的讲述逻辑。
- 准备嵌入式面试八股文,但不要死记硬背,要结合自己的项目经验。
- 了解目标公司的产品和技术栈,比如做芯片的公司会问Verilog和时序,做终端的公司会问通信协议和低功耗。
4.4 秋招时间线和offer选择
秋招一般从大四上学期9月开始,提前批在7-8月。时间线大致是:
- 7-8月:提前批,互联网和芯片公司为主。
- 9-10月:正式批,大部分公司集中招聘。
- 11-12月:补录和中小公司。
offer选择时,不要只看薪资。对于嵌入式方向,要考虑:
- 技术成长:岗位是否接触底层驱动、是否有机会学新平台。
- 行业前景:汽车电子、工业控制、物联网、芯片设计,不同行业的周期不同。
- 团队氛围:面试时观察面试官的技术水平和沟通方式。
- 地理位置:嵌入式岗位集中在长三角、珠三角、北京、成都、西安等地。
如果同时拿到嵌入式Linux和MCU方向的offer,一般来说Linux方向的薪资天花板更高,但MCU方向在特定行业(比如汽车电子)也很吃香。芯片验证方向目前人才缺口大,但入门门槛也高。
5. 那些没人明说但很重要的经验
5.1 开发环境配置的坑
嵌入式开发环境配置是新手的第一道坎。几个常见问题:
- Keil5兼容C51和STM32安装:如果先装了C51再装STM32包,可能会出现冲突。建议用Keil5的Pack Installer分别安装,或者用不同版本的Keil。
- STM32芯片包安装:在Keil5中通过Pack Installer下载对应系列的支持包,注意版本兼容性。
- ST-Link Utility:用于烧录和调试STM32,有时候Keil下载失败,用ST-Link Utility可以单独烧录。
- 串口驱动:CH340、CP2102、FT232等USB转串口芯片的驱动要装对,否则设备管理器里会出现黄色感叹号。
提示:所有开发工具的安装路径都不要有中文和空格,这是嵌入式开发的基本纪律。
5.2 调试工具比代码能力更重要
我见过很多同学代码写得不错,但遇到问题就束手无策。嵌入式调试的核心工具是:
- 万用表:测电压、通断、电阻。
- 示波器:看波形、测频率、抓时序。
- 逻辑分析仪:抓通信协议时序,分析I2C、SPI、UART数据。
- 调试器:ST-Link、J-Link,支持单步调试、断点、查看寄存器。
学会用这些工具,比多写几百行代码更有价值。比如I2C通信失败,用逻辑分析仪抓一下波形,就能看出是起始信号没发出去,还是从机没有应答。这种定位问题的能力,是面试官最看重的。
5.3 看数据手册和参考手册的习惯
STM32的参考手册有上千页,但不需要从头看到尾。正确的做法是:
- 数据手册:看引脚定义、电气特性、封装信息。
- 参考手册:看外设的寄存器描述、工作模式、时序图。
- 应用笔记:看特定应用的实现方案,比如USB、CAN、低功耗。
遇到问题时,先查手册,再搜网上资料。手册里的时序图是理解通信协议的关键,比如I2C的时序图会标明起始条件、数据有效时间、应答窗口。
5.4 代码版本管理和文档习惯
嵌入式项目也需要版本管理。建议从大二开始就用Git管理代码,哪怕只是本地仓库。好处是:
- 可以回溯到之前的版本,对比修改。
- 可以分支开发,尝试新功能不影响主分支。
- 养成写Commit Message的习惯,方便回顾。
文档方面,每个项目至少写一个README,包括:
- 项目功能描述。
- 硬件连接说明。
- 编译和烧录步骤。
- 遇到的问题和解决方案。
这些文档在写简历和面试时非常有用,能帮你快速回忆项目细节。
5.5 英语阅读能力和信息检索能力
芯片手册、应用笔记、开源项目文档大多是英文的。英语阅读能力不是要求你考高分,而是能快速找到你需要的信息。比如在几百页的参考手册里找到某个寄存器的位定义,在开源项目的Issue里找到类似问题的解决方案。
信息检索能力同样重要。遇到问题,知道去哪里找答案:官方论坛、Stack Overflow、GitHub Issues、CSDN、知乎。但要注意筛选信息,有些博客的内容是过时的或者错误的,最好以官方文档为准。
6. 关于考研与就业的分叉路口
6.1 什么情况下建议考研
电子信息考研是一个很常见的选项。以下几种情况建议认真考虑考研:
- 想进芯片设计头部公司:很多IC设计岗位要求硕士学历,尤其是模拟IC和数字IC前端。
- 本科学校一般,想通过考研提升平台:嵌入式岗位对学历相对宽容,但芯片方向对学校背景更看重。
- 对某个细分方向有浓厚兴趣,想深入做研究:比如异构计算、AI芯片、高速接口。
- 暂时不想工作,想缓冲两年:这个理由最弱,但现实中很多人这么选。
考研的方向选择也很重要。电子信息考研一般考信号与系统、数字电路、模拟电路、通信原理等。如果走芯片方向,建议选微电子、集成电路工程、电子科学与技术等专业。
6.2 什么情况下建议直接就业
- 已经有大厂实习经历,且转正机会大。
- 动手能力强,项目经验丰富,能拿到满意offer。
- 对学术研究没有兴趣,更喜欢工程实践。
- 家庭经济压力较大,需要尽快工作。
直接就业不意味着停止学习。嵌入式行业技术更新快,工作后还需要持续学习RTOS、Linux、新芯片平台。很多公司有内部培训和导师制度,成长速度不比读研慢。
6.3 考研和就业可以兼顾吗
可以,但需要提前规划。大三上学期确定是否考研,如果考,大三下和大四上集中复习,项目可以暂时放一放。如果不考,大三下全力找实习,大四上秋招。
不建议“边考研边秋招”,两边都投入不够,结果往往不理想。如果考研失败,可以参加春招,但春招岗位质量通常不如秋招。
7. 一些具体的学习资源和项目建议
7.1 STM32学习资源
- 官方文档:STM32参考手册、数据手册、HAL库文档。
- 开发板:正点原子、野火、安富莱,选一个资料全的。
- 视频教程:B站上有很多STM32教程,但质量参差不齐,建议选播放量高、更新及时的。
- 书籍:《STM32嵌入式系统开发实战指南》《嵌入式C编程实战》。
项目建议从简单到复杂:
- LED闪烁和按键控制。
- 串口通信和printf重定向。
- 定时器中断和PWM输出。
- ADC采集和DMA传输。
- I2C/SPI传感器读取。
- FreeRTOS多任务。
- USB虚拟串口。
- 综合项目:数据采集终端、电机控制、物联网节点。
7.2 FPGA学习资源
- 语言:Verilog为主,SystemVerilog用于验证。
- 工具:Vivado(Xilinx)、Quartus(Intel)、Lattice Diamond。
- 开发板:Xilinx Artix-7、Intel Cyclone系列,选一个入门板。
- 项目:UART收发、SPI接口、VGA显示、图像处理、高速接口。
FPGA学习的关键是多仿真、多上板。仿真用ModelSim或Vivado自带的仿真器,上板验证用开发板。只有仿真通过且上板验证成功,才算真正掌握。
7.3 嵌入式Linux学习资源
- 开发板:RK3588、i.MX6ULL、全志H3等。
- 书籍:《嵌入式Linux应用开发完全手册》《Linux设备驱动开发详解》。
- 课程:Linux+Qt5嵌入式开发课程,覆盖应用层和驱动层。
- 项目:LED驱动、按键中断、I2C驱动、SPI驱动、字符设备驱动、平台设备驱动。
嵌入式Linux的学习曲线较陡,建议先跑通官方例程,再自己修改和扩展。遇到内核崩溃时,学会看Oops信息和dmesg日志。
7.4 芯片方向的学习资源
- 书籍:《数字集成电路设计与验证》《Verilog HDL高级数字设计》。
- 工具:VCS、Verdi、DC、PrimeTime(学校或公司提供)。
- 项目:UART、SPI、I2C、AXI总线、DMA控制器、图像处理流水线。
- 验证:SystemVerilog、UVM、断言。
芯片方向对基础知识要求高,数字电路、计算机体系结构、Verilog要扎实。如果学校有EDA工具和工艺库,尽量利用。
8. 写在最后的一些个人体会
我带过的学弟学妹里,发展最好的不是最聪明的,而是最早确定方向并持续投入的。有一个学弟,大一下学期就开始学STM32,大二做了超声波测距和OLED显示,大三用FreeRTOS做了数据采集终端,大三暑假去了深圳一家做工业控制器的公司实习,大四秋招拿了三个offer。他的路径并不神奇,就是每一步都踩在点上。
另一个学妹,对FPGA感兴趣,大二暑假参加了集成电路创新创业大赛,用FPGA做了SPI接口的ADC采集,大三又做了图像处理项目,后来保研去了微电子方向。她的经验是:竞赛和项目要围绕一个主线,不要东做一块西做一块。
嵌入式这个方向,入门不难,但深入需要时间。STM32点个灯可能只要一天,但理解定时器模式、中断优先级、DMA传输、通信协议时序,需要反复实践。芯片方向门槛更高,但一旦入门,职业天花板也更高。
如果你现在大一,建议从C语言和电路基础开始,寒假就上手STM32。如果你大二,赶紧把通信协议和RTOS补上,做一个完整项目。如果你大三,确定方向,找实习,准备秋招。如果你大四,别慌,春招还有机会,但要把项目讲清楚。
最后分享一个我自己的习惯:每学一个新知识点,就写一篇笔记,用自己的话解释一遍。比如学完I2C,写一篇“I2C通信的起始条件和时钟拉伸是怎么回事”。这个过程会逼你把模糊的地方搞清楚。这些笔记后来成了我面试时的复习资料,也成了我带新人时的培训材料。