上周有个学弟来找我,说自己下周就要考嵌入式系统,结果连Keil里那个Download按钮都还没成功点亮过一次LED,问我还有救吗。我说有救,但你得先把一个误区打掉:“5小时掌握嵌入式系统全部内容”这种说法,不是让你从零变专家,而是让你在有限时间内,把考试最看重的几件事做到及格线以上。这篇就是围绕嵌入式系统加STM32的复习场景,把环境搭建、核心考点、外设实操、笔试面试应对一次性讲透。不管你是期末速成、补考回血、专升本冲刺,还是考研复试前抱佛脚,思路都一样:先框死范围,再抓高频考点,最后把环境和最小例程跑通。
1. 别被“5小时速成”骗了:复习前先把考试范围框死
1.1 同样叫“嵌入式考试”,四种场景考点权重完全不同
很多同学复习效率低,不是因为不努力,而是因为拿同一套方法去应对四种完全不同的考试。嵌入式系统课程在不同考试场景下的侧重点差异很大,我先给你一张对照表。
| 考试场景 | 侧重点 | 典型题型 | 高频考点 |
|---|---|---|---|
| 期末校内考试 | 课件+实验内容 | 选择、填空、简答、代码填空 | GPIO控制、定时器、中断、串口、ADC |
| 补考 | 期末试卷+实验报告 | 与期末类似,范围更窄 | 原题变形,实验代码相关 |
| 专升本 | 基础原理+概念 | 选择、简答、综合设计 | 嵌入式定义、单片机区别、系统架构、外设原理 |
| 考研复试 | 综合素养+项目能力 | 面试提问、手写代码 | STM32项目细节、RTOS、Bootloader、外设原理 |
期末和补考的核心逻辑是“老师讲什么考什么”,你最好找到最近的PPT、实验指导书和往年试卷,把重复出现的知识点圈出来。专升本的考试更偏原理,简答题喜欢考定义和区别,比如“说明单片机与嵌入式系统的区别”“简述STM32的中断处理流程”。考研复试和前三种完全不同,它不太关心你能背多少概念,更关心你亲手做过什么、踩过什么坑、代码是怎么组织起来的。
1.2 5小时怎么切:第1小时的决定权最高
把5小时当成一次冲刺复习,我建议这样切分:
- 第1小时:不做题,只看课件目录和往年题,列出知识点清单并标优先级。这一步决定后面4小时值不值。
- 第2小时:解决环境搭建,保证至少能编译、下载、点灯。
- 第3小时:跑通2到3个核心外设例程(定时器、串口、ADC/DMA任选)。
- 第4小时:做一套真题或模拟题,重点看简答和代码填空。
- 第5小时:对照错题补漏,背诵高频概念,把能拿的分全部锁定。
这个时间切分有个关键原则:放弃完美主义。如果某个章节往年只考过一次选择题,而另一个章节每年都出简答题,你就在后者上多花时间。复习考试不是搞科研,先把确定性高的分拿到手,再考虑查漏补缺。很多同学总觉得STM32要“彻底搞懂”才敢上考场,这个想法恰恰是速成的最大敌人。
2. 环境搭建才是最大分水岭:从Keil安装到“no stm32 target found”排查
2.1 开发工具链怎么选:稳定大于花哨
嵌入式系统复习途中被环境卡住,是最不值当的事。先说选型:国内课程和教材最常用的是Keil MDK,也就是Keil5,建议直接用它。围绕Keil5有四个东西必须装齐:
- Keil MDK本体,版本别追新,5.2x到5.3x稳定版足够。
- 对应芯片包(Device Pack),STM32F1系列装Keil.STM32F1xx_DFP,F4系列装F4xx的包。这里有个经典坑:如果以前装过Keil4的C51版本,容易和MDK的安装环境互相干扰,建议C51和MDK分开目录装,芯片包路径也不要随便改。
- ST-Link驱动,很多板载ST-Link在电脑上被识别成未知设备,原因就是驱动没装。
- USB转串口驱动,CH340或者CP2102,看你的板子用哪种方案。
现在很多教程会推荐STM32CubeMX,它通过图形界面帮你生成初始化代码,对复习来说极其好用。考试复习阶段我不反对CubeMX,因为它能快速生成时钟树、GPIO、定时器的初始化代码,让你把精力放在理解配置逻辑上,而不是死磕寄存器。但要注意,考试是手写代码或代码填空,你不能只会点鼠标,至少要看得懂初始化代码的逻辑,比如__HAL_RCC_GPIOA_CLK_ENABLE()是开GPIOA时钟,HAL_GPIO_Init()负责模式配置,这跟直接用寄存器操作RCC->APB2ENR |= 1<<2其实是同一件事,只是封装层次不同。
还有一批同学喜欢折腾VSCode写STM32,配合EIDE或PlatformIO插件,语法提示确实舒服。但我的态度很明确:如果是考前一周临时搞,别用。VSCode方案依赖的编译器、调试器、链接脚本都要自己配,任何一个环节版本不匹配都会消耗大量时间,而Keil是开箱即用的。平时可以玩,冲刺阶段请老老实实用你最熟悉的工具。
2.2 ST-Link连接失败与Virtual COM Port叹号:考前最值得背的排查顺序
环境搭建最常见的问题,就是下载时报错,里面通常有“no stm32 target found”或者“if your product embeds debug authentication”之类的提示。这类报错的本质,是调试器没有和STM32芯片建立上SWD连接。我第一次遇到时也急得满头汗,后来总结出一套固定排查顺序,按顺序走一遍基本都能解决。
| 排查项 | 具体操作 | 说明 |
|---|---|---|
| 接线 | 确认SWDIO、SWCLK、GND三根线是否对应,部分板子还要接3.3V | 杜邦线松动是头号原因,重新插拔一次往往就解决 |
| 供电 | 测量板上3.3V是否正常,很多板子只靠ST-Link供电带不动大负载 | 目标板没供电,调试器自然找不到芯片 |
| USB口 | 换一个电脑直连的USB口,少用扩展坞 | 供电不稳也会导致握手失败 |
| 下载速率 | 在Keil的Debug设置里把SWD速率从10MHz降到1MHz | 线太长、干扰大时,高速率会失败 |
| 芯片状态 | 如果芯片之前开启了读保护或Debug Authentication,需要用STM32CubeProgrammer先解除保护 | 二手板子常见,全片擦除后恢复 |
| 复位电路 | 检查NRST引脚,复位电容异常也会影响连接 | 部分板子按住复位键再点下载,松手后能成功 |
如果在设备管理器里看到ST-Link虚拟串口带着黄色感叹号,也就是“ST-Link Virtual COM Port”有问题,通常是驱动异常或和别的驱动冲突。解决方案是彻底卸载后重装最新驱动,再插到另一个USB口。如果是板载CH340显示异常,也一样处理,别硬着头皮用坏驱动的板子,考前换一块能正常识别串口的板子不丢人。
2.3 一个隐蔽的坑:delay函数卡死可能不是软件问题
复习过程中,很多同学会遇到延时函数卡死的问题,比如点灯程序里加了HAL_Delay(500),上电后程序卡在延时函数里不走了。这个问题的本质,是HAL_Delay()依赖SysTick中断来递减计数器,一旦SysTick中断被关闭,或时钟配置没让SysTick正确运行,延时就会死等。
碰到这个现象,先检查两件事:第一,是否调用了HAL_SuspendTick()或__disable_irq()这类关闭中断的函数;第二,SystemCoreClock变量的值是否和外设时钟一致,如果在调试器里看到SystemCoreClock变成了0或错误数值,HAL_Delay()内部的时间基准就全乱了。另外,编译优化等级也可能背锅,如果在RELEASE模式下变量被优化掉,延时函数里的循环标志永远不更新,同样会卡死。这类问题排查起来并不难,但很耗时间,考试前一定要清楚:程序卡住不一定是硬件坏了,先用仿真器暂停,看看卡在哪一行,比反复拔线重插高效得多。
3. 嵌入式系统知识树:一小时把整门课串起来
3.1 嵌入式系统与单片机:概念题的第一组送分点
概念题几乎是所有嵌入式考试的第一题,最常见的就是“什么是嵌入式系统”“嵌入式系统与单片机有什么区别”。我可以明确地给你一个答题框架,背下来直接套用。
嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。关键词是“专用”和“可裁剪”。记住这个定义,比记一堆排版复杂的教材原文有用得多。
至于单片机和嵌入式系统的区别,你可以这么说:单片机(Microcontroller)是嵌入式系统的核心处理器件,它把CPU、存储器、定时器和各种外设集成在一块芯片上,是硬件层面的存在;而嵌入式系统是一个完整的计算机系统,包含硬件平台(以MCU或MPU为核心)、嵌入式操作系统(也可能是裸机代码)、应用软件。考试时如果问区别,你就说“单片机是器件,嵌入式系统是系统”,这两者的层次不同,再加一句“单片机常用于实现嵌入式系统”,基本就是完整答案。
另外还有几个易混概念,我建议你做成速记卡:
- ARM是一种处理器架构,而不是芯片品牌;Cortex-M3/M4是ARM面向微控制器设计的处理器核。
- STM32是意法半导体基于Cortex-M内核推出的微控制器产品系列。
- 开发板不等于产品,开发板只是评估和验证平台。
3.2 STM32系统架构和时钟:简答题的必背段落
STM32的系统架构是很多学校期末简答题的常客。以F103为例,它的核心是Cortex-M3,通过总线矩阵把内核、Flash、SRAM、外设连接起来。常考的总线包括ICode总线(取指令)、DCode总线(取数据)、System总线(访问SRAM和各类外设)。APB1和APB2这两条外设总线的最大时钟频率不同,APB2能跑到72MHz,APB1最高36MHz,USART、SPI、I2C分别挂在哪条总线上,需要你对照参考手册看一眼。
时钟树是另一个必考点。STM32上电后默认使用内部高速时钟HSI,精度一般,所以正式应用要切换到外部高速晶振HSE,再经过PLL锁相环倍频得到系统时钟SYSCLK,最后通过AHB预分频和APB预分频分配到各个外设。考试常考“计算定时器时钟频率”,本质上就是追问时钟树这张图。我建议你背下F103的经典公式:APB1总线上的定时器时钟是APB1的2倍频,即72MHz,APB2上的定时器直接就是72MHz。很多同学直接背“定时器时钟72MHz”,但不知道这个72MHz是怎么来的,一旦题目把APB1分频系数改了,就不会算了。
启动模式的BOOT0和BOOT1也算经典题。BOOT0拉低从主Flash启动,正常运行程序;BOOT0拉高BOOT1拉低从系统存储器启动,也就是进入Bootloader,常用于串口下载;BOOT0和BOOT1都拉高从未使用过的方式启动。答这个题的时候顺手把“为什么ISP下载要拨BOOT0”解释清楚,能给阅卷老师留下好印象。
3.3 GPIO、中断、定时器:实验题三大主角
实验题最常出现的三个模块就是GPIO、中断和定时器,这三个是STM32的地基。
GPIO考试喜欢让你默写8种模式,分别是输入浮空、输入上拉、输入下拉、模拟输入、输出开漏、输出推挽、复用功能推挽、复用功能开漏。我在实际项目里用得最多的就是推挽输出和上拉输入。推挽输出能提供较强的灌电流和拉电流能力,直接点亮LED、驱动小负载;按键检测一般用上拉输入,外部按键按下时把引脚拉低,程序读到的就是下降沿。
中断是笔试和面试的高频区。你需要能画出完整的中断处理流程:外设产生事件,触发中断标志,NVIC根据优先级决定是否响应,CPU自动保存现场,跳转到中断服务函数执行,执行完恢复现场。面试官经常追问“中断服务函数里能不能写延时和printf”,标准答案是尽量别。中断服务函数讲究快进快出,长时间占用会导致主程序得不到调度,而且printf涉及重定向和等待,如果在中断里调用,一旦串口还没发送完,中断就被阻塞,整个系统的实时性就崩了。这叫实时代价,不是玄学。
定时器这块,核心概念是预分频器PSC和自动重装载值ARR。定时器的计数时钟等于外设时钟除以(PSC+1),计数溢出一次的时间等于(PSC+1)×(ARR+1)除以外设时钟。注意这里一定要加1,因为这两个寄存器都是从0开始计数的。如果一道题给了你要1ms的定时,让你配置PSC和ARR,千万别忘了两个都对72MHz做除法时,常用的组合是PSC=71,ARR=999,这样72MHz先除以72得到1MHz,再计1000个数就溢出,正好1ms。
3.4 常用外设协议和RTOS:用表格速记
通信类外设的对比题在考试里出现频率很高,尤其是I2C、SPI、USART三者比较。我给你一个可以直接默写的版本:
| 协议 | 通信方式 | 引脚 | 时钟 | 典型应用 |
|---|---|---|---|---|
| USART | 异步串行,全双工 | TX、RX | 无需时钟线,双方约定波特率 | 串口调试、蓝牙模块、GPS模块 |
| SPI | 同步串行,全双工 | SCK、MOSI、MISO、CS | 主机产生时钟 | Flash、显示屏、SD卡 |
| I2C | 同步半双工,多设备总线 | SCL、SDA | 主机产生时钟,设备有地址 | 传感器、EEPROM、OLED |
关于CAN总线,如果有学校课程讲到,你至少要懂一件事:当CAN控制器检测到严重错误时会进入Bus Off状态,这时候总线完全断开,需要软件恢复。恢复方法有两个,一是软件复位CAN控制器然后重新初始化,二是把ABOM位置1开启自动总线恢复。这个点在实际调试时很重要,因为一旦总线挂死,整条通信链路全废,而考试时它经常被包装成“CAN总线错误恢复机制”的简答题。
RTOS在嵌入式系统课程里占的篇幅越来越大。核心概念是前后台系统与操作系统的区别:前后台就是主循环轮询加中断响应,适合任务简单的情况;RTOS则支持任务调度、抢占、信号量、互斥量、消息队列。考试简答题如果问“引入RTOS有什么好处”,你就从实时性、模块化、任务解耦、CPU利用率这些角度答,再举FreeRTOS的例子说明任务优先级和调度规则,得分会非常稳。
4. 四个必会外设模块:每个都能写最小代码才算过
4.1 TIM定时器:PWM和输入捕获的公式别只背不推
定时器是STM32外设里性价比最高的考点,因为它既考原理、又考代码,还能扩展到PWM、输入捕获、编码器模式。我建议你动手写一个最小PWM例程:用TIM2输出一个频率可调、占空比可调的PWM信号,配置四个寄存器,预分频PSC、自动重装ARR、比较寄存器CCR、输出比较模式。PWM频率公式是72MHz / ((PSC+1) * (ARR+1)),占空比是CCR / (ARR+1)。这个公式要能在纸上推导,而不是只能背结论,因为试卷很可能会给你一个具体频率,让你反推PSC和ARR。
输入捕获测频率是另一个高频实验题。原理很简单:把被测信号接入定时器输入引脚,配置捕获通道为上升沿触发,在捕获中断里记录两次上升沿时刻的计数器值,两次的差值再转成时间,倒数就是频率。很多同学卡在“为什么要做清零或减上次值”这一步,原因是计数器一直在跑,你只有拿到两次捕获的差值,才能算出信号周期,如果直接拿计数器原始值做计算,结果一定是错的。考试代码填空经常会设置这个陷阱。
4.2 USART串口:printf重定向和串口调试
串口是嵌入式系统的“生命线”,几乎每个项目都要靠它输出调试信息。考试层面,你至少要有能力写出串口初始化和发送一个字节的代码。如果题目要求用printf打印数据,这就涉及重定向:Keil环境里需要重写fputc()函数,底层调用USART_SendData()发送单个字符,同时要在工程配置里勾选“Use MicroLIB”选项,否则printf会占用大量Flash和栈空间,在STM32F103这类芯片上很容易出问题。
我在调试PID控制类项目时,最实用的工具就是串口。把电机速度、目标速度、输出量通过串口按帧发到上位机,打开“串口PID调试助手”这类软件,就能直接看到速度响应曲线。有这条曲线,你调P、I、D三个参数就有方向感,而不是盲调。考试一般不考PID计算,但面试时如果你能说清楚“我用串口把实时速度打印出来看响应曲线,再去调PID参数”,项目真实感立刻拉满。
4.3 ADC单通道DMA多次采样:为什么是高频考题
“HAL库ADC单通道DMA多次采样”在热搜里出现频率很高,不是偶然。它把ADC配置、DMA传输、数据缓冲、均值滤波四个知识点串在一起,是老师最喜欢出的综合题。
先说为什么要用DMA。ADC转换完成一次,结果存放在数据寄存器里,如果不用DMA,你得在中断或轮询里一次次读,这会占CPU时间。用了DMA之后,ADC每次转换完,硬件自动把结果搬到内存缓冲区,整个过程CPU不参与,效率高很多。“多次采样”的意义就更直接了:单次采样的结果受噪声影响很大,连续采样N次求和再平均,才能得到稳定值。
CubeMX配置ADC+DMA的流程,关键是两点:一是开启ADC的连续转换模式,二是在DMA设置里把模式设为循环(Circular)。初始化之后启动时调用HAL_ADC_Start_DMA(),然后DMA就会源源不断地把转换结果填入你定义好的数组,例如uint16_t adc_buf[10]。主循环里每过一段时间取数组的平均值,就是一次带滤波的采样结果。面试时如果被问到“如何提高ADC采样精度”,你答“硬件上保证参考电压稳定,软件上做多次采样平均和数字滤波”,就是标准且稳妥的答案。
4.4 Flash与Bootloader:从点灯到IAP的跃迁
如果目标只是应付期末,Flash和Bootloader可以放到最后再看;但如果你的目标是考研复试或面试加分,这两个话题一定要准备,因为它们是“能拉开档次”的知识点。
STM32片内Flash的基本操作是擦除后写入。注意Flash只能把1写成0,所以写之前必须先擦除整个扇区,把目标区域改回0xFF。在F103上,Flash按页管理,不同型号页大小不同,写操作以16位半字为单位。实际项目中,可以用Flash保存系统参数、校准数据和OTA标志位。考试问“Flash和SRAM有什么区别”时,你就答:Flash是非易失存储器,掉电不丢,但速度慢、写前要擦除;SRAM是易失存储器,速度快,掉电数据丢失,两者在容量、寿命、成本上也不同。
Bootloader是IAP(In Application Programming)的核心,原理是芯片上电后先运行Boot区程序,Boot区检查是否有新固件,有就接收并写入App区,没有就直接跳转到App区执行。跳转方法通常是把PC指针和栈指针重新指向App区的起始地址,例如:
typedef void (*pFunction)(void); uint32_t jumpAddress = *(__IO uint32_t *)(APP_ADDR + 4); pFunction jumpToApp = (pFunction)jumpAddress; __set_MSP(*(__IO uint32_t *)APP_ADDR); jumpToApp();这里括号里的代码不是让你死背,而是理解“为什么跳转时要先重新设置栈顶指针”,因为App程序要用它自己的栈,Boot区的栈配置已经不合适了。部分产品还会对固件做AES加密,Boot区里先解密再写入App区,这就能顺理成章地引出“固件安全”话题。面试跳槽谈到这个点,大部分面试官都会觉得你有真实产品经验。
5. 笔试与复试:概念题、代码题、项目题怎么拿稳90+
5.1 概念题:高频简答关键词
概念题靠的是“关键词抓分”。阅卷时老师往往按点给分,你的答案里出现关键术语,分数就到手了。这里列出几个高频简答题的答题要点,你可以据此自己整理一遍:
- 嵌入式系统的定义:应用为中心、计算机技术为基础、软硬件可裁剪、对功能可靠性成本体积功耗有严格要求。
- 单片机与嵌入式系统的区别:从层次上区分,单片机是核心器件,嵌入式系统是完整系统;从组成上区分,嵌入式系统包含硬件、操作系统、应用软件。
- 什么是GPIO:通用输入输出口,可配置为输入或输出模式,引脚电平可读可写。
- 中断处理流程:中断请求、中断标志、NVIC响应、保护现场、执行ISR、恢复现场、返回主程序。
- 看门狗的作用:防止程序跑飞,定时喂狗,超时未喂则复位系统。IWDG独立于主系统时钟,WWDG基于主系统时钟并有早期唤醒中断,这是两者最大区别。
- 波特率是什么:每秒传输的码元数,串口通信双方必须一致,常见9600、115200。
这些答案不要死背教材原句,把关键词用自己的逻辑串起来即可,阅卷老师更看重你是否理解,而不仅仅是复述。
5.2 代码题:三板斧默写
本科嵌入式考试的代码题,范围其实非常固定,翻来覆去就那几种,我把它叫三板斧。
第一板斧是GPIO点灯。标准库版本就是开时钟、配模式、写电平这三个动作。用寄存器写法更短:
RCC->APB2ENR |= 1 << 2; // 开启GPIOA时钟 GPIOA->CRL &= ~(0xFF << 0); // 清空配置位 GPIOA->CRL |= 0x02 << 0; // PA0推挽输出 GPIOA->ODR |= 1 << 0; // PA0输出高电平,点亮LED你要能说清楚每一步在干什么,而不是只抄代码。第二板斧是定时器中断配置,要点是设置预分频、重装载值、使能更新中断、开启定时器、编写中断回调或中断服务函数。第三板斧是串口发送,标准库写法是把数据写到USART_DR寄存器,同时等待USART_FLAG_TXE标志位。
这三板斧是绝大多数学校实验课的必做内容,也是试卷代码填空的题库来源。如果你连这三段代码都无法独立默写出来,上考场就属于裸奔状态,说不过去。
5.3 项目题:面试官想听的不是“我用了STM32”
考研复试和求职面试里的项目题,回答逻辑和笔试完全不同。很多同学的自我介绍是“我做了个基于STM32的智能台灯”,然后就停了。这句话等于没说,面试官接不到任何有价值的信息。
我建议你用“背景、方案、难点、结果”四步去讲,并且把重心放在难点和结果上。以“基于STM32的智能台灯”为例:
- 背景:传统台灯需要手动开关,希望实现根据环境亮度自动调节。
- 方案:STM32作为主控,光敏电阻采集环境光,ADC采样送CPU,PWM控制LED亮度,按键可切换手动和自动模式。
- 难点:光敏电阻输出值受温度和非线性影响,直接映射到PWM会闪烁,解决办法是多采样平均加限幅滤波;PWM频率如果太低灯会闪,频率选在1kHz以上人眼才没感知。
- 结果:环境越暗灯越亮,手动模式开关稳定,项目完整跑通。
再比如“基于STM32和ESP8266的宿舍控制灯”,这是典型的IoT入门项目。讲述重点是ESP8266通过串口和STM32通信,协议怎么定、数据帧怎么解析、掉线重连怎么处理。现代家用路由器大多同时存在2.4G和5G,ESP8266只支持2.4G,如果你在调试时连不上网,先查路由器是否开了5G频段优先,这个细节说出来,面试官能立刻判断你确实亲手做过。
两轮差速小车这个项目也很经典,它覆盖了直流电机PWM控制、编码器测速、定时器输入捕获、PID闭环控制、串口调试等方法。复试时你只要把“编码器测速→速度环PID→PWM输出”这条闭环链路讲清楚,比背多少概念都管用。
5.4 手边常备的“工具包”清单
标题里说的“环境搭建工具包”,落到实操上,我建议你考前建立一个固定文件夹,里面放这些内容:
- Keil5安装包、对应芯片包、ST-Link驱动、CH340驱动。
- 三个最小工程模板:GPIO点灯、串口收发、定时器中断,分别保存为独立文件夹,考完也留着,后面做项目直接复制改。
- 常用调试工具软件:串口助手、STM32CubeProgrammer、ST-Link Utility。其中CubeProgrammer功能更强,可以读Flash、设置读保护、解除读保护,比老牌的ST-Link Utility更适合现在的F4、H7系列。
- STM32参考手册、数据手册、中文PPT或思维导图,电子版放手机里,考前翻一眼比心理安慰强。
这个工具包的价值在于,考试前你不用再花时间找资源,你可以在任何一台电脑上快速恢复开发环境。很多同学的重考周期是被环境重新搭建拖垮的,别让这个问题毁第二次。
6. 写在最后:5小时之后,你还要做什么
把话说回开头那个学弟。他按上面的思路复习,考前最后一个周末把环境跑通、最小例程全部过了一遍、往年卷做了两遍,最终成绩虽然没有90+那么夸张,但稳稳过了线。我个人的体会是,这种速成复习真正的价值不在于让你彻底掌握嵌入式系统,而在于给你建立了一个可以不断扩展的骨架:一旦你手里有了能跑通的工程模板、理解了时钟树和总线矩阵、能说清定时器和串口的基本用法,后面不管是做毕业设计、打比赛还是准备复试,你都能在这副骨架之上快速填肉。
还有一个建议:考试结束后别急着删工程。把老师发的实验指导书、你改过的代码、调试记录都留下来,最好能整理成一份简短的markdown笔记。嵌入式系统这个方向,知识点特别杂、环境坑特别多,今天踩过的坑写下来,半年后你准备简历或复试时就会发现,这份笔记比任何付费资料都值钱。
最后再分享一个小技巧:如果考前你只有半天时间,请优先做一个完整的桌面点灯实验,而不是去背一百个概念。原因很简单,嵌入式系统的考试再花哨,核心始终是“让代码在芯片上跑起来”这件事。你亲手点亮过一次LED,记住了电源、时钟、GPIO、编译、下载这条完整链路,你对这门课的理解就已经超过60%的同学了。剩下的,都是在这个基础上不断加外设、叠加功能而已。