本系列将按照类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。
第六章 单片机常见面试题
1、ROM与RAM
这一点我另一篇文章讲解过,这里放链接:
ROM与RAM的区别
2、 IO口工作方式(学过STM32的人应该很熟悉)
上拉输入、下拉输入、推挽输出、开漏输出。
3、请说明总线接口USRT、I2C、USB的异同点
(串/并、速度、全/半双工、总线拓扑等)
4、IIC协议时序图
必须会画出来,我面试被问到过,让我画,我画了个大概。(面试驱动岗必须会)
IIC协议有两根线,一根SCL时钟线,一根SDA数据线,如图可以看到开始信号和结束信号的电平状态。开始后,因为IIC总线可以挂在很多设备(不超过8个),所以先发送一个设备地址,选中这个设备,设备地址最后一位代表了是写还是读。选中设备后,再发送寄存器地址,代表选中某个寄存器,再开始传输数据。
八位设备地址=7位从机地址+读/写
给地址添加一个方向位位用来表示接下来数据传输的方向,
0表示主设备向从设备(write)写数据,
1表示主设备向从设备(read)读数据
开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。SCL=1时 数据线SDA的任何电平变换会看做是总线的起始信号或者停止信号。
IIC我也有一篇文章有讲解,请看链接:
IIC总线最多可以挂多少个设备
5、单片机的SP指针始终指向
栈顶
6、IIC总线在传送数据过程中共有三种类型信号:
它们分别是:开始信号、结束信号和应答信号。
7、FIQ中断向量入口地址:
FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。
FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018。
8、SPI四种模式,简述其中一种模式,画出时序图
面试驱动岗位,需要会画其中一种方式。模式0或者模式3。画出通信时序图。
在芯片资料上极性和相位一般表示为CPOL(Clock POLarity)和CPHA(Clock PHAse), 极性和相位组合成4种工作模式。
spi四种模式SPI的相位(CPHA)和极性(CPOL)分别可以为0或1,对应的4种组合构成了SPI的4种模式(mode)
Mode 0 CPOL=0, CPHA=0
Mode 1 CPOL=0, CPHA=1
Mode 2 CPOL=1, CPHA=0
Mode 3 CPOL=1, CPHA=1
时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(1:空闲时高电平; 0:空闲时低电平) 时钟相位CPHA: 即SPI在SCLK第几个边沿开始采样(0:第一个边沿开始; 1:第二个边沿开始)
sd卡的spi常用的是mode 0 和mode 3,这两种模式的相同的地方是都在时钟上升沿采样传输数据,区别这两种方式的简单方法就是看空闲时,时钟的电平状态,低电平为mode 0 ,高电平为mode 3。
具体的通信过程请自行百度,2021年秋招大疆笔试题考了这道题。
第七章 杂项面试题
1、讲一讲冯诺依曼和哈佛体系的区别
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。目前使用哈佛结构的中央处理器和微控制器有很多,ARM9、ARM10和ARM11,51单片机属于哈佛结构。
冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
2、面向对象编程的三大特性
以及重载的意思。重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
3、http默认端口号
80
4、linux中mysql数据库默认的端口是
3306
5、编程习惯小知识点
C语言编程中,单片机平台,一般有.c和.h文件,如果一个人在.h文件中定义了一个变量,会有什么后果。(讨论编程习惯的问题,我一般是只在.h文件中声明函数,不会做变量定义;另外,编程中每一个模块都会有对应的.c和.h文件,最终的总程序自己定义一个comm.c和comm.h去调用各个模块,这样的习惯我觉得还行)
if语句中如果是或运算( | ),第一个条件满足时,第二个条件还会判断吗。或运算的话,当然不会,因为 0|1=1,中断了
对于代码整洁方面,我已经在我的技术交流群发了文件,推荐《代码整洁之道》、《编码:隐匿在计算机软硬件背后的语言》、《程序员的自我修养》、《华为内部代码规范》
【编辑推荐】
【责任编辑:姜华 TEL:(010)68476606】
点赞 0