使用说明:先自测「判别规则速查表」,遮住右列自答;再做「综合练习题」,最后对答案。 面试前只翻本目录,不背题。
| # | 主题 | 一句话判别规则 |
|---|---|---|
| 32 | 中断优先级 | NVIC:数字小优先;抢占优先级管打断、子优先级管排队;分组(位数)一次定死 |
| 33 | DMA | 大块/高速数据搬移、要释放 CPU → DMA;普通搬一次、循环搬到底;M2P/P2M/M2M 看方向;搬完进回调 |
| 34 | 时钟树 | 内部HSI 8M / 外部 HSE 起振 → PLL 倍频 → SYSCLK → AHB → APB1(慢)/ APB2(快);外设挂哪条总线查手册 |
| 35 | HAL vs LL | 要可移植/抽象/快速开发 → HAL;要极致性能/直接控寄存器 → LL;两者可混用 |
| 36 | I2C vs SPI vs UART | 有SCK 时钟 = 同步,无 = 异步(UART);I2C 2 线带地址慢、SPI 4 线 CS 寻址快全双工、UART 2 线约定波特率 |
| 37 | PWM | 频率 = CK/(PSC+1)/(ARR+1);占空比 = CCR/(ARR+1)×100%;改占空比 → 改 CCR,改频率 → 改 PSC/ARR |
| 38 | RAM/ROM/Flash | 掉电要留 → Flash;运行反复改 → RAM;RW-data 初值在 Flash 拷到 RAM,ZI-data 直接 RAM |
| 39 | 调试方法 | 逻辑/变量 →printf 或断点;波形/时序/波特率 → 逻辑分析仪;ISR 别 printf、实时系统别断点 |
| 40 | 交叉编译 | 编译器与目标平台架构不同 = 交叉;芯片跑不动编译器 →PC 编好烧进去;产物架构不匹配跑不了(x86 跑不了 ARM 的 bin) |
| 抢占优先级 | 子优先级 | |
|---|---|---|
| 管什么 | 能不能打断正在跑的中断 | 同抢占级时的排队顺序 |
| 数字小 | 优先(小 = 高优先级) | 先响应 |
| 典型场景 | 高抢占级打断低抢占级,处理完回来 | 两中断同抢占级,谁先谁后 |
| 普通模式 | 循环模式 | |
|---|---|---|
| 搬运 | 搬完指定长度就停 | 搬完自动重装,持续搬到底 |
| 适用 | 一次性大块(如读 Flash) | 持续采样(ADC 连续采样/定时器触发) |
| 回调 | 每次搬完进一次 | 每轮搬完都进 |
| 源 | 是什么 | 精度/用途 |
|---|---|---|
| HSI | 内部 RC,8MHz | 快但精度一般,上电默认 |
| HSE | 外部晶振 | 准,常用 PLL 的输入 |
| PLL | 锁相环倍频 | 把低频倍到 SYSCLK 高频 |
| LSI | 内部低速(约 40KHz) | 看门狗/独立 RTC |
| LSE | 外部 32.768KHz 晶振 | RTC 低功耗计时 |
| HAL | LL | |
|---|---|---|
| 层级 | 高层抽象,函数封装 | 寄存器级轻封装 |
| 可移植 | 好(抽象) | 差(贴芯片) |
| 性能 | 调用开销大,慢 | 直接写寄存器,快 |
| 三模式 | 轮询 / 中断 / DMA | 不区分,裸寄存器操作 |
| I2C | SPI | UART | |
|---|---|---|---|
| 同步 | 同步(有 SCL) | 同步(有 SCK) | 异步(无时钟) |
| 线数 | 2(SDA+SCL) | 4(MOSI/MISO/SCK/CS) | 2(TX/RX) |
| 双工 | 半双工 | 全双工 | 全双工 |
| 寻址 | 7 位地址 | CS 片选 | 无(约定即可) |
| 速度 | 慢(KHz 级) | 快(MHz 级) | 中(看波特率) |
| 寄存器 | 管什么 | 改它影响什么 |
|---|---|---|
| PSC | 预分频 | 计数时钟频率 |
| ARR | 计数上限 | 周期/频率 |
| CCR | 比较值 | 占空比 |
| RAM(SRAM) | Flash | |
|---|---|---|
| 掉电 | 丢(易失) | 保持(非易失) |
| 速度 | 快 | 慢 |
| 写入 | 随便写,无次数限制 | 先擦整块、寿命约 10 万次 |
| 放啥 | 变量/堆栈/运行数据 | 代码/常量/掉电保存的数据 |
| 工具 | 看什么 | 适合 | 禁忌 |
|---|---|---|---|
| printf | 变量/流程/状态 | 软件逻辑 | ISR 里别用 |
| 调试器(断点) | 运行现场(变量/栈/寄存器) | 逻辑错/崩溃定位 | 实时系统别打断点 |
| 逻辑分析仪 | 波形/时序/波特率 | 协议/信号问题 | 看不到变量 |
| 本地编译 | 交叉编译 | |
|---|---|---|
| 在哪编 | 电脑上 | 电脑上 |
| 给谁跑 | 同一台电脑 | 另一台机器(ARM 芯片) |
| 工具链 | gcc |
arm-none-eabi-gcc 整套 |
| 典型 | Linux 编 Linux | Keil 编 STM32 固件 |
答案解析已单独存放,避免自测时不小心看到答案:
第三批复习总结-答案.md(同目录)——完成全部 28 题后再翻开对照。
复习目标:每条规则能自己讲出"为什么",不只记住结论。