MCU FAE岗位常见面试问题总结
1HS,公众号:平凡灵感码头2HS,公众号:平凡灵感码头3HS,公众号:平凡灵感码头4HS,公众号:平凡灵感码头其它详细内容在各个集合里面经行查阅。
1
HS,公众号:平凡灵感码头STM32 单片机启动过程全解析:从上电到主函数的旅程
2
HS,公众号:平凡灵感码头STM32F103 简单 Bootloader 实现教程
3
HS,公众号:平凡灵感码头全面解析看门狗(Watchdog):从原理到STM32寄存器配置
4
HS,公众号:平凡灵感码头STM32 程序内存分布详解
其它详细内容在各个集合里面经行查阅
一、MCU基础知识问题
1. Cortex-M0、M3、M4有什么区别?
参考答案:
Cortex-M0、M3、M4 都属于 ARM Cortex-M 系列内核,但定位不同。
-
Cortex-M0
-
结构最简单
-
功耗低、成本低
-
性能较弱,适合简单控制应用
-
-
Cortex-M3
-
性能明显提升
-
支持更复杂的中断管理
-
适用于工业控制、通信设备等
-
-
Cortex-M4
-
在 M3 基础上增加了 DSP 指令和 FPU
-
更适合音频处理、数字信号处理等计算密集型场景
-
总体来说,三者主要区别体现在 性能、指令集能力以及应用场景。
2. MCU 的启动流程是什么?
参考答案:
MCU 上电后大致会经历以下流程:
-
上电复位
-
CPU 从 **向量表地址(通常是 Flash 起始地址)**读取:
-
初始栈指针(SP)
-
Reset Handler 地址
-
-
设置栈指针
-
跳转执行 Reset_Handler
-
系统初始化:
-
初始化时钟
-
初始化数据段
-
-
进入
main()函数
因此 MCU 启动的核心是 向量表 + Reset_Handler。
3. MCU 中断机制是如何工作的?
参考答案:
中断机制允许 CPU 在执行主程序时,响应外部或内部事件。
基本流程:
-
外设产生中断请求
-
NVIC 判断中断优先级
-
CPU 保存当前上下文
-
跳转到中断服务函数(ISR)
-
执行中断处理代码
-
恢复现场并返回主程序
中断机制的核心作用是 提高系统实时性。
4. NVIC 的作用是什么?
参考答案:
NVIC(Nested Vectored Interrupt Controller)是 Cortex-M 内核中的 中断控制器。
主要功能包括:
-
管理中断优先级
-
支持中断嵌套
-
控制中断使能和屏蔽
-
快速响应中断
NVIC 能够提高 MCU 的 中断响应速度和系统实时性能。
5. UART、SPI、I2C 有什么区别?
参考答案:
|
接口 |
特点 |
|---|---|
|
UART |
异步通信,只需 TX/RX 两根线 |
|
SPI |
同步通信,速度快,需要 4 根线 |
|
I2C |
两线通信,支持多主多从 |
总结:
-
UART:简单、常用于串口调试
-
SPI:速度快,适合高速通信
-
I2C:节省IO口,适合传感器通信
6. 看门狗(Watchdog)的作用是什么?
参考答案:
看门狗是一种 防止系统死机的保护机制。
基本原理:
-
MCU 正常运行时需要定期“喂狗”
-
如果程序跑飞,没有喂狗
-
看门狗会触发 系统复位
因此看门狗可以提高系统 稳定性和可靠性。
二、嵌入式 C 语言问题
1. volatile 关键字有什么作用?
参考答案:
volatile 表示变量可能被 外部因素改变,编译器不能对其进行优化。
常见使用场景:
-
中断变量
-
硬件寄存器
-
多线程共享变量
例如:
volatile uint32_t flag;
这样编译器每次都会 重新读取变量值。
2. static 关键字的作用是什么?
参考答案:
static 主要有两种作用:
-
函数内部变量
只初始化一次,生命周期为整个程序运行期间。
-
限制作用域
如果用于全局变量或函数,只在当前文件可见。
因此 static 常用于 模块封装。
3. 中断函数中能不能使用 printf?
参考答案:
一般 不建议在中断中使用 printf。
原因包括:
-
printf 执行时间较长
-
可能阻塞中断
-
可能导致系统实时性下降
如果需要调试,可以:
-
使用标志位
-
在主循环中输出信息
三、调试能力问题
1. MCU 无法下载程序如何排查?
参考答案:
可以按照以下步骤排查:
-
检查电源是否正常
-
检查 SWD 或 JTAG 接口连接
-
检查复位电路
-
检查 BOOT 配置
-
确认 MCU 是否被锁定
-
使用调试器尝试强制下载
通过逐步排查可以快速定位问题。
2. 程序跑飞可能是什么原因?
参考答案:
常见原因包括:
-
指针错误
-
堆栈溢出
-
中断优先级冲突
-
看门狗未喂
-
内存越界
-
外设异常
调试方法:
-
使用 JTAG 调试
-
查看程序计数器
-
分析调用栈
3. 串口通信出现乱码怎么办?
参考答案:
可以从以下几个方面排查:
-
波特率是否一致
-
时钟配置是否正确
-
数据位、停止位配置
-
接地是否良好
-
是否存在干扰
必要时可以使用 示波器查看波形。
更多推荐



所有评论(0)