单片机/嵌入式超全基础面试题(CPU/MCU/寄存器/三极管/数码管/位操作)
一、各类芯片核心概念:CPU、MCU、MPU、GPU、NPU、FPU、SoC
这是嵌入式最基础的概念辨析,也是面试高频提问,核心在于区分各芯片的使用场景与硬件架构:
-
CPU(中央处理器) :计算机系统的运算与控制核心,负责指令解析、算术逻辑运算和整体调度,是各类芯片的"大脑",性能直接决定系统处理能力。
-
MCU(微控制器/单片机) :专为控制场景设计的单片微型计算机,内部集成CPU、片内RAM、ROM、定时器、串口、GPIO等全套外设,无需外接内存和存储,以裸机开发为主,不运行大型操作系统,代表:51单片机、STM32。
-
MPU(微处理器) :仅搭载高性能CPU核心,无内置RAM、ROM,必须外接内存、Flash存储,可运行Linux、Android等大型操作系统,侧重复杂运算与系统级开发,代表:ARM A系列处理器。
-
GPU(图形处理器):拥有海量并行计算单元,专为图像渲染、视频解码、大规模并行浮点运算设计,解决CPU串行运算效率低的问题。
-
NPU(神经网络处理器):AI专用硬件加速单元,专门优化卷积运算、矩阵运算等神经网络计算,用于AI推理、智能识别等场景,大幅提升AI运算速度。
-
FPU(浮点运算单元):CPU外挂硬件模块,专门负责浮点数(float/double)运算。无FPU时只能通过软件模拟浮点运算,速度极慢。
-
SoC(片上系统):完整集成化系统芯片,将CPU、GPU、NPU、存储器、各类通信外设、接口电路全部集成在单颗芯片内,是手机、平板、智能设备的核心芯片。
一句话总结:MCU是控制型单片机,MPU是系统级处理器,SoC是全功能集成芯片,GPU/NPU/FPU是专用加速运算单元。
二、RAM和ROM区别?51单片机片内RAM、ROM大小
1、核心区别
| 存储器类型 | 特点 | 数据特性 | 用途 |
|---|---|---|---|
| RAM(随机存储器) | 可读可写、读写速度快 | 断电数据丢失 | 存储临时变量、堆栈、程序运行数据 |
| ROM(程序存储器) | 读快写慢、稳定性高 | 断电数据保留 | 存储程序代码、常量、固化数据(现多为Flash) |
2、标准51单片机片内存储大小
-
基础8051:片内RAM 128字节 ,片内ROM 4KB
-
增强型8052:片内RAM 256字节,片内ROM保持4KB
注:51单片机支持外接扩展RAM、ROM,片内存储仅满足基础简单程序开发。
三、什么是外设寄存器?
外设寄存器是硬件外设映射到单片机地址空间的专用存储单元,是CPU操控硬件外设的唯一接口。
单片机所有外设(GPIO、定时器、串口、数码管、LED)的工作状态、功能配置,全部通过读写寄存器实现。
寄存器分为三类:
-
控制寄存器:写入数据,配置外设工作模式(IO方向、波特率、定时模式等)
-
状态寄存器:读取数据,获取外设当前工作状态(接收完成标志、溢出标志、电平状态等)
-
数据寄存器:专门存储外设收发的业务数据(串口收发数据、AD采样数据等)
核心本质:编程操作硬件,本质就是读写对应外设的寄存器。
四、操作LED和数码管用到了哪些寄存器?(51单片机)
51单片机中IO口均为特殊功能寄存器(SFR),直接操控即可实现硬件控制。
1、LED操作寄存器
直接使用通用IO口寄存器:P0、P1、P2、P3,通过输出高低电平,控制LED点亮、熄灭。
2、数码管操作寄存器
数码管控制分为段选 和位选,对应两组IO寄存器:
-
段选寄存器:常用P0口,传输段码数据,控制数码管显示具体数字/字符
-
位选寄存器:常用P2口,控制具体哪一位数码管被点亮,实现多位切换显示
补充:STM32中则使用GPIO模式寄存器、输出数据寄存器等配置IO功能。
五、NPN型三极管和PNP型三极管的区别
三极管是嵌入式开关电路核心器件,二者核心区别集中在结构、导通条件、控制电平、电流方向:
-
内部结构:NPN为N-P-N三层结构;PNP为P-N-P三层结构
-
导通条件:NPN:基极电压 > 发射极电压;PNP:发射极电压 > 基极电压
-
控制电平 :NPN 高电平导通 ;PNP 低电平导通
-
电流方向:NPN电流从集电极、基极流入,发射极流出;PNP电流从发射极流入,集电极、基极流出
工程常用:NPN多用于低端开关控制,PNP多用于高端开关控制。
六、数码管显示数值的操作流程(动态扫描,必考)
实际项目中多位数码管均采用动态扫描,利用人眼视觉暂留原理,循环点亮每一位,实现稳态显示,流程如下:
-
根据需要显示的数字,查询数码管段码表,获取对应段码数据;
-
将段码数据传输到段选IO口,配置数码管显示内容;
-
通过位选IO口,选通当前需要点亮的单路数码管;
-
短暂延时,利用视觉暂留让人眼感知稳定显示;
-
关闭当前位数码管(消隐处理),避免显示重影、拖影;
-
切换下一位数字,重复上述步骤,循环扫描所有数码管。
补充:静态数码管无需扫描,每一位独立锁存,但占用IO资源多,极少用于多位显示场景。
七、C语言位运算:指定位清0、指定位置1
嵌入式开发核心常用操作,不影响其他位,仅操作目标位,适配寄存器配置。
定义:变量reg为寄存器数据,n为目标操作位(从0开始计数)
原理:按位或 |,1或任意数结果为1,不影响其他位
1、指定位置1
c
reg |= (1 << n); // 将第n位置1
2、指定位清0
原理:按位与 & 配合取反 ~,0与任意数结果为0,不影响其他位
c
reg &= ~(1 << n); // 将第n位清0
拓展:指定位翻转
c
reg ^= (1 << n); // 第n位0变1、1变0
总结
以上7道题目覆盖嵌入式入门硬件架构、存储原理、寄存器操作、器件原理、外设开发、代码基础全部核心考点,是面试、复试、期末考核的高频题库,熟练掌握可应对绝大多数嵌入式基础考核。
码字不易,点赞收藏不迷路!持续更新单片机/嵌入式面试干货~