MCU单片机面试题:第一部分

单片机面试中可能出现的问题

1、你在的上家公司主要做什么的,主营产品?
答:上家公司主要做互联网之类的产品(最好是根据你写的公司然后根据你做的项目去说一点)
主营产品(这里是个坑,特别注意,你做的项目的研发时间,别上来你刚做的项目就开始投入量产这个估计连你自己都不信把!)可以说个几项特别出名的。
2、你在上一家公司主要负责什么?
答:这个大概就可以万能的套用,我在上家公司主要是负责项目的环境搭建,负责一些传感器的外围搭建以及通信协议的底层配置,还会参与项目编程、调试以及模块测试,并且还有代码的编写和调试以及验证功能是否实现。
3、C语言和C++都开发过项目吗?代码量有多少?
答:就按你简历所写的项目去说就好(个人感觉还可以说一点关于自己平时做的小项目),项目代码量不能太少也不能太多基本就是(3-5W行)这个基本就可以。
4、系统、驱动、单片机开发,你在上一家主要负责哪一块?
答:这个主要就是说关于你想做的方面单片机还是系统(当然你不可能这个公司主要做的系统的,你要说你是单片机做的怎样,这就属于无中生有),然后可以说说参与项目时大概做的都是文档编写、环境搭建之类的。
5、都用过哪些单片机? 单片机的特点?
答:常用单片机的型号有8 位单片机、16位单片机、32位单片机。
①、8 位单片机
这类单片机的控制功能较强,品种最为齐全,由于其片内资源丰富和功能强大,主要在工业控制、智能仪表、家用电器和办公自动化系统中应用。

②、16位单片机
CPU是16 位的,运算速度普遍高于8 位机,有的单片机的寻址能力高达1MB,片内含有A/D 和D/A转换电路,支持高级语言。

③、32位单片机
32位单片机的字长为32位,是单片机的顶级产品,具有极高的运算速度。代表产品有Intel公司的MCS-80960系列、Motorola公司的M68300系列、Hitachi公司的Super H(简称SH)系列等。
单片机的特点:
①、低功耗3种低功耗模式
休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。

②、调试模式
串行调试(SWD)和JTAG接口。

③、DMA
12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。3个12位的us级的A/D转换器(16通道)

④、A/D测量范围
0-3.6V。双采样和保持能力。片道上集成一个温度传感器。

6、描述UART和485接口的异同?
答:数据传输可以通过两种方式:串行通信和并行通信。 简单理解: 串行:一条数据线,一位一位依次传输,适用远距离; 并行:多条数据线,各个位同时传输,适用短距离。

485通讯与串口通讯没有区别。485通讯就是串口通讯中的一种,485通讯和串口通讯是“属于”关系。
通讯需要电源线+AB信号线共4根线,信号线需要用屏蔽双绞线,最远传输距离一千米左右,在实际施工布线中有其局限性。
UART是指外设和计算机间,通过数据信号线 、地线、控制线等。
7、SPI接口的物理引脚、模式、以及如何确定单片机使用哪一种SPI的模式?
答:SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时),这四根线分别是MISO、MOSI、SCLK、CS。

SPI通信有4种不同的模式,不同的从设备可能在出厂是就是配置为某种模式,这是不能改变的,但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式。
时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿:

CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时;

CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时;

CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿;

CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿。

在高电平有效状态时,第一边沿为上升沿,第二边沿为下降沿;在低电平有效状态时,第一边沿为下降沿,第二边沿为上升沿。
SPI通信协议(知乎)
8、模拟SPI和硬件SPI的区别是什么?
答:硬件 SPI是芯片的外设功能,而模拟的SPI是用GPIO实现的
硬件SPI因为有专用的寄存器支持,所以很少占用CPU资源,但是并不是每一款处理器都能提供SPI,而且有时候即使有SPI硬件接口,可能因为数量不够或者管脚被占用,导致硬件SPI不能使用,这时候就可以使用GPIO模拟SPI通讯,这样的好处是可以使用任意GPIO管脚实现SPI通讯,并且代码通用性很强,可以在不同处理器甚至不同架构之间移植,比较方便。
9、MODBUS的协议帧格式?通信模式有几种?
答:MODBUS通信模式最主要有三种:RTU模式,ASCII模式和TCP模式。
Modbus TCP基于以太网和TCP/IP协议,Modbus RTU和Modbus ASCII则是使用异步串行传输(通常是RS-232/422/485)。
RTU模式:地址+功能+数据+校验
ASCII模式:起始 +地址码+功能码+数据+校验+回车换行
注意(RTU使用CRC校验,ASCII使用LRC校验。)
ModbusTCP的数据帧可分为两部分:MBAP+PDU
MBAP为报文头,长度为7字节:事务处理标识+协议标识+长度+单元标识符(1)
10、MQTT协议基本数据帧包含哪些数据?MQTT的通信过程?Topic的作用?
答:了解下MQTT做啥的:MQ 遥测传输 (MQTT) 是一种基于代理的轻量级发布/订阅消息传递协议,旨在开放、简单、轻量级且易于实现。
固定头部+可变头部+消息体
协议说白了就是对于双方通信的一个约定,比如传过来一段字符流,第1个字节表示什么,第2个字节表示什么。。。。一个约定。
MQTT学习与数据帧理解:https://www.cnblogs.com/haili-zheng/p/13841603.html
 MQTT协议需要客户端和服务器端通讯完成,在通讯的过程中,MQTT的协议有三中身份:发布者(pubulish)、代理(broker)(服务器)、订阅者(subscribe)
其中消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。 
MQTT传输协议的消息分为:主题(topic)和负载(payload)两部分:
(1)topic:主题可以理解为消息的类型(比如想要数据变化上送),订阅者订阅后,就会收到该主题的消息内容(payload)
(2)payload:消息的内容,指订阅者具体要使用的内容。
协议地址:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html
11、FreeRTOS内核是如何管理的任务?任务之间的通信有哪些?项目中如何分配任务空间大小?什么情况下使用?
答:关于FreeRTOS就要考虑裸机和实时系统的区别。
裸机:早期嵌入式开发没有嵌入式操作系统的概念 ,直接操作裸机,在裸机上写程序,比如用51单片机基本就没有操作系统的概念。通常把程序设计为前后台系统,主要分为两部分:前台系统和后台系统。这样的程序包括一个死循环和若干个中断服务程序(应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统;中断服务程序用于处理系统的异步事件,也就是前台系统),前台是中断级,后台是任务级。

RTOS:RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。 RTOS操作系统:FreeRTOS,UCOS,RTX,RT-Thread,DJYOS等。 RTOS操作系统的核心内容在于:实时内核。

分时操作系统:一台计算机采用时间片轮转的方式同时为几个、几十个甚至几百个用户服务的一种操作系统,如:UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。
实时操作系统:当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。永远执行最高优先级,最高优先级任务只有1个。如:UCOS-II/III。
半实时操作系统:允许任务具有相同的优先级。如:FreeRTOS。

实时操作系统还分为硬实时和软实时:硬实时是规定时间必须执行完成的,软实时就是对于你超出规定的时间系统会有一定的容忍程度。

Free 即免费的,RTOS 全称是 Real Time Operating System,中文就是实时操作系统。注意,RTOS 不是指某一个确定的系统,而是指一类系统。比如 uC/OS,FreeRTOS,RTX,RT-Thread 等这些都是 RTOS 类操作系统。
操作系统允许多个任务同时运行,这个叫做多任务。实际上,一个处理器核心在某一时刻只能运行一个任务。操作系统中任务调度器的责任就是决定在某一时刻究竟运行哪个任务。任务调度在各个任务之间的切换非常快,就给人们造成了同一时刻有多个任务同时运行的错觉。
FreeRTOS 是 RTOS 系统的一种,FreeRTOS 十分的小巧,可以在资源有限的微控制器中运行,当然,FreeRTOS 不仅局限于在微控制器中使用。但从文件数量上来看 FreeRTOS 要比uC/OSII 和 uC/OSIII 小的多。
选择FreeRTOS:
FreeRTOS是免费的,学习RTOS操作系统的话 uC/OS是首选,但要做产品的话,免费的FreeRTOS操作系统就是个不错的选择。
许多半导体厂商产品的 SDK(Software Development Kit—软件开发工具包) 包就使用 FreeRTOS 作为其操作系统,尤其是 WIFI、蓝牙这些带协议栈的芯片或模块。
简单,因为FreeRTOS 的文件数量很少。
FreeRTOS操作系统特点:
FreeRTOS 的内核支持抢占式,合作式和时间片调度。
提供了一个用于低功耗的 Tickless 模式。
系统的组件在创建时可以选择动态或者静态的 RAM,比如任务、消息队列、信号量、软件定时器等等。
FreeRTOS-MPU 支持 Corex-M 系列中的 MPU 单元,如 STM32F429。
FreeRTOS 系统简单、小巧、易用,通常情况下内核占用 4k-9k 字节的空间。
高可移植性,代码主要 C 语言编写。
高效的软件定时器。
强大的跟踪执行功能。
堆栈溢出检测功能。
任务数量不限。
任务优先级不限。

12、气象站的项目设备尺寸多大?在项目中主要负责了哪些东西?天气是如何获取到的?天气数据都有哪些?如何实现的联网?为什么不直接用esp8266开发?
答:在项目中主要负责底层环境的搭建、天气数据的获取、以及EmWin移植UI界面设计以及串口的调试。
天气获取是从心知天气上获取的,使用ESP8266访问心知天气,获取心知天气服务器信息:
域名:https://www.seniverse.com/
1)注册账号,开通服务
2)查看API文档:如何访问API接口
HyperData 数据产品简介 🚀 · 语雀 (yuque.com)
3)电脑WEB端直接打开
https://api.seniverse.com/v3/weather/now.json?key=your_api_key&location=beijing&language=zh-Hans&unit=c
4)数据转换:https://www.bejson.com/
(发送AT—》接收保存天气网站获得信息 —》解析信息)

天气信息:天气状况,温湿度,摄氏度,地区

1.测试模块(AT)
2.设置STA模式(AT+CWMODE=1)
3.连接wifi(AT+CWJAP=“xyd”,“12345678”)注意:不能出现中文字符 该热点必须是
2.4G
4.连接服务器(AT+CIPSTART=“TCP”,“122.114.122.174”,46709)注意:wifi要连接成功
长时间没有动作服务器会自动断开
5.开启透传(AT+CIPMODE=1)
6.开始发送数据(AT+CIPSEND)注意:进入透传模式 AT指令不起作用
7.退出透传模式(+++) 注意:不能加换行
8.退出服务器(AT+CIPCLOSE)

ESP8266获取的信息josn模式,是乱码的,并且环境搭建在32上。

13、平常使用的屏幕尺寸多大?设备如何供电的?什么型号的电池?功耗多大?能用多久电池?
答:一般回答就是7寸或者10寸的只说大的,不说小的(当然做智能手环这说个7寸的屏也不太合适把)
纽扣电池:40mAh-150mAh
3.5-5v直流电压供电

14、智能云家居的作用、应用场景、整体项目功能?
答:智能家居系统实现的功能为家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段,以达到节能环保为客户提供方便舒适的家庭居住环境。

智能家居系统通过各类传感器采集家居环境数据,由WIFI模块将环境数据通过MQTT协议发送到云端,通过Web界面实时监控数据,并可以通过Web界面发送指令给STM32单片机,实现对家居设备各硬件模块的控制管理。系统通过DHT11温湿度传感器和MQ空气质量传感器来检测家居环境数据并实时上报到云端

智能家居项目:https://blog.csdn.net/qq_51021850/article/details/123559013
15、中控板子的作用、节点板的作用?
答:节点板:信息采集以及显示
DHT11,MQ2/MQ135,光照数据。
具体传感器:根据自己的硬件电路决定。
– 编程的前提:必须先去看原理图。
数据传输:节点数据传输给中控
– 通过485传输
数据显示:OLED

中控板:数据显示,控制,数据上传云端
数据显示:LCD
控制:触摸屏
设计界面:STemwin
数据上传云端: 4G–有人云 / ESP8266–阿里云

物联沃分享整理
物联沃-IOTWORD物联网 » MCU单片机面试题:第一部分

发表评论