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怎么配,
各种设备怎么初始化,让开发者专注于软件上的开发。

单片机面试知识点汇总相关推荐

  1. 中高级前端面试知识点汇总

    1.1.什么是HTML语义化?有什么好处? 根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析. 为了在没有 CSS 的情 ...

  2. 机器学习算法工程师面试知识点汇总

    机器学习算法工程师面试知识点汇总 机器学习 梯度下降 k-means 1 × 1卷积核 模型 SVM Bagging & Boosting 随机森林 激活函数 Sigmod tanh ReLU ...

  3. Linux运维工程师面试知识点汇总(一)

    Linux运维工程师面试知识点汇总(一) 一.Linux命令知识点 1.查看/var/log/下的文件数 2.shell下随机密码生成(32位) 3.随机生成8位密码(大小写和数字混合) 4.随机生成 ...

  4. 机器学习、深度学习面试知识点汇总

    作者丨Oldpan 来源丨oldpan博客 编辑丨极市平台 导读 本文总结了一些秋招面试中会遇到的问题和一些重要的知识点,适合面试前突击和巩固基础知识. 前言 最近这段时间正临秋招,这篇文章是老潘在那 ...

  5. ES6面试 知识点汇总(全)

    近期在复习ES6,针对ES6新的知识点,以问答形式整理一个全面知识和问题汇总.(全干货,适合对ES6有一定理解的同学复习,以及ES6面试.) 一.问:ES6是什么? 答: ES6是新一代的JS语言标准 ...

  6. 2020秋招CV面试知识点汇总

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 1.NMS https://blog.csdn.net/lanchunhui/article/ ...

  7. 机器学习面试知识点汇总(Machine Learning Core Concepts Collection)

    Core Concepts List 我们将在这一部分罗列一些面试可能涉及到的小的知识点,只作巩固和补充,如果需要详细了解,还需要详细查证相关的论文. 1.在预测阶段执行 BN 是必要的吗?(没必要也 ...

  8. 超详细前端JavaScript面试知识点汇总

    最近在整理 JavaScript 的时候发现遇到了很多面试中常见的面试题,本部分主要是作者在 Github 等各大论坛收录的 JavaScript 相关知识和一些相关面试题时所做的笔记,分享这份总结给 ...

  9. C++面试知识点汇总

    暂时存个档,可能有不足之处,欢迎指正. C++ 基础 new ,delete,new[],delete[],malloc,free之间的区别? new,delete与new[],delete[]区别在 ...

最新文章

  1. Linux的10个游戏
  2. 【C 语言】字符串操作 ( 使用 数组下标 操作字符串 | 使用 char * 指针 操作字符串 )
  3. 【Linux开发】彻底释放Linux线程的资源
  4. linux内核亲和性,Linux中CPU亲和性(go)
  5. C++中的默认初始化
  6. Oracle之不可见索引
  7. html div bgcolor,HTML body bgcolor transparent
  8. C#读取匿名对象的属性值的方法总结
  9. matlab进化树的下载,MEGA进化树下载
  10. soui 设置边框_UI神器-SOUI
  11. macOS 应用程序dmg 已损坏无法打开解决办法
  12. 7-3 判断素数 (10 分)
  13. confluence 下admin用户密码恢复方法
  14. iOS开发-class_ro_t和class_rw_t的区别
  15. mysql 公历变农历_巧用SQL函数让公历变农历
  16. 浙商证券显示计算机丢失,无法启动此程序,计算机丢失d3dx-942.dll,这个怎么解决啊?...
  17. 用户配置 计算机配置文件,Win10系统创建自定义默认用户配置文件
  18. 二叉平衡树的基本操作(完整代码)
  19. 微信小程序实现点赞与取消点赞功能
  20. 【netron】模型可视化工具netron

热门文章

  1. java实现第七届蓝桥杯碱基
  2. 易经中人生的六大阶段 :潜、现、惕、跃、飞、亢 你在第几个阶段?
  3. 超简单甘特图教程,一招教你如何管理项目进程
  4. ajax流式传输,如何使用AjaxFileUpload将图像文件流式传输到SQL数据源?
  5. 各种 maven 依赖
  6. 激光测距VL53L0X中断模式 源代码 已测试
  7. html做一个qq气泡,HTML5实现QQ聊天气泡效果
  8. ChatGPT + MindShow 制作PPT
  9. 腾讯云Linux服务器搭建(八) 服务器硬盘容量的监视脚本实现
  10. dell G3 游匣 迁徙至 ubuntu ( i7-9750H GTX1660ti mobile) 显卡安装问题总结 以及 apt 下载速度慢的问题