每天进步一点点(一)

2023-05-16

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的启动过程?

  1. 通过Boot引脚设定,寻找初始地址
  2. 初始化栈指针__initiala_sp
  3. 指向复位程序 Reset_Hander
  4. 设置异常中断HardFault_Handler
  5. 设置系统时钟SystemInit
  6. 调用C库函数_main

10、串行通信方式介绍

  • 同步通信:I2C半双工,SPI全双工
  • 异步通信:RS485半双工、RS232全双工
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每天进步一点点(一) 的相关文章

随机推荐

  • git使用gitee 仓库教程详细

    1 先再本地创建 一个git 仓 先创建一个文件夹 在文件夹内运行git 执行git init 命令生成git 仓库 生成git 仓库之后 创建一个想要上传到云库的文件 xff0c 然后通过 git add 添加所有文件命令 添加跟踪 也叫
  • realsenseD435i运行vins-mono

    目录 写在前面准备编译vins mono 修改launch realsense vins mono 运行参考完 写在前面 1 本文内容 realsenseD435i运行vins mono 2 平台 ubuntu1804 ros melodi
  • Hive源码阅读--SQL的语法解析和语义分析--Driver

    前面五个类 xff0c 殊途同归都是CliDriver类 xff0c 他负责接受用户在命令行上输入的信息 xff0c 然后准备执行并将执行的结果返回 而真正底层干事情的是Driver xff0c 他将接受到的命令编译 xff0c 优化为MR
  • C语言字符串结束符“\0”

    C语言字符串结束符 0
  • STM32 PCB设计

    看了自己2018年2月画的PCB和现在2019年7月画的PCB xff0c 不多说了 不多说了 不多说了上图 96 2018年2月 96 2019年7月 大家可以明显看到第一块板子简直就是惨不忍睹 说几点PCB设计注意事项和自己的感想 xf
  • Java 调用第三方接口方法

    Java 调用第三方接口方法 一 通过JDK网络类Java net HttpURLConnection 1 java net包下的原生java api提供的http请求 使用步骤 xff1a 1 通过统一资源定位器 xff08 java n
  • docker基本命令及使用实例

    docker基本命令 特别鸣谢 xff1a B站up主 狂神说java的视频 xff0c 让我能短时间了解docker docker文件系统 docker镜像为分层设计 xff0c 相比于全量的虚拟机镜像 xff0c 少了引导程序bootf
  • ubantu 系统分区介绍

    假设分区有40个G 1 500M引导分区 2 10个G的swap分区 swap是一个内存交换空间 xff0c 当内存溢出 xff0c 或者计算机打算休眠的时候 会将数据存在swap分区中 在windows系统中是三个文件 swap的大小通常
  • H3C交换机常用命令(初学)

    一 显示交换机当前的一些配置信息 1 display current configuration 显示当前的一些配置信息 xff0c 如vlan xff0c 端口详细信息 2 display saved configuration 显示下次
  • Linux下的Tcp通信项目范例【demo】

    一 适合阅读对象 2 4个月的初学者 C语言编程方向 xff09 二 项目内容 xff1a 设计一个可以符合多用户进行线上查阅乐器的商城 xff0c 要求可以多个用户查看 xff0c 管理员可随时修改内容 xff0c 普通用户仅可查看 xf
  • 平衡小车之陀螺仪调参

    一 平衡小车 平衡小车作为控制进阶 xff0c 成为每个学习PID控制算法者的必经之路 xff0c 可难可易 xff0c 找到方法则非常容易 xff0c 找不到方法可能盲调数天也没有收获 要让小车平衡 xff0c 我认为需要掌握的技能有几点
  • 常用的字符函数和字符串函数

    一 分类 求字符串长度 xff1a strlen长度不受限制的字符串函数 xff1a strcpy strcat strcmp长度受限制的字符串函数 xff1a strncpy strncat strncmp字符串查找 xff1a strs
  • 成功解决Command "python setup.py egg_info" failed with error code 1 in C:\Users\AppData\

    成功解决Command amp quot python setup py egg info amp quot failed with error code 1 in C Users AppData 目录 解决问题 解决方法 解决问题 Com
  • 解决JetPack4.2 自制载板无法开机

    使用下面方法会导致无法连接显示器 xff01 xff01 xff01 1 源码下载 https developer nvidia com embedded downloads 选择 L4T Sources 下载 L4T JAX and TX
  • Android开发技巧 (五) —— Lambda表达式

    Lambda表达式本质是一种匿名方法 xff0c 它既没有方法名 xff0c 也没有访问修饰符和返回值类型 xff0c 用它来写代码更简洁 xff0c 更易懂 Lambda是Java8的新特性 xff0c 所以要在app build gar
  • 树莓派4B安装ubuntu mate20 +putty和vncsever远程登录+安装ROS

    新买了树莓派4B xff0c 安装环境费了好大功夫 xff0c 终于找到一套可以用的方案 xff0c 记录一下 基本 xff1a 树莓派4B一块64G内存卡电源 显示器 鼠标 键盘 安装系统和换软件源 参考树莓派4B安装Ubuntu Mat
  • jsp医疗辅助诊断管理系统servlet开发mysql数据库web结构java编程计算机网页项目

    一 源码特点 JSP医疗辅助诊断管理系统是一套完善的java web信息管理系统 xff0c 对理解JSP java编程开发语言有帮助serlvet 43 dao 43 bean 模式开发 xff0c 系统具有完整的源代码和数据库 xff0
  • MATLAB2019a中文设置的一些说明

    MATLAB2019a中文设置的一些说明 问题 xff1a 今天打开matlab发现是英文的 xff0c 想要修改成中文 网上方法 xff1a preferences xff08 预设项 xff09 General xff08 常规 xff
  • ERROR: Could not install packages due to an EnvironmentError: [Errno 13] 权限不够的解决办法

    关于错误 xff1a ERROR Could not install packages due to an OSError Errno 13 Permission denied 39 usr local label cn txt 39 Co
  • 每天进步一点点(一)

    1 说一下sram xff0c flash memory xff0c 及dram的区别 xff1f sram xff1a 静态随机存储 这里的静态是指这种存储器只需要保持通电 xff0c 里面的数据就可以永远保持 但是当断电之后 xff0c