一、什么是采样?
现实中的温度、电压、声音、加速度等信号通常是连续模拟信号。
而 STM32 的 ADC 需要把连续信号转换成数字数据,因此 ADC 会按照一定的时间间隔不断读取信号。
例如:
模拟信号
↓
ADC 每隔 Ts 采样一次
↓
x[0] x[1] x[2] x[3] x[4] ...
现实中的温度、电压、声音、加速度等信号通常是连续模拟信号。
而 STM32 的 ADC 需要把连续信号转换成数字数据,因此 ADC 会按照一定的时间间隔不断读取信号。
例如:
模拟信号
↓
ADC 每隔 Ts 采样一次
↓
x[0] x[1] x[2] x[3] x[4] ...
ADC(模数转换器)是嵌入式开发中最常考的模拟外设之一,面试官通常围绕分辨率与转换公式、转换时间计算、规则组/注入组、扫描与连续模式、DMA 配合以及精度校准展开提问。本文整理了 STM32 ADC 的高频面试题与参考答案,覆盖从原理到实战的完整考点,帮助你在面试中快速定位薄弱点。
STM32 主流型号(F1/F4 等)内置 12 位逐次逼近型(SAR)ADC,转换结果为 0~4095 的数字量。实际电压计算公式为:V = ADC_Value × VREF / 4095(12 位时)。例如 VREF=3.3V、读数为 2048 时,对应电压约 1.65V。12 位分辨率在 3.3V 参考下最小可分辨电压约 0.8mV/LSB。
DMA(直接存储器访问)是嵌入式面试中必考的高频外设,考察点集中在"为什么省 CPU"、通道与请求映射、循环模式/双缓冲,以及串口不定长接收等实战坑上。本文整理了 STM32 DMA 的高频面试题与参考答案,帮助你在面试中把原理、配置与踩坑经验一次说透。
DMA(Direct Memory Access,直接存储器访问)是一个独立于 CPU 的硬件搬运引擎,能在外设与内存、内存与内存之间直接搬移数据,全程不需要 CPU 逐字节参与。CPU 只需配置源地址、目的地址、长度与方向并启动,之后由 DMA 控制器自动完成搬运,解决"CPU 被大量数据拷贝占用"的问题。
I2C(Inter-Integrated Circuit)是嵌入式开发中最常用的板级串行总线之一,也是面试中出现频率最高的通信协议考点。本文整理 I2C 从物理层到协议层的高频面试题与参考答案,覆盖总线构成、时序、仲裁、速率模式与工程实践,帮助你快速通关。
起始位是始终是高电平的时候,把数据线拉低
ACK就是在时钟为高电平的时候,把这个数据线拉低
NACK是在时钟为高电平的时候,这个数据线是高电平,就是从机没有操作这个数据线
7位的地址位加上一位的读写位,8位
看门狗是嵌入式系统可靠性设计的最后一道防线,也是面试中几乎必问的"系统级"考点。从独立看门狗与窗口看门狗的区别,到超时计算、喂狗时机与复位排查,下面这些题目基本覆盖了面试官的考察点。
作用:防止程序跑飞或卡死(死循环、异常挂起)导致系统失控。原理:看门狗本质是一个独立运行的递减计数器,程序正常时周期性"喂狗"(重载计数器);一旦程序异常,计数器持续递减到 0,触发系统复位让程序重新执行。它是软件故障的最后一道硬件防线,属于系统可靠性设计(Safety)的典型手段。
SPI(Serial Peripheral Interface)以高速、全双工、时序简单著称,是嵌入式面试中与 I2C 并列的必考通信协议。本文整理了 SPI 从四线构成、四种模式到片选管理、Flash 读写、环形缓冲收发的高频面试题与参考答案。
定时器是 STM32 面试中出镜率最高的外设之一,从时基单元、PWM 到输入捕获、编码器接口,几乎每个嵌入式岗位都会问到。本文整理了定时器方向的高频面试题与参考答案,帮助你从"会用库函数"进阶到"讲得清原理"。
按功能可分为三类:基本定时器(TIM6/TIM7)只有时基单元,只能定时中断和触发 DAC,没有输入输出通道;通用定时器(TIM2~TIM5)在时基单元基础上增加输入捕获、输出比较、PWM、编码器接口等功能,是考察重点;高级定时器(TIM1/TIM8)再增加互补输出、死区生成、刹车输入(Break)与重复计数器,用于电机控制等需要安全保护的场合。一句话记忆:基本=只能定时,通用=能输入输出,高级=通用+电机控制专用功能。
UART(通用异步收发器)是嵌入式系统最基础的通信接口,调试打印、AT 指令、Modbus 都离不开它。本文整理了 UART 从帧格式、波特率误差到电平标准、环形缓冲、空闲中断收不定长帧的高频面试题与参考答案。
char i=0;
while(1)
{
printf("%c\n",i++);
delay_ms(1000);
LED0=!LED0;
}
低功耗设计是电池供电设备的刚需,也是嵌入式面试中出镜率极高的考点,围绕 Sleep/Stop/Standby 三种模式、唤醒机制与工程实践层层展开。本文整理了 20 道高频面试题,覆盖模式对比、唤醒源、时钟与 GPIO 处理、功耗测量及 FreeRTOS Tickless,文中电流数据为典型值(以 STM32F103/F407 为例),精确值请以对应型号数据手册为准。
STM32 主要有三种低功耗模式:Sleep(睡眠)、Stop(停止)和Standby(待机)(部分新系列还有 Shutdown、Standby+RTC 等细分)。Sleep 只停止 CPU 内核时钟,外设、SRAM、Flash 全部继续工作;Stop 停止所有时钟,但 SRAM 与寄存器内容全部保留;Standby 切断内部 1.8V 数字区域电源,SRAM/寄存器内容全部丢失,仅备份域(RTC、备份寄存器)与唤醒电路继续供电。三者功耗依次降低,唤醒时间依次变长。
SPI DMA 发送 LCD 图片时,DMA 会持续读取内存中的像素数据。
如果只有一块缓冲区:
CPU → 修改 framebuffer
↕
DMA → 读取 framebuffer
