这份资料整理涵盖了 STM32基础、外设接口 (UART/IIC/SPI)、通信协议 (USB/CAN/网络)、RTOS 、硬件设计 (PCB/电路) 等嵌入式开发的核心领域。

💡 建议:
你可以按照这个二级目录结构来制作您的面试笔记或思维导图。

  1. 先背一级目录(6大块),建立宏观框架。
  2. 再背二级目录(如"通信"分为"基础、串口、总线、网络"),理清技术脉络。
  3. 最后填充具体问题,这样即使面试官跳着问,您也能迅速定位到知识点所在的"抽屉"。

对第一板块和第二板块的播客:

📂 第一板块:单片机基础与架构 (MCU)

这部分考察对 STM32 架构、时钟系统及启动流程的理解。

1.1 概念与选型

问题 级别 详细解答
什么是单片机 必问 单片机(Microcontroller Unit, MCU)是一种集成电路芯片,它将微处理器(CPU)、存储器(包括 RAM 和 ROM)、输入/输出接口(I/O)以及其他功能模块集成在一个小型的芯片上。单片机设计用于执行特定的控制任务,广泛应用于嵌入式系统。
单片机有什么特点 必问 1. 集成度高:集成 CPU、RAM、ROM、外设于一体。
2. 低功耗:适合电池供电。
3. 专用性:针对特定应用优化。
4. 实时性:快速响应外部事件。
5. 可编程性:内部存储器可编程。
6. 丰富的 I/O:GPIO, ADC, PWM 等。
7. 成本效益高
8. 易于使用:有丰富库和工具。
9. 可扩展性
10. 广泛应用:家电到工控。
51单片机和32单片机的区别 必问 1. 架构:51 是 8 位 CISC (8051内核),冯·诺依曼架构;STM32 是 32 位 RISC (Cortex-M内核),哈佛架构。
(哈佛架构的数据和指令分开存,冯诺依曼架构一起存)
2. 性能:51 几十 MHz;STM32 可达几百 MHz。
3. 资源:51 RAM/ROM 仅几 KB;STM32 可达几 MB。
4. 外设:51 简单;STM32 丰富 (USB, CAN, Ethernet)。
5. 开发:51 用 Keil C51;STM32 用 Keil MDK/CubeMX,有 HAL 库。
6. 价格:51 极低;STM32 适中。
单片机开发中,芯片如何选型 必问 1. 明确需求:功能、性能、成本预算。
2. 对比参数:Flash/RAM 大小、外设资源。
3. 参考应用:如 C8051 适合实时性,STM32 适合通用。
4. 评估成本:开发工具成本、学习成本。
5. 功能匹配:外设兼容性。
6. 未来扩展:避免性能过剩或不足。
你了解过哪些MCU型号 / 国产MCU 重点 国际:STM32 (ST), PIC (Microchip), AVR (Atmel/Microchip), MSP430 (TI), ESP8266/32 (乐鑫)。
国产
1. GD32 (兆易创新):兼容 STM32,主频更高。
2. MM32 (灵动微):引脚/软件高度兼容。
3. AT32 (雅特力):兼容且性价比高。
4. STC (宏晶):经典的增强型 51。
5. ESP系列 (乐鑫):IoT Wi-Fi/蓝牙首选。
有没有用过MM32? 了解 基于 ARM Cortex-M,与 STM32 相似,库函数命名略有不同,可快速迁移。

1.2 内核与启动

问题 级别 详细解答
STM32F1和STM32F4有什么区别? 了解 1. 内核:F1 是 Cortex-M3;F4 是 Cortex-M4 (带 FPU 浮点单元/DSP 指令)。
2. 主频:F1 72MHz;F4 168MHz。
3. 内存:F4 更大 (192KB SRAM)。
4. 外设:F4 功能更强 (如 GPIO 翻转速度、ADC 精度)。
STM32F407的最高时钟主频 必问 168 MHz
STM32的启动过程是怎么样的? 必问 1. 上电复位,读取 BOOT 引脚决定从哪里启动 (通常是 0x08000000 Main Flash)。
2. 从起始地址读取 栈顶指针 (MSP)
3. 读取 复位中断向量 (Reset_Handler) 地址,跳转执行。
4. 执行复位中断服务程序:初始化系统时钟 (SystemInit)、设置中断向量表偏移 (VTOR)、初始化 C 库 (__main)。
5. 跳转到用户 main() 函数。
单片机最小系统组成 了解 1. 电源电路 (3.3V/5V)。
2. 复位电路 (RC 复位/芯片复位)。
3. 晶振电路 (时钟源)。
4. 下载调试接口 (SWD/JTAG/UART)。
5. 启动配置 (BOOT 引脚)。
单片机的PC / 堆栈 了解 PC (程序计数器):16/32 位寄存器,存放下一条要执行的指令地址。取指后自动加 1。
堆栈 (Stack):RAM 中的后进先出 (LIFO) 区域。用于保存断点 (PC)、保护现场 (寄存器) 和传递参数。
单片机寻址方式 了解 1. 立即寻址 :操作数在指令中(MOV A, #30H)。
2. 直接寻址 :直接给出地址(MOV A, 30H)。
3. 寄存器寻址 :操作数在寄存器(MOV A, R1)。
4. 寄存器间接寻址:寄存器存地址 (MOV A, @R0)。
5. 变址寻址 :基址+变址(MOVC A, @A+PC)。
6. 相对寻址 :PC+偏移量 (跳转)。
7. 位寻址:对某一位操作。
什么是位段操作(BitBand) 了解 将 1 个比特位膨胀映射为 1 个字 (32bit) 的地址。允许 CPU 通过读写这个字地址来原子操作那个比特位。主要用于 GPIO 和 SRAM 的原子位操作。
单片机中能够位寻址的寄存器的规律 了解 寄存器的地址能够被 8 整除 的,通常就是可以位寻址的。

1.3 时钟与调试

问题 级别 详细解答
为什么芯片需要时钟信号 / 时钟使能 必问 需要时钟
1. 同步数据传输:提供统一时间基准,确保逻辑单元在同一时刻动作(如触发器翻转)。
2. 控制时序:取指、译码、执行都需要时钟节拍。
需要使能
STM32 为了低功耗设计,默认关闭所有外设时钟。用户需手动开启(使能)特定外设的时钟,该外设才能工作。
32位芯片的调试主要包括哪些工具? 了解 J-Link、ST-Link、DAPLink、ULINK、Tracealyzer、SystemView、ITM/SWO、ETM/ETB、GDB+QEMU、串口 printf、逻辑分析仪、示波器。

1.4 总线主控

问题 级别 详细解答
DMA (直接存储器访问) 必问 搬运工。不经过 CPU,直接在 外设 <-> 内存内存 <-> 内存 之间传输数据。节省 CPU 资源,提高效率 (如 ADC 连续采集、串口大量发送)。

1.5 电源管理与调试

问题 级别 详细解答
STM32的低功耗模式有哪些 必问 按功耗由高到低排列,STM32 具有 运行、睡眠、停止、待机 四种工作模式。
上电复位后默认处于运行状态。用户需根据应用需求(如电池供电)选择最佳模式以降低功耗。
STM32 低功耗模式 - 睡眠模式 (Sleep) 重点 特点:仅关闭了内核时钟,内核停止运行,但片上外设(GPIO、定时器、ADC等)照常运行。
进入条件:执行 WFI (等待中断) 或 WFE (等待事件) 指令,且 SLEEPDEEP=0
唤醒方式:任意中断 (如 SysTick) 或事件。
唤醒延迟:无(立即唤醒)。
STM32 低功耗模式 - 停止模式 (Stop) 必问 特点:关闭所有时钟(HSI/HSE/PLL),所有外设停止工作。但 1.2V 区域电源保留,即内核寄存器和 SRAM 内容保持(数据不丢失)。
进入条件SLEEPDEEP=1PDDS=0 (电源控制寄存器)。
唤醒方式:任意 外部中断 (EXTI) 线(如按键、串口RX引脚中断)。
注意:唤醒后时钟默认切回 HSI,需重新配置系统时钟。
STM32 低功耗模式 - 待机模式 (Standby) 必问 特点功耗最低。关闭所有时钟,关闭 1.2V 区域电源SRAM 和寄存器内容丢失(除备份域外)。
进入条件SLEEPDEEP=1PDDS=1WUF=0 (唤醒标志清零)。
唤醒方式WKUP (PA0) 引脚上升沿、RTC 闹钟、NRST 引脚复位、IWDG 复位。
唤醒后:程序从头开始执行(相当于复位),之前的数据丢失。
keil5如何进行软件仿真/debug模式 了解 软件仿真 (Simulator)
1. 点击魔术棒 (Options for Target) -> Debug 选项卡。
2. 勾选 “Use Simulator”
3. 修改 Dialog DLL 和 Parameter (如 DARMSTM.DLL / -pSTM32F103C8) 以匹配芯片型号。
4. 点击 Start/Stop Debug Session 进入仿真。
硬件调试 (Hardware Debug)
1. 连接仿真器 (ST-Link/J-Link)。
2. Debug 选项卡勾选自己的调试器型号
3. 点击 Settings 确认识别到芯片 SWD/JTAG ID。
4. 进入 Debug 模式支持单步运行、打断点、查看寄存器/变量。
一般情况下,程序跑飞了会触发hardfault(硬错误中断),最快的方法是右键栈窗口里的hardfault,选择显示调用代码的选项,参考博客image-20251209090121592

📂 第二板块:存储器与 Flash

2.1 存储理论

问题 级别 详细解答
RAM与ROM的区别 重点 1. 核心功能:RAM 是临时工作台;ROM 是基础说明书 (固件)。
2. 读写权限:RAM 随机读写;ROM 默认只读 (或按块擦写)。
3. 持久性:RAM 易失 (断电丢);ROM 非易失。
4. 速度:RAM 极快 (GB/s);ROM 较慢 (MB/s)。
5. 容量:RAM 大 (GB级);ROM 小 (MB级,嵌入式中)。
存储器分类 (SRAM, DRAM, NOR, NAND) 了解 RAM:SRAM (快, 贵, 不需要刷新, MCU内部) vs DRAM (慢, 便宜, 需刷新, 内存条)。
Flash
1. NOR Flash:地址线数据线分开,支持按字节随机读取 (代码可直接运行),擦除按扇区。STM32 内部 Flash 就是 NOR 类型。
2. NAND Flash:地址数据线复用,按块读写,容量大便宜,主要存数据 (SSD/U盘)。
STM32F4 内存大小细节 了解 STM32F4 内部 SRAM 最大 192K,其组成细节为:112KB (系统SRAM) + 64KB (CCM数据RAM) + 16KB (备份SRAM)

2.2 Flash 机制与操作

问题 级别 详细解答
STM32F4的FLASH是什么类型 重点 NOR FLASH。支持片内执行 (XIP),擦除按扇区,读写按字节/字。
FLASH是怎么规划的,分了那些数据 必问 按功能:引导区 (Bootloader)、系统区 (OS/APP)、用户数据区 (配置/文件)。
按类型:代码类 (Bin文件)、文件类 (图片/字库)、配置类 (参数)。
按频率:频繁擦写区 (日志)、非频繁区 (固件)。

2.3 外部存储与应用

问题 级别 详细解答
写入FLASH的流程 / SPI通信原理 重点 流程:解锁 -> 擦除 (将位全置1) -> 编程 (写入数据, 只能1变0) -> 校验 -> 上锁。
SPI原理:全双工同步通信。CS 片选,CLK 时钟,MOSI 主出从入,MISO 主入从出。
W25q128用的什么通信? 了解 SPI 通信。W25Q128 是一款 Flash 存储器,通过 SCK, MISO, MOSI, CS 四线进行数据读写。
51单片机中,可拓展的外部程序储存器最大为多少字节 了解 64KB (16位寻址 2162^{16})。
1. EA 接高:先读内部 4K,超出读外部 (共 60K)。
2. EA 接低:直接从外部读取 (共 64K)。
Json在stm32的处理效率问题 了解 效率取决于主频、内存和 JSON 复杂度。
优化方法
1. 选择轻量库 (cJSON, Jsmn)。
2. 避免嵌套结构。
3. 压缩数据大小。
4. 使用硬件加速 (FPU/DMA)。
5. 优化代码 (寄存器变量)。

对第三板块和第四板块的播客:

📂 第三板块:GPIO、中断与定时器

3.1 GPIO 系统

问题 级别 详细解答
单片机中IO口的作用 了解 与外部器件实现数据交互、速度匹配、数据传送方式转换,以及增强单片机的负载能力。
GPIO有几种工作模式 必问 1. 输入:浮空、上拉、下拉、模拟。
2. 输出:推挽、开漏。
3. 复用:复用推挽、复用开漏 (用于外设)。
推挽输出和开漏输出的区别 必问 推挽 (Push-Pull):由 PMOS+NMOS 构成。能输出强高/低电平,驱动能力强,适合通用输出。
开漏 (Open-Drain):只有 NMOS (类似 NPN 集电极开路)。输出低电平时接地,输出高电平时高阻态必须外接上拉电阻才能输出高电平。适合 I2C 总线 (线与逻辑) 和 电平转换 (5V 兼容)。
引脚的输出速度(翻转速率)选择要注意什么? 了解 需综合考虑噪声控制、功耗和信号失真。速度越快噪声越大、功耗越高。应根据实际需求选择,不必盲目追求最高速。
什么是上拉/下拉 重点 上拉:通过电阻接 VCC,确保悬空时为高电平。
下拉:通过电阻接 GND,确保悬空时为低电平。
作用:固定电平,防止引脚悬空浮动导致误触发。
按键怎么做的?流程什么? 了解 GPIO 输入 -> 定时 10ms 扫描 -> 消抖 (计数 3\ge 3 次稳态) -> 触发事件 -> 回调/发消息。

3.2 中断系统

问题 级别 详细解答
什么是中断 / 中断源 必问 中断:CPU 暂停当前程序,转去处理突发事件,处理完返回。
中断源:触发中断的事件源 (如 GPIO 外部中断、定时器溢出、串口接收)。
中断的功能 (资芯电子笔面延伸) 了解 1. 实时处理:响应外界变量变化,请求 CPU 及时处理。
2. 故障处理:针对难以预料的故障 (如掉电),由故障源发出请求,CPU 转去执行故障处理程序。
3. 分时操作:CPU 启动外设后继续工作,外设完成后发中断请求。这样 CPU 可启动多个外设同时工作,大大提高效率。
中断配置过程 (以外部中断为例) 必问 以外部中断为例子。
1、先设置GPIO口为输入模式,并且时钟使能,GPIO初始化
2、查看中文参考手册,获取GPIO口到底是挂载在哪个EXTI线,初始化该外部中断事件线,设置下降沿触发
3、通过系统配置控制器SYSFLG将GPIO口与该外部中断事件线EXTIx映射连接起来
4、初始化嵌套向量中断控制器NVIC,设置中断源以及该中断的优先级
5、在启动文件中,查看该中断的服务函数名字,编写实现中断服务函数
6、当中断触发之后,执行你要操作的业务,处理完要清除中断标志位
中断类型 了解 1. 内核中断
- 复位、NMI、硬错误、内存管理、总线错误、使用错误、SVCall、调试监视、PendSV、SysTick。

2. 外部中断
- EXTI:所有GPIO均可映射到16个外部中断线,支持边沿触发。

3. 外设中断
- 定时器:更新、捕获/比较、触发、刹车。
- 串口:发送完成、接收就绪、帧错误。
- ADC/DAC:转换完成、溢出。
- DMA:传输完成、半传输、错误。
- I2C/SPI:事件、错误。
- 其他:CAN、USB、RTC等。

关键点
- 通过 NVIC 统一管理优先级和使能
- 优先级分抢占优先级子优先级
- 需在启动文件或CubeMX中配置中断向量表
外部中断的触发条件 了解 1. 边沿触发 (上升沿、下降沿)。
2. 电平触发 (高电平、低电平)。
3. 脉冲触发
4. 脉冲计数触发
边沿触发中断和电平触发中断 (详细区别) 了解 边沿触发:检测电平变化,锁存信号 (D触发器记忆)。信号消失后中断仍有效。
电平触发
1. 即时触发:信号消失中断也消失,易漏掉。
2. 信号锁存:类似边沿,需手动清除。
区别:边沿适合检测变化;电平适合检测状态保持。

3.3 定时器与 PWM

问题 级别 详细解答
定时器工作原理 / PWM 重点 原理:计数器 (CNT) 在时钟驱动下计数,与重装载值 (ARR) 比较,相等时溢出产生中断。
PWM:脉冲宽度调制。利用比较寄存器 (CCR) 与 CNT 比较。CNT < CCR 输出有效电平,否则无效。通过改变 CCR 调节占空比,改变 ARR 调节频率
在1kHZ下,如何设置50%占空比 了解 设 ARR = 1000 - 1 (周期),则 CCR = 499 (500)。占空比 = (CCR+1) / (ARR+1)。
用定时器的方式,写一个输出比例1:1,频率为1kHz的程序 了解 假设时钟 72MHz72MHz
1. 设置预分频器 (PSC) = 72172-1 (得 1MHz1MHz 计数频率)。
2. 设置重装载值 (ARR) = 100011000-1 (得 1kHz1kHz 频率)。
3. 设置比较值 (CCR) = 499499 (即 500500 个计数)。
4. 配置为 PWM 模式 1,极性高。
此时占空比 = (499+1)/(999+1)=50%(499+1)/(999+1) = 50\%,即 1:1。
电机的分类 必问 一、直流电机
直流侧再按“换相方式”细分
有刷 DC:机械换向器 + 电刷 → 简单、便宜、需维护
无刷 BLDC:电子换向(霍尔/反电动势)→ 高效率、长寿命
步进电机:定子脉冲磁场 → 开环定位,失步风险
伺服电机(DC/AC):= 电机 + 编码器 + 闭环驱动 → 高精度位置/速度/扭矩控制

二、交流电机
交流侧按“转子速度”细分
同步电机:转子 = 永磁或直流励磁,严格同步电网频率 → 功率因数可调,用于发电机、大型压缩机
异步(感应)电机:转子靠滑差感应电流,转速 < 同步速 → 结构最简单,工业电机 90% 占比
电机如何测试转速 重点 编码器
如何使用STM32输出PWM控制12V的电机正反转 STM32通过两路PWM信号控制L298N:
IN1_PWM + IN2_0 正转,IN1_0 + IN2_PWM 反转,IN1_1 + IN2_1 刹车,IN1_0 + IN2_0 停止。
舵机的作用和原理 重点 作用:角度控制 (0-180°)。
原理:输入 50Hz PWM (周期 20ms)。高电平脉宽 0.5ms ~ 2.5ms 对应 0° ~ 180°。内部闭环电路控制电机停在指定角度。

3.4 系统可靠性

问题 级别 详细解答
RTC时钟芯片相关的 (配置流程) 了解 1. 使能时钟 (RCC)。
2. 解锁 RTC (写 RTC_CR 的 DBP 位)。
3. 配置时钟源 (LSE/LSI)。
4. 初始化 (设置预分频 RTC_PRER 产生 1Hz)。
5. 设置时间 (操作 RTC_TR, RTC_DR)。
6. 配置闹钟/中断
7. 上锁 (保护配置)。
看门狗 (Watchdog) 重点 作用:防止程序死锁。本质是递减计数器,溢出时复位系统。
喂狗:程序需定期重置计数器。
类型:独立看门狗 (IWDG, 独立时钟, 防硬件故障)、窗口看门狗 (WWDG, 必须在窗口期喂, 防程序跑飞)。
单片机的波形调制主要包括有哪几种? 了解 PWM (脉宽调制)、SPWM (正弦脉宽)、PPG、DAC、Σ-Δ、频率调制、相位调制。
舵机的作用和原理 重点 作用:角度控制 (0-180°)。
原理:输入 50Hz PWM (周期 20ms)。高电平脉宽 0.5ms ~ 2.5ms 对应 0° ~ 180°。内部闭环电路控制电机停在指定角度。
按键怎么做的?流程什么? 了解 GPIO 输入 -> 定时 10ms 扫描 -> 消抖 (计数 3\ge 3 次稳态) -> 触发事件 -> 回调/发消息。
字符设备、块设备 (特点) 了解 字符设备:按字节读写,顺序访问 (键盘、串口)。
块设备:固定长度块传输 (512K),支持随机访问 (硬盘、U盘),可挂载文件系统。

📂 第四板块:通信接口 (UART/IIC/SPI/USB/CAN)

这部分是重中之重,必须分清各协议的时序、线制和应用场景。

4.1 通信基础

问题 级别 详细解答
列出单片机的几种通信外设 了解 UART、SPI、I²C、CAN、USB、SDIO、Ethernet、I²S、QSPI、FlexRay
全双工、半双工、单工区别 必问 单工:单向 (如收音机)。
半双工:双向但不能同时 (如对讲机、RS485、I2C)。
全双工:双向且同时 (如电话、RS232、SPI)。
同步与异步的区别 必问 同步:有共用时钟线 (CLK),收发双方按时钟节拍同步 (SPI, I2C)。
异步:无时钟线,靠约定的波特率和起始/停止位同步 (UART)。
比特率定义 了解 一秒钟内在通信网络上传输的 比特数 (bit)
常用校验算法 (CRC) 必问 CRC (循环冗余校验):基于多项式模 2 除法,计算余数。检错能力强,适合数据块校验。
其他
奇偶校验 (单bit):使发送内容中1的个数为奇数或者偶数
累加和 :所有数据字节的算术和,模256后取补码
CRC校验 (算法实现) 必问 基于多项式模 2 除法。发送端计算余数附加在末尾,接收端除以多项式余数若为 0 则正确。
代码思路crc ^= data[i]; 然后循环 8 次,若最高位为 1 则 crc = (crc << 1) ^ POLY; 否则左移。
CRC校验 (C语言实现代码) 必问 详见下方代码块。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdint.h>
#define POLYNOMIAL 0x07 // CRC-8多项式
#define INIT_CRC 0xFF // 初始CRC值
#define FINAL_XOR 0x00 // 最终异或值

uint8_t crc8(const uint8_t *data, size_t length) {
uint8_t crc = INIT_CRC;
for (size_t i = 0; i < length; i++) {
crc ^= data[i];
for (uint8_t j = 0; j < 8; j++) {
if (crc & 0x80) {
crc = (crc << 1) ^ POLYNOMIAL;
} else {
crc <<= 1;
}
}
}
crc ^= FINAL_XOR;
return crc;
}

4.2 串口通信 (UART/Serial)

问题 级别 详细解答
UART 帧格式 / 数据包结构 必问 帧格式起始位 (0) + 数据位 (8位) + 校验位 (可选) + 停止位 (1)。
数据包 (自定义):帧头 + 命令字 + 长度 + 数据 + 校验和 (CheckSum/CRC) + 帧尾。
如何自定义通信数据包 必问 帧头+命令+命令类型(子命令)+数据长度+数据+校验位+帧尾
UART (SCI 和 UART 就是的士和出租车的区别) 必问 UART:通用异步收发器 (硬件实体)。
SCI:串行通信接口 (概念统称)。
UART 只是 SCI 的一种实现。缺点:不支持多机主从,速度慢。
TTL vs RS232 vs RS485 必问 TTL:逻辑 0=0V,1=3.3V/5V (板内通信)。
RS232:负逻辑,0=+3~15V,1=-3~-15V (全双工,点对点,15米,易受干扰)。
RS485:差分信号 (A-B),正差=1,负差=0 (半双工,多点组网,1200米,抗干扰强)。
TTL电平/CMOS电平 必问 TTL:高电平 2.4V\ge 2.4V,低电平 0.4V\le 0.4V (5V供电)。
CMOS:范围更宽,接近电源轨。
RS-232 (详细引脚与电平) 必问 9针定义:RXD, TXD, GND, DCD(载波), DTR(就绪), DSR, RTS(请求发送), CTS(清除发送), RI(振铃)。
电平:负逻辑。+3+15V+3 \sim +15V 为 ‘0’,315V-3 \sim -15V 为 ‘1’。
缺点:共模干扰大,距离短 (15m)。
如何延长RS485的通信距离 重点 1. 使用中继器:在总线中间增加 RS485 中继器,增强信号驱动能力。
2. 降低波特率:波特率越低,信号抗干扰能力越强,传输距离越远。
3. 使用屏蔽双绞线:双绞线抵消共模干扰,屏蔽层接地防止电磁干扰。
4. 加终端电阻:在总线首尾各并联一个 120Ω 电阻,匹配阻抗,消除信号反射。
5. 增加线径:使用更粗的导线减少线路阻抗。
RS485的通信距离跟哪些参数有关系 重点 1. 波特率:成反比。100kbps 时约 1200m;10Mbps 时仅几米。
2. 线缆质量:双绞线的绞距、线径、屏蔽性能。
3. 节点数量:挂载设备越多,负载越重,距离缩短(标准 32 个,特制芯片可达 128/256)。
4. 环境干扰:电磁环境恶劣会缩短有效距离。
5. 驱动能力:485 芯片本身的驱动负载能力。

4.3 板级总线 (IIC/SPI)

问题 级别 详细解答
IIC 协议详解 必问 线制:SCL (时钟), SDA (数据)。开漏输出+上拉
时序
1. 起始:SCL 高时,SDA 下降沿。
2. 停止:SCL 高时,SDA 上升沿。
3. 数据:SCL 低电平改变数据,SCL 高电平保持数据稳定。
4. 应答 (ACK):第 9 个时钟,接收方拉低 SDA。
特点:半双工、同步、多主从、有地址 (7bit/10bit)、有应答。
IIC 应答信号的电平定义 重点 0 (低电平):有效应答 (ACK)。
1 (高电平):无效应答 (NACK)。
CPU 发出信号后等待应答,若未收到 (保持高电平),则判断受控单元故障。
IIC如何识别从机设备 / 寻址模式 必问 通过 设备地址。每个从机有唯一的 7bit 或 10bit 地址。主机发送地址帧,从机匹配后发送 ACK。
IIC 的模式 (单主/多主) 必问 一主多从:最常用,代码量小,无仲裁。
多主多从:总线有 2\ge 2 个主机。协议支持,但需打开 MCU 的 Multi-Master 功能位,并处理 “仲裁丢失” 中断。
IIC的数据传输的最高的传输速度 了解 标准模式:100 Kbps。
快速模式:400 Kbps。
高速模式:3.4 Mbps。
超高速模式:5 Mbps / 10 Mbps。
软件IIC vs 硬件IIC 必问 硬件:外设控制器实现,速度快,CPU 占用低,引脚固定。
软件:GPIO 模拟时序,灵活性高,可移植性好,但占用 CPU,速度慢。
软件模拟IIC与硬件IIC的区别 必问 硬件:速度快、不占 CPU、引脚固定。
软件:GPIO 模拟,速度慢、高 CPU 占用、引脚灵活、易移植。
SPI 协议详解 必问 线制:SCK, MOSI, MISO, CS (片选)。
特点:全双工、同步、主从、无应答、高速 (Mbps级)。
模式:CPOL (时钟极性) 和 CPHA (时钟相位) 组合成 4 种模式 (0,1,2,3)。常用模式 0 和 3。
有没有了解过软件SPI 了解 主循环里手动控制 GPIO 拉高拉低 SCK,按位读写 MOSI/MISO。适合对速度要求不高且引脚受限的场景。
IIC 与 SPI 的区别 必问 1. 线:IIC 两根;SPI 四根。
2. :SPI 快;IIC 慢。
3. :IIC 用地址;SPI 用片选线。
4. :IIC 有 ACK;SPI 无。
5. :IIC 半双工;SPI 全双工。

4.4 工业与高速总线 (CAN/USB)

问题 级别 详细解答
CAN 总线 了解 特点:差分信号 (CAN_H, CAN_L),半双工,异步,无时钟,多主,抗干扰强。
:数据帧、远程帧、错误帧。
仲裁:ID 越小优先级越高。
CAN (CVTE一面延伸 - 网络类型与距离) 了解 1. 闭环总线网络
 ● 特点:高速、短距离。
 ● 参数:最高速度 1Mbps,最长距离 40m
2. 开环总线网络
 ● 特点:低速、远距离。
 ● 参数:最高速度 125Kbps,最远距离 1km
通讯节点构成:CAN控制器 + CAN收发器 (将信号转换为差分信号)。
USB 协议 了解 线:VCC, GND, D+, D- (差分)。
三层结构:接口层(数据包) -> 中间层(端点) -> 功能层。
传输:控制 (枚举)、批量 (U盘)、中断 (鼠标)、同步 (摄像头)。
枚举:主机读取设备描述符,分配地址,加载驱动。
端点:数据缓冲区。
USB协议 (端点与管道的详细定义) 了解 端点 (Endpoint)
 ● 定义:设备端的一个数据缓冲区。
 ● 特点:每个端点有固定的传输方式、带宽、最大包长。端点 0 用于初始化。
管道 (Pipe)
 ● 定义:主机缓冲区与外设端点之间的逻辑连接。
 ● 分类:数据流管道 (无结构)、消息管道 (有结构)。
总结:主机通过“管道”与设备的“端点”通信。

4.5 无线通信与物联网 (Wireless & IoT)

问题 级别 详细解答
无线模块选型 重点 1. Wi-Fi: ESP8266/ESP32 (UART/SDIO)。
2. 蓝牙: nRF52, CC2640 (BLE)。
3. LoRa: SX1278 (远距离, 低功耗)。
4. ZigBee: CC2530 (组网, 智能家居)。
5. 4G/NB-IoT: SIM7600, BC26 (广域网)。
有没有了解过哪些无线通信模块 (选型表) 重点 1. UART上网:ESP8266 (WiFi), SIM800C (2G), BC26 (NB-IoT)。
2. 低功耗+速传 (SPI):NRF24L01 (2.4G), SI4463 (433M)。
3. 远距组网:LoRa SX1278 (5km), ZigBee CC2530 (自组网)。
4. 超简对讲:433M ASK (遥控器)。
Lora,NB-IoT的使用 (需结合具体项目回答,如 LoRa 用于农田无需基站,NB-IoT 用于抄表需插卡)。
Lora,NB-IoT的使用 了解 LoRa:用于远距离、低功耗、自组网场景 (如农田、山区),需配合 LoRa 网关。
NB-IoT:基于运营商网络,用于广覆盖、低频次数据上传 (如智能水表),需插 SIM 卡。
有没有了解过蓝牙芯片 / 协议栈 必问 主流芯片:TI CC2640, Nordic nRF52, 乐鑫 ESP32, 杰理/恒玄 (音频)。
协议栈:基带 -> LMP (链路管理) -> L2CAP (适配) -> SDP (服务发现) -> 应用层 (GATT/GAP)。
ESP8266模块 (概述) 重点 乐鑫推出的低成本 Wi-Fi SOC。集成 TCP/IP 协议栈,支持 AT 指令控制或作为 MCU 独立开发 (SDK/Arduino)。广泛用于 IoT 联网。
ESP8266 模式与配网 重点 工种模式:STA (客户端), AP (热点), STA+AP (混合)。
配网模式
1. 硬编码 (写死)。
2. SmartConfig (微信 AirKiss 一键配网)。
3. AP 配网 (手机连模块热点网页配置)。
ESP8266 用的协议 了解 主要是 TCP/IP 协议栈 (包含 TCP, UDP, HTTP, DNS, FTP)。
简述LWIP协议 必问 LwIP (Light-weight IP) 是开源轻量级 TCP/IP 栈。
特点:减少 RAM 占用,支持无操作系统运行 (RAW API) 或带系统 (Netconn/Socket API)。
包含:应用层、传输层、网络层 (物理层需硬件配合)。
MQTT 协议 必问 机制:发布/订阅模式 (Pub/Sub)。
角色:Client (发布/订阅者), Broker (代理服务器)。
特点:轻量、低带宽、长连接、QoS (0/1/2) 消息质量保证。
Mqtt的底层 重点 基于 TCP/IP 协议,使用 Socket 编程实现报文的构建和发送。位于 OSI 的应用层。

对第五板块和第六板块的播客:

📂 第五板块:RTOS

嵌入式 OS 核心,考察任务调度、通信与同步。

5.1 RTOS 基础概念

问题 级别 详细解答
什么是 RTOS 了解 实时操作系统。保证任务在确定时间内完成。内核负责多任务切换、同步与资源管理。
RTOS 任务状态 必问 1. 运行态 (Running)。
2. 就绪态 (Ready)。
3. 阻塞态 (Blocked, 等待事件)。
4. 挂起态 (Suspended, 手动暂停)。
RTOS任务怎么划分的? 了解 1. 高优:中断外设驱动 (串口/ADC)。
2. 周期:1ms 控制环 > 10ms 检测 > 100ms 人机。
3. 低优:阻塞型慢操作 (网络/SD卡)。
4. 合并:共享资源的功能合并,减少切换。
RTOS 调度策略 必问 抢占式 (高优先级打断低优先级) + 时间片轮转 (同优先级轮流执行)。
FreeRTOS的任务调度是什么样的 (内核级) 了解 1. TCB:含栈顶指针、优先级、链表节点。
2. 就绪表pxReadyTasksLists 数组,按优先级索引。
3. 调度SysTick 系统滴答时钟 触发 PendSV,汇编保存 R4-R11 等,加载新任务栈。
4. 查找:O(1) 时间找到最高优先级非空链表。
任务通信机制 (Queue, Sem, Mutex) 必问 1. 队列 (Queue):传递数据 (值拷贝)。FIFO。
2. 信号量 (Semaphore):传递状态 (计数)。二值 (同步) / 计数 (资源管理)。
3. 互斥量 (Mutex):保护临界资源。具有优先级继承机制 (防优先级翻转)。
4. 事件组 (EventGroup):多事件同步 (与/或逻辑)。
5. 任务通知:轻量级,点对点。
FreeRTOS中,消息队列与信号量区别 (本质) 了解 队列:传递数据 (值拷贝),有缓冲区。
信号量:传递状态,是特殊的队列 (长度0/数据大小0),只计数值。
优先级翻转及解决 了解 现象:高优先级任务等待低优先级持有的锁,中优先级任务打断低优先级,导致高优先级任务长时间阻塞。
解决互斥量 (Mutex) 支持优先级继承——当高优先级等待锁时,暂时提升持有锁的低优先级任务的优先级,使其尽快释放锁。

5.2 通信与同步 (IPC & Sync)

问题 级别 详细解答
任务通信机制 (Queue, Sem, Mutex) 必问 1. 队列 (Queue):传递数据 (值拷贝)。FIFO。
2. 信号量 (Semaphore):传递状态 (计数)。二值 (同步) / 计数 (资源管理)。
3. 互斥量 (Mutex):保护临界资源。具有优先级继承机制 (防优先级翻转)。
4. 事件组 (EventGroup):多事件同步 (与/或逻辑)。
5. 任务通知:轻量级,点对点。
FreeRTOS中,消息队列与信号量区别 (本质) 了解 队列:传递数据 (值拷贝),有缓冲区。
信号量:传递状态,是特殊的队列 (长度0/数据大小0),只计数值。
优先级翻转及解决 了解 现象:高优先级任务等待低优先级持有的锁,中优先级任务打断低优先级,导致高优先级任务长时间阻塞。
解决互斥量 (Mutex) 支持优先级继承——当高优先级等待锁时,暂时提升持有锁的低优先级任务的优先级,使其尽快释放锁。

5.3 内存与移植

问题 级别 详细解答
FreeRTOS 移植步骤 重点 1. 获取源码 (Source)。
2. 选移植层 (portable/GCC/ARM_CM4F)。
3. 配置 FreeRTOSConfig.h (堆大小、优先级数、Tick频率)。
4. 适配 SysTick (系统滴答时钟) 中断和 SVC/PendSV 中断。
5. 创建任务,启动调度器。
FreeRTOS任务堆栈的动态和静态 了解 动态:运行时 malloc,灵活但有碎片 (configSUPPORT_DYNAMIC_ALLOCATION)。
静态:编译时分配数组,安全无碎片,需预估大小 (configSUPPORT_STATIC_ALLOCATION)。
内存管理 (heap_4) 必问 heap_4:最常用。支持内存合并 (解决碎片),支持将不连续内存区映射为堆 (vPortDefineHeapRegions)。
FreeRTOS 内存配置宏 (源码细节) 了解 configTOTAL_HEAP_SIZE:堆大小 (仅 heap_1/2/4/5 需要)。
configUSE_MALLOC_FAILED_HOOK:分配失败回调 (1开启)。
configSUPPORT_STATIC_ALLOCATION:允许静态 API (1开启)。
configSUPPORT_DYNAMIC_ALLOCATION:允许动态 API (1开启)。
configAPPLICATION_ALLOCATED_HEAP:由用户声明堆数组 (1开启)。
内存管理 (heap_4) 必问 heap_4:最常用。支持内存合并 (解决碎片),支持将不连续内存区映射为堆 (vPortDefineHeapRegions)。
堆栈溢出检测 了解 1. 方法1:检查栈顶是否被覆盖 (特殊值)。
2. 方法2:使用 MPU 保护栈区。
3. Hook:定义 vApplicationStackOverflowHook 回调。

5.4 内核原理 (Kernel Internals)

问题 级别 详细解答
FreeRTOS的任务调度是什么样的 (内核级) 了解 1. TCB:含栈顶指针、优先级、链表节点。
2. 就绪表pxReadyTasksLists 数组,按优先级索引。
3. 调度SysTick 触发 PendSV,汇编保存 R4-R11 等,加载新任务栈。
4. 查找:O(1) 时间找到最高优先级非空链表。
有没有研究过RTOS的内核源码 了解 (见上表 FreeRTOS 调度原理,提到 TCB、PendSV、List_t 结构、heap_4 算法、临界区开关中断实现)。

📂 第六板块:硬件设计 (PCB/ADC/无线)

涉及 PCB 流程、ADC 原理及常用模块选型。

6.1 PCB 设计与工艺

问题 级别 详细解答
PCB 设计流程 重点 原理图设计 (SCH) -> 网表导入 -> PCB 结构定义 (板框) -> 布局 (Layout) -> 布线 (Routing) -> DRC 检查 -> 丝印/铺铜 -> 输出 Gerber 文件。
PCB 加工工艺 必问 开料 -> 钻孔 -> 沉铜 -> 线路曝光 (光刻) -> 蚀刻 (去除非线路铜) -> 阻焊 (绿油) -> 丝印 -> 表面处理 (沉金/喷锡) -> 成型。
EMC认证 (流程) 重点 需求设计 -> 规格定义 -> 系统设计 -> 阶段评审 -> 测试验证 (EMI干扰/EMS抗扰) -> 问题整改 -> 获得认证 (如 CE)。

6.2 模拟电路 (Analog Circuits)

问题 级别 详细解答
请说说三极管和MOS管的区别? 了解 三极管 (BJT):电流控制 (Ib 控 Ic),输入阻抗低,功耗大。
MOS管:电压控制 (Vgs 控 Id),输入阻抗极高,功耗低,适合高速开关。
什么是adc/dac/pwm? (定义) 重点 ADC:模拟转数字 (传感器采集)。
DAC:数字转模拟 (音频播放)。
PWM:脉冲宽度调制 (电机控制)。
ADC 工作原理 必问 模数转换。过程:采样 -> 保持 -> 量化 -> 编码
STM32 ADC 是 SAR (逐次逼近型)。精度由位数 (12bit) 决定,参考电压 (Vref) 决定量程。
ADC的转换精度或者分辨率 必问 分辨率:位数 (如 12位,212=40962^{12}=4096),决定能区分的最小电压变化。
精度:转换结果与真实值的接近程度。分辨率是精度的前提。

6.3 传感器与显示 (Peripherals)

问题 级别 详细解答
MPU6050底层实现原理 了解 内部集成 3 轴陀螺仪 + 3 轴加速度计 + 磁力计。内置 DMP (数字运动处理器) 计算四元数/欧拉角。通过 I2C 读取寄存器数据。
按下的数字怎么在oled屏显示 (编码过程) 了解 按键值 -> ASCII 码 -> 查 字模数组 (点阵) -> I2C 发送页地址+列地址 -> 写入数据点亮像素。