汇总单片机面试常见知识点

GPIO

  1. IO有哪三种常用方式?
  2. 输入模式:

    1. 浮空输入:对I/O口当前电平进行输入,通常用于读取I/O口输入,输入状态是不确定的。

    2. 上拉输入:对I/O口置高电平输入。

    3. 下拉输入:对I/O口置低电平输入,上拉和下拉电阻经常用于在不确定GPIO输入时确定状态。

    4. 模拟输入:和另外三种输入方式不同,模拟输入的是模拟信号,一般用于AD转换。

    输出模式:(值得注意的是,输出模式的输出结果可以用输入模式读取。)

    1. 开漏输出:写入口与CPU相连。写入1时输出由外部上拉或下拉电阻决定电平;写入0时N-MOS管导通,电压为VSS,输出电平为低电平。

    2. 复用开漏输出:与开漏输出模式类似,但写入口不与CPU相连而是和片上的外设模块相连。

    3. 推挽输出:写入口与CPU相连。写入1时P-MOS管导通,N-MOS管截止,输出高电平;写入0时P-MOS管截止,N-MOS管导通,输出低电平。

    4. 复用推挽输出:与推挽输出模式类似,但写入口不与CPU相连而是和片上的外设模块相连。

    推挽输出和开漏输出的区别:

    推挽输出:可以输出强高低电平(VSS和VDD),连接数字器件。

    开漏输出:只能输出强低电平(VSS),高电平需要靠外部上拉电阻。输出相当于三极管集电极,电流吸收能力较好(20mA以内),适合做电流型的驱动。

  3. 状态怎么转换?

中断

什么是中断?

  1)中断请求:
  2)中断响应:
  3)现场保护:
  4)中断处理:
  5)恢复现场:
  6)中断返回:

中断的触发方式有哪些?

沿触发: 这是很最常见的触发方式,我们可以用数字电路的方法来解释它的特性。边触发应该应触发器来描述:  输入引脚(当作触发器的CLK) ----> 触发器——> 中断控制器 ,当输入引脚的相应的沿到来时,就会将触发器置1,并触发中断,触发器会一直保持电平1除非在ISR中用一条语句清0,否则会不断的触发中断,这也就是每次触发中断都要清0的原因。当有高优先级的中断运行后退出时,处理器检测到触发器的值为1,所以依然会进入中断服务程序。
 电平触发: 有的时候,边沿触发很容易产生毛刺并导致误中断,这时候就要使用电平触发,电平触发是持续触发,可以用数字电路的缓冲器来描述

哪些函数不能在中断中使用?

printf,malloc,free

什么叫不可重入函数?

中断与异常有何区别?

中断的响应执行流程是什么?

写一个中断服务需要注意哪些?

1、中断服务子程序设计原则是要快进快出,printf的实现会一直调用到底层逐个字节的打印输出,
这种IO操作效率很慢,不适合放到中断里面。如果有锁机制,可能会造成死锁。

中断和轮询哪个效率高?怎样决定是采用中断方式还是采用轮询方式去实现驱动?

中断是CPU处于被动状态下来接受设备的信号,而轮询是CPU主动去查询该设备是否有请求。凡事都是两面性,所以,看效率所以,看效率不能简单的说那个效率高。如果是请求设备是一个频繁请求cpu的设备,或者有大量数据请求的网络设备,那么轮询的效率是比中断高。如果是一般设备,并且该设备请求cpu的频率比较底,则用中断效率要高一些。主要是看请求频率。

中断优先级有哪些?

一种是抢占优先级,一种是固有优先级

单片机这种没有操作系统的,中断处理函数不能有输入参数也不能有函数返回

定时器

  1. 定时器的特殊工作模式有哪些?
  2. 定时器PWM?
  3. 如何实现PWM调速?
  4. 定时器中断?

通信协议

什么是异步传输和同步传输?

异步传输是面向字符的传输,而同步传输是面向比特的传输。

UART、IIC、SPI对比的优缺点?

SPI IIC UART三种通信方式的比较

      (1)UART(Universal Asynchronous Receive Transmitter):也就是我们经常所说的串口,基本都用于调试。

               主机和从机之间采用三根线,RX,TX,GND。TX是用来发送数据,RX是用来接收数据,这个过程中,收和发不是同一根线,所以它是全双工进行通信,GND 是地线;

       (2)IIC(Inter Integrated Circuit):

                它的通信只需要两根数据线,一个时钟线SCL和一个数据线SDA。只有一根数据线,所以是半双工通信,两条线上可以挂载许多设备(不同的设备会有不同的IIC地址)

       (3)SPI(Serial Peripheral Interface, 同步外设接口):

                是摩托罗拉开发的全双工同步串行总线,该总线大量在EEPROM,ADC,FRAM和显示驱动器之类的外设器件通信(通信速度比较慢);

                SPI是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,片选信号低电平有效。如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。

UART串口

usart和uart的区别?

首先从名字上看:

  UART:universal asynchronous receiver and transmitter通用异步收/发器

  USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器

  从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢?

  其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。如STM32的USART可以提供时钟支持ISO7816的智能卡接口。 USART支持流控制

在s3c2440中看到的是uart,而在一般新的芯片手册中看到的都是usart,虽然在以前也都看到过,原本以为这俩其实是相同的,以为只是不同芯片采用不同的名称而已,其实不然,uart全名叫通用异步收发传输器,在uart上追加同步方式的序列信号变换电路则称之为usart

UART 是一种通用串行数据总线,用于异步通信,全双工,

与UART的区别是USART具有发送部分有外部时钟输入驱动和波特率发生器,发送器有一个单独的写入缓冲器(发送UDR),一个串行移位寄存器、校验位发生器和用于处理不同帧结构的控制逻辑电路构成。使用写入缓冲器,实现了连续发送多帧数据无延迟的通信。其实USART是UART的增强型,只是比UART多了个同步功能,拥有独立的时钟驱动器,可以实现无延迟的数据传输。

uart优缺点?

优点

通信只需要两条数据线;
无需时钟信号;
有奇偶校验位,方便通信的差错检查;
只需要接收端和发送端设置好数据包结构,即可稳定通信;

缺点

数据帧最大支持9位数据;
不支持多主机或多从机的主从系统;

要配置什么参数?

时序?

传输速率?

RX为什么要上拉?

RX为什么要上拉?原因分析,是因为RX不上拉,悬空的话,电路的某些信号影响(比如射频,大功率器件),就容易误触发,进入接收中断。改成上拉就可以解决。

怎么传输浮点数?

串口如何接收不定长数据?

第一种:使用中断方式  第二种使用自定义结束符

软件怎么实现自动波特率检测?

IIC

  1. IIC的特点
  2. 数据有效性
  3. 三种信号
  4. 画IIC时序图
  5. 数据传输流程
  6. 为什么要上拉?
  7. IIC总线怎么实现?
  8. IIC工作速率
  9. 怎样用IO口模拟IIC?
  10. IIC如何进行读写操作?
  11. IIC总线仲裁机制是怎么样的?
  12. 主设备3.3v从设备1.8v,不使用电平转换如何通过搭电路实现通信(这题我在某次笔试中遇到过,不过至今仍不知道答案,有懂的大佬可以在下面评论或者私信我)

SPI

  1. 介绍SPI
  2. 最大传输速率受什么影响?
  3. 四种模式及其对应的时序图
  4. SPI如何读写?
  5. SPI总线怎么实现?

其他接口

DMA

  1. DMA是什么?
  2. 为什么要用DMA?
  3. DMA的实现机制是怎么样的?
  4. DMA与中断的比较

ADC

  1. 什么是ADC?
  2. ADC是怎么实现的?
  3. ADC种类有哪些?
  4. ADC获取的数据有哪些处理、滤波方法?
  5. ADC时钟由谁提供?

存储

  1. flash操作注意事项
  2. NAND FLASH和NOR FLASH的区别?
  3. 基于ROM的运行方式和基于RAM的运行方式有什么区别?
  4. MCU启动流程
  5. 简单说说你用过的STM32的一些芯片配置,CPU主频,flash和RAM的大小
  6. arm有几个寄存器?什么是CPSR,SPSR?什么时候用到?
  7. PC寄存器的作用是什么?
  8. 通用寄存器包括R0~R15,可以分为具体哪三类?
  9. ARM系统中,在函数调用的时候,参数是通过哪种方式传递的?
  10. ARM指令集分为几类?
  11. ARM处理器有几种工作状态?
  12. 什么是哈佛结构和冯诺依曼结构?

其他问题

  1. bootloader具体做了什么?
  2. 什么是交叉编译?
  3. 为什么需要交叉编译?
  4. 单片机main函数之前做了什么工作?
  5. 如何对绝对地址0x100000赋值?
  6. 51单片机种PSW代表什么?

STCR51
STM32
DSP430:
1、MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16 位超低功耗的混合信号处理器(Mixed Signal Processor)
。称之为混合信号处理器,主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。
2、MSP430是16位单片机,51是8位单片机
3、MSP430采用RISC精简指令集,单个时钟周期就可以执行一条指令,相同晶振,速度较51快12倍。
4、其它片上资源也是MSP较丰富。
Arudino:就是一个很方便的集成开发环境,有着各种各样的库,拥有很不错的生态,屏蔽掉了很多底层代码,不用再去头疼GPIO怎么配,
各种设备怎么初始化,让开发者专注于软件上的开发。
 

 

物联沃分享整理
物联沃-IOTWORD物联网 » 汇总单片机面试常见知识点

发表评论