说明:
- 面试群,群号: 228447240
 - 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);
 - 文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要经过认真思考,答案不重要,重要的是通过题目理解所考知识点,好应对题目更多的变化;
 - 博主与大家一起学习,一起刷题,共同进步;
 - 写文不易,麻烦给个三连!!!
 
1.IO口工作方式(学过STM32的人应该很熟悉)
答案:
 
 上拉输入、下拉输入、推挽输出、开漏输出。  
 
 
 
2.请说明总线接口USRT、I2C、USB的异同点
答案:
 
 (串 
 / 
 并、速度、全 
 / 
 半双工、总线拓扑等)  
 
| 总线接口 | 串/并 | 同步/异步 | 速率 | 工作方式 | 用线 | 总线拓扑结构 | 通信距离 | 
| UART | 串 | 异步 |   慢 波特率设置  | 全双工 |   2线 Rx、Tx  | RS485支持总线式、星形、树形 |   远 最远1200  | 
| I2C | 串 | 同步 | 慢 | 半双工 |   2线 SDA、SCL  | 总线型 | 近 | 
| SPI | 串 | 同步 | 快 | 全双工 |   3线或4线 SCLK、SIMO、 SOMI、SS(片选)  | 环形 | 远 | 
| USB | 串 | 同步 | 快 | 半双工 |   4线 Vbus(5V)、GND、D+、D-(3.3V)  | 星形 | 近 | 
3.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的任何电平变换会看做是总线的起始信号或者停止信号。  
 
 
  
  
 4.单片机的SP指针始终指向
 
  答案: 
 
 
  
  
   栈顶。 
  
 
   
  5.IIC总线在传送数据过程中共有三种类型信号
 
  答案: 
 
 
  
  
   它们分别是:开始信号、结束信号和应答信号。  
  
 
   
  6.FIQ中断向量入口地址,IRQ呢
 
  答案: 
 
 
  
  
   FIQ 
   和 
   IRQ 
   是两种不同类型的中断, 
   ARM 
   为了支持这两种不同的中断,提供了对应的叫做 
   FIQ 
   和 
   IRQ 
   处理器模式(ARM 
   有 
   7 
   种处理模式)。 
  
 
  
   FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018。  
  
 
 7.SPI四种模式,简述其中一种模式,画出时序图
答案:
 
  在芯片资料上极性和相位一般表示为 
  CPOL 
  ( 
  Clock POLarity 
  )和 
  CPHA(Clock PHAse),  
  极性和相位组合成4 
  种工作模式。 
 
 
 | CPOL | CPHA | |
| 模式1 | 0 | 0 | 
| 模式2 | 0 | 1 | 
| 模式3 | 1 | 0 | 
| 模式4 | 1 | 1 | 
 
   spi 
   四种模式 
   SPI 
   的相位 
   (CPHA) 
   和极性 
   (CPOL) 
   分别可以为 
   0 
   或 
   1 
   ,对应的 
   4 
   种组合构成了 
   SPI 
   的 
   4 
   种模式(mode) 
  
 
   
   
    时钟极性 
    CPOL:  
    即 
    SPI 
    空闲时,时钟信号 
    SCLK 
    的电平( 
    1: 
    空闲时高电平 
    ; 0: 
    空闲时低电平) 时钟相位CPHA: 即 
    SPI 
    在 
    SCLK 
    第几个边沿开始采样( 
    0: 
    第一个边沿开始 
    ; 1: 
    第二个边沿开始)  
   
 
   
   sd 
   卡的 
   spi 
   常用的是 
   mode 0  
   和 
   mode 3,这两种模式的相同的地方是都在时钟上升沿采样传输数据,区别这两种方式的简单方法就是看空闲时,时钟的电平状态,低电平为 
   mode 0  
   ,高电平为 
   mode 3 
   。  
  
 
   
   
  8.讲一讲冯诺依曼和哈佛体系的区别
 
  答案: 
 
 
  
  
   哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。目前使用哈佛结构的中央处理器和微控制器有很多,ARM9 
   、 
   ARM10 
   和 
   ARM11 
   , 
   51 
   单片机属于哈佛结构。  
  
 
   
   
    冯 
    · 
    诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 
   
 
    
   9.USART为什么一次只能发送一个字节? 先发高位还是低位
答案:
考虑数据准确性,时间误差的累计。
比如你发送的数据为1111 0000 那么接收方如何知道你连续发送了几个1几个0,这个时候就需要波特率,通过计算时间可以知道你发送了几个连续1或0,因为波特率规定了每发一个Bit的时间,但是发送方和接收方可能存在时间误差,会导致累计时间误差,导致数据不正确,所以这个时候就需要规定每次只能发送一个字节数据,就可以避免累计时间误差,这也是异步导致的。
先发低位。
10.串口通信存在的问题
答案:
1)串口只是规定了协议,即帧格式,用高电平表示1,低电平表示0,但是在不同的处理器中这个定义是不一样的,电气特性不一样,所以这两个处理器是不能直接连接的。
2)抗干扰能力差,使用的是 TTL 信号表示0和1。
3)通信距离短,只能用于一个电路板上的两个不同芯片之间的通信。
由于串口通信存在的问题就出现了RS232、RS485协议,但是软件编程还是串口那样编程,因为改的只是硬件上的电性。

![【蓝桥杯冲冲冲】[NOIP2003 普及组] 数字游戏](https://img-blog.csdnimg.cn/img_convert/5fbf457faea6bf146289b47af5e9ef11.png)
















