1、说一下sram,flash memory,及dram的区别?
-
sram:静态随机存储。这里的静态是指这种存储器只需要保持通电,里面的数据就可以永远保持。但是当断电之后,里面的数据仍然会丢失。由于SRAM的成本很高,所以像诸如CPU的高速缓存,才会采用SRAM。
-
dram:动态随机存储,最为常见的系统内存。DRAM只能将数据保持很短的时间。为了保持数据,dram使用电容存储,所以必须隔一段时间刷新一次,如果存储电源没有被刷新,存储的信息就会丢失。
-
flash:flash内存即flash memory,全名叫flash eeprom memory,又名闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以字节为单位而是以固定的区块为单位,区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,EEPROM能在字节水平上进行删除和重写而闪存是按照区块擦写,这样闪存就比EEPROM的更新速度快,所以被称为FLASH erase eeprom,或简称flash memory。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。另一方面,闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM。
2、讲一下stm32的时钟系统
答:STM32微控制器的时钟系统由多个时钟源、时钟树和时钟控制器组成,用于提供系统时钟和外设时钟。以下是STM32时钟系统的主要组成部分:
- 1、外部时钟晶振:外部时钟源为STM32提供了稳定的时钟信号,通常为晶振或外部时钟信号,通常为晶振或外部时钟信号。
- 2、内部振荡器:STM32还集成了一个内部振荡器,可用于在缺少外部时钟源时提供基本时钟。
- 3、PLL(锁相环):PLL可以将输入时钟倍频或分频,提供更高的系统时钟速度。PLL还可以配置为多个时钟域,以支持多个时钟频率和时钟分频。
- 4、时钟树:时钟树是一个包含多个时钟分频器和多路选择器的层次结构,可将输入时钟源分配给各种系统和外设时钟域。
- 5、时钟控制器:时钟控制器用于配置时钟源、时钟树和时钟分频,以及为各种外设提供时钟信号。
- 通过配置STM32的时钟系统,可以控制各种外设的时钟速度和时钟源,并提供稳定的系统时钟。这对于保证系统性能和稳定性非常重 要。
3、C语言中堆和栈的区别;推挽输出是什么?
- 1、分配方式:栈是自动分配的,而堆是手动分配的。
- 2、内存分配大小:栈分配内存大小固定,堆分配的内存大小可以根据需要动态调整。
- 3、内存释放:栈的内存由系统自动管理,不需要手动释放;而堆的内存必须由程序员手动释放,否则会造成内存泄漏。
- 4、内存访问方式:栈的内存访问速度较快,因为它们是顺序分配的;而堆的内存访问速度较慢,因为它们是动态分配的。
- 推挽输出是一种电子电路输出方式,用于将微控制器的数字输出信号转换为高电平或低电平的电压输出。推挽输出通常由两个晶体管(PNP和NPN)组成,其中一个负责高电平,另一个负责输出低电平。在推挽输出电路中,当输出高电平时,PNP晶体管打开,NPN晶体管关闭,反之亦然。推挽输出电路常用于驱动电机、灯光等负载,具有较高的输出电流和电压稳定性。
4、假如一个单片机上电后不运行,这是为什么?
- 1、程序错误:单片机程序中的错误可能会导致单片机无法正常运行,例如,程序逻辑错误、死循环等。
- 2、外设故障:如果单片机依赖于外设进行操作,外设故障可能会导致单片机无法正常运行。例如,电源模块、时钟模块、存储器模块等出现故障。
- 3、电源问题:单片机供电不足或不稳定,可能会导致单片机无法正常运行。例如,电池电量不足、电源干扰等。
- 4、外部环境干扰:单片机可能会受到外部环境干扰,例如,电磁场干扰、静电干扰等。
答:如果单片机上电后不运行,需要进行一系列排查和调试。例如,检查程序是否正常、检查单片机是否收到外部干扰等。针对不同的问题,可能需要采取不同的解决方案。
5、一个温度传感器模块,按照正确的使用方式和参数指标,对人体皮肤测量之后,得到的温度一直都是35摄氏度,这是为什么?
- 1、温度传感器模块工作不正常:温度传感器可能出现故障或者损坏,导致无法正确测量温度。可以尝试更换传感器模块或者进行维修。
- 2、温度传感器模块读取数据不正确:温度传感器读取数据的方式可能不正确,导致读取的温度始终为35摄氏度。可以检查读取数据的代码是否正确。
- 3、测量位置不正确:人体皮肤温度的测量位置可能不正确,导致得到的温度始终为35摄氏度。可以尝试改变测量位置,例如测量腋下温度、耳温等。
- 4、测量环境温度恒定:如果测量环境的温度恒定为35摄氏度,温度传感器模块可能无法正确测量出人体皮肤的温度。可以将测量环境温度调整到与人体皮肤温度有一定差异的温度。
需要综合考虑以上因素进行排查,找出导致测量结果异常的原因。
6、请说一下51单片机的中断处理流程
答:51单片机的中断处理流程通常包括以下步骤:
- 1、中断请求:外部设备或者程序通过特定的方式发送中断按请求信号,使得51单片机进入中断响应状态。
- 2、中断优先级判断:当出现多个中断请求时,51单片机会根据中断优先级进行判断,优先处理优先级高的中断。
- 3、中断向量定位:51单片机通过中断向量表查找中断处理程序的入口地址,从而定位中断处理程序。
- 4、中断处理程序执行:51单片跳转到中断处理程序的入口地址处开始执行中断处理程序。
- 5、中断标志清除:在中断处理程序中,需要清除相应的中断标志位,表示该中断已被处理完毕。
- 6、恢复现场:如果中断处理程序改变了程序状态和寄存器内容,需要在中断处理程序执行完成后恢复现场,返回到原来的程序流程中。
- 7、继续执行原程序:恢复现场之后,51单片机会继续执行原来的程序流程。
需要注意的是,中断处理程序需要尽可能的短小精悍,避免执行时间过长导致其他中断无法得到及时响应,从而影响系统的实时性。同时,需要合理设置中断优先级,确保各个中断能够得到合理的响应和处理。
7、IIC协议
- 简介
IIC(Inter-Integrated Circuit)总线是一种有NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性
在CPU与被控IC之间、IC与IC之间进行双向传送,IIC通信速率一般为100kbps~400kbps。
PS:这里要注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI。 - IIC物理层
IIC有两条总线,一条双向的串行数据线SDA,一条串行时钟线SCL,IIC是半双工通信。
SDA(Serial data):串行数据线,用来传送数据。
SCL(Serial clock line):时钟线,用来控制数据发送的时序。
IIC总线上的每一个设备都有一个唯一的地址,以确保不同设备之间的访问互不干扰。 - IIC协议层
开始信号(start):SCL为高电平时,SDA由高电平向低电平跳变,标志着开始传输数据;
结束信号(stop):SCL为高电平时,SDA由低电平向高电平跳变,标志着结束传输数据;
应答信号(ACK、NACK):所有地址和数据都以8bit为单位传输,如果接收端正确接收了8bit数据,则回复一个bit的“0”——ACK信号,如果未正确接收8bit数据,则反之。
数据有效性:IIC信号在传输过程中,当SCL为高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变。只有当SCL处于低电平期间,SDA的高、低电平才可以交替变化。 - 数据传输:
写:起始位+从机地址&写位+应答+从机寄存器地址+应答+数据+应答+停止位
读:起始位+从机地址&读位+应答+从机寄存器地址+应答+数据+非应答+停止位
8、TCP/IP协议的三次握手和四次挥手
TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。
三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量确认数据发送、接收完毕后何时撤销联系,并建立虚连接。
四次挥手:即终止TCP连接,就是指TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。
-
三次握手
TCP协议位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。
三次握手原理:
第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;
第二次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;
第三次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。
-
四次挥手
-
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN赖终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
四次挥手原理:
第1次挥手:客户端发送一个FIN,用来关闭客户端和服务端的数据传从,客户端进入FIN_WAIT_1状态。
第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,yigeFIN占用一个序号),服务端进入CLOSE_WAIT状态;
第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。
第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入SLOSED状态,完成四次挥手。
9、介绍一下STM32的启动过程?
- 通过Boot引脚设定,寻找初始地址
- 初始化栈指针__initiala_sp
- 指向复位程序 Reset_Hander
- 设置异常中断HardFault_Handler
- 设置系统时钟SystemInit
- 调用C库函数_main
10、串行通信方式介绍
- 同步通信:I2C半双工,SPI全双工
- 异步通信:RS485半双工、RS232全双工
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)