常见通信协议-原理篇

2023-05-16

目录

  • 前言
  • 通信协议分类
    • 1.串行与并行通信
    • 2.同步与异步通信
    • 3.串行通信数据传送方向
    • 常见通信方式分类
    • 不同分类协议需要额外处理的问题
  • 各通信协议详解
    • 一、UART(通用异步收发器)
      • 1.接口连接方式
      • 2.帧格式
      • 波特率
    • 二、IIC(集成电路总线)
      • 1.接口连接方式
      • 2.帧格式
      • I2C总线仲裁与时钟发生
    • 三、SPI(串行外围设备接口)
      • 1.接口连接方式
      • 2.帧格式
      • SPI的三种模式
    • 四、CAN(ISO国际标准化串行通信协议)
      • 1.接口连接方式
      • 2.两种总线标准
        • ISO11898 标准---闭环总线网络
        • ISO11519-2 标准---开环总线网络
      • 3.差分信号
      • 4.帧格式
        • 1. 数据帧
          • (1)帧起始(标准、扩展格式相同)
          • (2)仲裁段(标准、扩展格式不同)
          • (3)控制段(标准、扩展格式不同)
          • (4)数据段(标准、扩展格式相同)
          • (5)CRC段(标准、扩展格式相同)
          • (6)ACK段(标准、扩展格式相同)
          • (7)帧结束(标准、扩展格式相同)
        • 2. 遥控帧(远程帧)
        • 3. 错误帧
        • 4. 过载帧
        • 5. 帧间隔
      • CAN优先级
      • 位填充
      • 位时序

前言

本篇文章仅为个人笔记,不是教程,其中一些图片引用于其他博客
更新中······

本文参考以及学习内容推荐

STM32F103标准库开发—目录

STM32F103标准库开发----Uart串口通信实验----初始化配置

STM32F103标准库开发----IIC主控实验----普通I/O口模拟----基本原理

STM32F103标准库开发----SPI实验----基本原理

STM32F103标准库开发----CAN总线通信实验----基本原理

通信协议分类

1.串行与并行通信

  • 并行通信:数据的各位同时在多根数据线上发送或接收。
    并行通信特点:控制简单,传输速度快;由于传输线较多,适用于短距离通信。
  • 串行通信:数据的各位在同一根数据线上逐位发送和接收。
    串行通信特点:控制复杂,传输速度慢;只需要一根数据线,适用于远距离通信。

2.同步与异步通信

  • 同步通信:发送端和接收端必须使用同一时钟,是一种连续传送数据的通信方式。
    特点:必须有同步时钟,传输信息量大,传输速率高,但是传输设备则为复杂,技术要求高。
  • 异步通信:发送和接收端使用的是各自的时钟,是一种不连续的传输通信方式。
    特点:不需要同步时钟,通信实现简单,设备简单。但是传输速率不高。

3.串行通信数据传送方向

  • 单工:是指数据传输仅能沿一个方向,不能实现反向传输。
  • 半双工:是指数据传输可以沿两个方向,但需要分时进行传输。
  • 全双工:是指数据可以同时进行双向传输。

常见通信方式分类

通讯方式串并行同异步单双工主从模式
UART串行异步全双工对等
USART串行同步异步全双工对等
IIC串行同步半双工多主多从
SPI串行同步全双工一主多从
CAN串行异步半双工多节点
USB2.0串行异步半双工对等
USB3.0串行异步全双工对等

不同分类协议需要额外处理的问题

  • 同异步:当没有时钟线(异步通信)时,要进行数据传输则需要实现同步,如uart的波特率,can的位时序等
  • 主从模式:当主从模式为多节点或多主多从时,可能出现多方同时传输数据,造成数据冲突,这里需要进行仲裁,如iic的总线仲裁,can的数据优先级等

各通信协议详解

一、UART(通用异步收发器)

1.接口连接方式

接口功能
TX数据发送
RX数据接收

2.帧格式

每个字符帧,包含起始位数据位校验位停止位

起始位数据位校验位停止位
1bit5~9 bit0~1 bit1~2 bit

  1. 空闲位: 处于逻辑“1”状态,即高电平,每个字符之间都会有一段空闲位,表示当前线路上没有数据传输。
  2. 起始位: 处于逻辑”0”状态,即低电平,表示数据传输的开始。因为总线空闲时为高电平所以开始一次通信时先发送一个明显区别于空闲状态的信号,即低电平。
  3. 数据位: 起始位之后就是要传输需要传输的数据,数据可以是5,6,7,8,9位构成一个字符,一般都是8位。先发送最低位最后发送最高位,使用低电平表示0高电平表示1,完成数据位的传输。
  4. 校验位: 数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。校验方法:奇校验(odd)、偶校验(even)以及无(noparity)。
  5. 停止位: 一个字符帧数据的结束标志,可以是1位、1.5位、2位的高电平,表示数据传输的结束

波特率

波特率:每秒钟传输的数据位数(bit)。因UART通信为异步通信,故在进行传输之前,双方一定要设置同一个波特率。

二、IIC(集成电路总线)

1.接口连接方式

接口功能
SDA数据线
SCL时钟线

2.帧格式

  1. 空闲状态:数据线SDA和时钟线SCL都是处于上拉电阻状态。
  2. 起始信号:当时钟线SCL为高期间,数据线SDA由高到低的跳变。
  3. 停止信号:当时钟线SCL为高期间,数据线SDA由低到高的跳变。
  4. 应答信号:发送器每发送一个字节(8个bit),就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。
  • 应答信号为低电平时,规定为有效应答位(ACK),表示接收器已经成功地接收了该字节;
  • 应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。
  • 对于反馈有效应答位ACK的要求是:接收器在第9个时钟脉冲之前的低电平期间将数据线SDA拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放数据线SDA,以便主控接收器发送一个停止信号P。
  1. 时序要求
  • 数据有效性
    IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定;只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
    即:数据在时钟线SCL的上升沿到来之前就需准备好。并在在下降沿到来之前必须稳定。
  • 延时时间
  • 数据传送
    主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。

    A、主机向从机发送数据,数据传送方向在整个传送过程中不变。
    有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。

    B、主机在第一个字节(寻址字节)后,立即由从机读数据。
    在从机产生响应时,主机从发送变成接收,从机从接收变成发送。之后,数据由从机发送,主机接收,每个应答由主机产生,时钟信号仍由主机产生。若主机要终止本次传输,则发送一个非应答信号(A),接着主机产生停止条件。

    C、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相 。

    (A表示应答,/A表示非应答(高电平)。S表示起始信号,P表示终止信号。)

I2C总线仲裁与时钟发生

在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其它的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是I2C总线上的仲裁。
A、 SCL线的同步(时钟同步)
SCL同步是由于总线具有线“与”的逻辑功能,即只要有一个节点发送低电平时,总线上就表现为低电平。
当所有的节点都发送高电平时,总线才能表现为高电平。
由于线“与”逻辑功能的原理,当多个节点同时发送时钟信号时,在总线上表现的是统一的时钟信号。这就是SCL的同步原理。

B、 SDA仲裁
SDA线的仲裁也是建立在总线具有线“与”逻辑功能的原理上的。
节点在发送1位数据后,比较总线上所呈现的数据与自己发送的是否一致。是,继续发送;否则,退出竞争。
SDA线的仲裁可以保证I2C总线系统在多个主节点同时企图控制总线时通信正常进行并且数据不丢失。总线系统通过仲裁只允许一个主节点可以继续占据总线。
C、 仲裁过程
DATA1和DATA2分别是主节点向总线所发送的数据信号;
SDA为总线上所呈现的数据信号,SCL是总线上所呈现的时钟信号。

当主节点1、2同时发送起始信号时,两个主节点都发送了高电平信号。这时总线上呈现的信号为高电平,两个主节点都检测到总线上的信号与自己发送的信号相同,继续发送数据。
第2个时钟周期,2个主节点都发送低电平信号,在总线上呈现的信号为低电平,仍继续发送数据。
在第3个时钟周期,主节点1发送高电平信号,而主节点2发送低电平信号。根据总线的线“与”的逻辑功能,总线上的信号为低电平,这时主节点1检测到总线上的数据和自己所发送的数据不一样,就断开数据的输出级,转为从机接收状态。
这样主节点2就赢得了总线,而且数据没有丢失,即总线的数据与主节点2所发送的数据一样,而主节点1在转为从节点后继续接收数据,同样也没有丢掉SDA线上的数据。因此在仲裁过程中数据没有丢失。

三、SPI(串行外围设备接口)

1.接口连接方式

接口功能
MISO主设备数据输入,从设备数据输出
MOSI主设备数据输出,从设备数据输入
SCLK主设备产生的时钟信号
CS片选信号

2.帧格式


SPI设备选择


SPI是[单主设备( single-master )]通信协议,这意味着总线中的只有一支中心设备能发起通信。当SPI主设备想读/写[从设备]时,它首先拉低[从设备]对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,[主设备]把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”。
SPI数据发送接收
SPI主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。
1.首先拉低对应SS信号线,表示与该设备进行通信
2.主机通过发送SCLK时钟信号,来告诉从机写数据或者读数据
3.主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(0~7),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
4.从机(Slave)也将自己的串行移位寄存器(0~7)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。
注意:SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

SPI通信的四种模式
时钟极性(CPOL)定义了时钟空闲状态电平:
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
时钟相位(CPHA)定义数据的采集时间。
CPHA=0,在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样。,在第2个边沿发送数据
CPHA=1,在时钟的第二个跳变沿(上升沿或下降沿)进行数据采样。,在第1个边沿发送数据

SPI的三种模式

  • 运行模式(Run Mode)
    这是基本的操作模式
  • 等待模式(Wait Mode)
    SPI工作在等待模式是一种可配置的低功耗模式,可以通过SPICR2寄存器的SPISWAI位进行控制。在等待模式下,如果SPISWAI位清0,SPI操作类似于运行模式。如果SPISWAI位置1,SPI进入低功耗状态,并且SPI时钟将关闭。如果SPI配置为主机,所有的传输将停止,但是会在CPU进入运行模式后重新开始。如果SPI配置为从机,会继续接收和传输一个字节,这样就保证从机与主机同步。
  • 停止模式(Stop Mode)
    为了降低功耗,SPI在停止模式是不活跃的。如果SPI配置为主机,正在进行的传输会停止,但是在CPU进入运行模式后会重新开始。如果SPI配置为从机,会继续接受和发送一个字节,这样就保证了从机与主机同步。

四、CAN(ISO国际标准化串行通信协议)

1.接口连接方式

接口功能
CANH高电平CAN总线
CANL低电平CAN总线

2.两种总线标准


总线拓扑图

ISO11898 标准—闭环总线网络

闭环总线网络高速、短距离,它的总线最大长度为 40m,通信速度最高为 1Mbps,总线的两端各要求有一个120 欧的电阻。

ISO11519-2 标准—开环总线网络

开环总线网络低速、远距离,它的最大传输距离为 1km,最高通讯速率为 125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个2.2千欧的电阻。

3.差分信号

CAN总线采用差分信号传输,通常情况下只需要两根信号线就可以进行正常的通信。
在差分信号中,逻辑0和逻辑1是用两根差分信号线的电压差来表示。

当处于逻辑1,CAN_High和CAN_Low的电压差小于0.5V时(0V),称为隐性电平(Recessive)
当处于逻辑0,CAN_High和CAN_Low的电压差大于0.9V时(2V),称为显性电平(Dominant)

差分信号的传输的优点:

  • 抗干扰能力强
  • 能有效抑制它对外部的电磁干扰
  • 时序定位精确

4.帧格式

用途
数据帧用于发送单元向接收单元传送数据的帧
遥控帧用于接收单元向具有相同 ID 的发送单元请求数据的帧
错误帧用于当检测出错误时向其它单元通知错误的帧
过载帧用于接收单元通知其尚未做好接收准备的帧
帧间隔用于将数据帧及遥控帧与前面的帧分离开来的帧

1. 数据帧

数据帧由 7 个段构成。

(1)帧起始(标准、扩展格式相同)

帧起始是表示该帧开始的段。由1个位的显性位构成。

(2)仲裁段(标准、扩展格式不同)

标准格式 ---- 共12位:11位基本ID1位RTR位

  • 帧ID
    标准格式的 ID 有 11 个位,从 ID28 到 ID18 被依次发送。
    禁止高7位都为隐性(禁止设定:ID=1111111XXXX)。
  • RTR位 ---- 远程传输请求位
    用于区分数据帧和遥控帧的:显性电平 ---- 数据帧,隐性电平 ---- 遥控帧

扩展格式 ---- 共32位:11位基本ID1位SRR位1位IDE位18位扩展ID1位RTR位

  • 帧ID
    扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性(禁止设定:基本 ID=1111111XXXX)。
  • SRR 位
    只存在于扩展格式,它用于替代标准格式中的 RTR位。
    由于扩展帧中的 SRR 位为隐性位,RTR 在数据帧为显性位,所以在两个 ID 相同的标准格式报文与扩展格式报文中,标准格式的优先级较高。
  • IDE 位 ---- 标识符扩展位
    用于区分标准格式与扩展格式:显性电平 ---- 标准格式,隐性电平 ----- 扩展格式
  • RTR位 ---- 远程传输请求位
    用于区分数据帧和遥控帧的:显性电平 ---- 数据帧,隐性电平 ---- 遥控帧
(3)控制段(标准、扩展格式不同)

标准格式1位IDE位1位r0保留位4位DLC数据长度码

  • IDE 位 ---- 标识符扩展位
    用于区分标准格式与扩展格式:显性电平 ---- 标准格式,隐性电平 ----- 扩展格式
  • 保留位 ---- r0
    保留位必须全部以显性电平发送。
    但接收方可以接收显性、隐性及其任意组合的电平。
  • 数据长度码 ---- DLC
    表示发送/接收的数据长度(字节)。
    数据的字节数必须为 0~8 字节,但接收方对 DLC = 9~15 的情况并不视为错误。

扩展格式2位 r0 和 r1 保留位4位DLC数据长度码

  • 保留位 ---- r0、r1
    保留位必须全部以显性电平发送。
    但接收方可以接收显性、隐性及其任意组合的电平。
  • 数据长度码 ---- DLC
    表示发送/接收的数据长度(字节)。
    数据的字节数必须为 0~8 字节,但接收方对 DLC = 9~15 的情况并不视为错误。
(4)数据段(标准、扩展格式相同)

数据段可包含 0~8 个字节的数据
从 MSB(最高位)开始输出。

(5)CRC段(标准、扩展格式相同)

CRC 段是检查帧传输错误的帧。
15 个位的 CRC 顺序1 个位的 CRC 界定符(用于分隔的位)构成。

  • CRC 顺序—15位
    CRC 顺序是根据多项式生成的 CRC 值,CRC 的计算范围包括帧起始、仲裁段、控制段、数据段。
    接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。
  • CRC 界定符
    用于分隔的位
(6)ACK段(标准、扩展格式相同)

ACK 段用来确认是否正常接收。
在这里插入图片描述

1位 ACK 槽(ACK Slot) 和1位 ACK 界定符 构成。

  • ACK 槽(ACK Slot)
    发送单元在 ACK 段发送 2 个位的隐性位。
    接收到正确消息的单元在 ACK 槽(ACK Slot)发送显性位,
    通知发送单元正常接收结束。这称作“发 送 ACK”或者“返回 ACK”。
  • ACK 界定符
    用于分隔的位
(7)帧结束(标准、扩展格式相同)

帧结束是表示该帧结束的段。由 7 个位的隐性位构成。

2. 遥控帧(远程帧)

遥控帧由 6 个段组成,遥控帧没有数据帧的数据段RTR 位为隐性位

3. 错误帧

错误帧由错误标志错误界定符构成。

  • 错误标志
    错误标志包括主动错误标志和被动错误标志两种。
    主动错误标志:6个位的显性位
    被动错误标志:6个位的隐性位

  • 错误界定符
    错误界定符由 8 个位的隐性位构成。

4. 过载帧

过载帧由过载标志过载界定符构成。

  • 过载标志
    6 个位的显性位。
    过载标志的构成与主动错误标志的构成相同。

  • 过载界定符
    8 个位的隐性位。
    过载界定符的构成与错误界定符的构成相同。

5. 帧间隔

数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧分开。
过载帧和错误帧前不能插入帧间隔。

  • 间隔
    3 个位的隐性位

  • 总线空闲
    无长度限制的隐性位(0 亦可)。
    本状态下,可视为总线空闲,要发送的单元可开始访问总线。

  • 延迟传送(发送暂时停止)
    8个位的隐性位
    只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。

CAN优先级

在总线空闲态,最先开始发送消息的单元获得发送权。
多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。
连续输出显性电平最多的单元可继续发送

  • 数据帧和遥控帧的优先级
    具有相同 ID 的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。
    数据帧 > 遥控帧
  • 标准格式和扩展格式的优先级
    标准格式 ID 与具有相同 ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。
    标准格式 > 扩展格式
    在这里插入图片描述

位填充

位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。

  • 发送单元的工作
    在发送数据帧和遥控帧时,SOF~CRC 段间的数据,相同电平如果持续 5 位,在下一个位(第 6 个位)则要插入 1 位与前 5 位反型的电平

  • 接收单元的工作
    在接收数据帧和遥控帧时,SOF~CRC 段间的数据,相同电平如果持续 5 位,需要删除下一个位(第 6 个位)再接收
    如果这个第 6 个位的电平与前 5 位相同,将被视为错误并发送错误帧

位时序

为了实现位同步,CAN 协议把每一个数据位的时序分解成如下图所示的 SS 段、PTS 段、PBS1 段、PBS2 段,这四段的长度加起来即为一个 CAN 数据位的长度。
分解后最小的时间单位是 Tq,而一个完整的位由 8~25 个 Tq 组成。

采样点:
所谓采样点是读取总线电平,并将读到的电平作为位值的点。
位置在 PBS1 结束处。

各段的作用如下表所示:

  • 硬件同步
    接收单元在总线空闲状态检测出帧起始时进行的同步调整。
    在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段。
  • 重新同步
    在接收过程中检测出总线上的电平变化时进行的同步调整。
    每当检测出边沿时,根据 SJW 值通过加长 PBS1 段,或缩短 PBS2 段,以调整同步。
    但如果发生了超出 SJW值的误差时,最大调整量不能超过 SJW 值。
    相位超前时

    相位滞后时
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见通信协议-原理篇 的相关文章

  • Ubuntu20.04 | 更新软件源 sudo apt-get update 出现错误

    之前使用了清华的官方源 清华大学开源软件镜像站 Tsinghua Open Source Mirror 错误提示 xff1a 忽略 1 https mirrors tuna tsinghua edu cn ubuntu focal InRe
  • PCB封装库的制作

    以下几个元件制作为例 xff1a 元件SMA封装 步骤 xff1a 1 创建PCB库文件 xff1a 单击 File 菜单 xff0c 选择 New 选项中的 Library 选项 xff0c 再选择 PCB Library xff0c 进
  • PCB板自动布线

    自动布线 步骤 xff1a 1 整体删除同层的走线 xff1a 打开PCB文件 xff0c 在层的选项卡中选择顶层 Top Layer xff0c 在 Edit 菜单下选择 Select 选项 xff0c 选择 All on Layer 选
  • 独立按键实验

    按键简介 按键是一种电子开关 xff0c 使用时 xff0c 按下按钮 xff0c 则开关接通 xff0c 松开手时 开关断开 开发板上使用的按键及内部简易图如下图所示 xff1a 按键管脚两端距离长的表示默认是导通状态 xff08 1 2
  • IO 扩展(串转并)-74HC595-16*16LED点阵实验

    51 单片机的IO 口非常有限 xff0c 有时候若想要连接更多外围设备 xff0c 需要通过 IO 扩展来实现 本文介绍一种 IO 口扩展方式 串转并 xff0c 使用的芯片是 74HC595 若有4个 74HC595 芯片 xff0c
  • LED 点阵实验~点亮一个点、数字、汉字、图

    LED 点阵简介 LED 点阵是由发光二极管排列组成的显示器件 xff0c 如下所示为8 8LED 点阵 xff1a 以 16 16LED 点阵为例 xff0c 其内部结构图如下所示 xff1a 16 16 点阵共由 256 个发光二极管组
  • 定时器中断

    定时器简介 介绍定时器之前 xff0c 先说明几个CPU 时序的有关知识 振荡周期 xff1a 为单片机提供定时信号的振荡源的周期状态周期 xff1a 1 个状态周期 61 2 个振荡周期机器周期 xff1a 1 个机器周期 61 6 个状
  • 红外遥控实验

    红外线简介 人眼所能看到的可见光 xff0c 按波长从长到短排列 xff0c 依次为红 xff08 660nm xff09 橙 xff08 610nm xff09 黄 xff08 585nm xff09 绿 xff08 555nm xff0
  • Jmeter性能测试(25)--linux环境运行jmeter并生成报告

    jmeter是一个java开发的利用多线程原理来模拟并发进行性能测试的工具 xff0c 一般来说 xff0c GUI模式只用于创建脚本以及用来debug xff0c 执行测试时建议使用非GUI模式运行 这篇博客 xff0c 介绍下在linu
  • 题目:输入三个整数x,y,z,把这三个数由小到大输出

    程序分析 xff1a 方式一 xff1a 先将两个数比较 xff0c 再将较大值与第三个数比较 xff0c 得到最大值 然后比较剩余的两个值 最后 xff0c 将数值以X lt Y lt Z的顺序输出 方式二 xff1a 将三个数分别两两进
  • 对话框QDialog

    对话框是 GUI 程序中不可或缺的组成部分 很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置 对话框通常会是一个顶层窗口 xff0c 出现在程序最上层 xff0c 用于实现短期任务或者简洁的用户交互 Qt 中使用QDialog类
  • 布局管理器~登录界面的搭建实例

    所谓的图形用户界面 xff08 GUI xff09 xff0c 本质上就是一堆组件的叠加 创建一个窗口 xff0c 把按钮放上面 xff0c 把图标放上面 xff0c 这样就成了一个界面 因此 xff0c 组件位置的放置尤其重要 xff0c
  • 常用控件及自定义控件

    QLabel QLabel可以用来显示文本 xff0c 图片和动画等 显示文本 xff08 普通文本 HTML xff09 通过QLabel类的setText函数设置显示的内容 void setText const QString amp
  • Dev-c++ 5.11版本调试方法(七小时折磨调试成功,超详细版)

    一 出现的问题是 1 设置断点之后点调试不出现蓝行 2 点了调试之后出现黑框 然后又闪退 3 添加查看之后也看不了变量的值 等等各种问题 xff08 查找 一个个试验 xff0c 还有整理 xff0c 花了起码六七小时 xff0c 几乎一天
  • Pycharm调试Debug篇(详细)

    pycharm中的debug模式 首先 xff0c 还是用示例说话 xff0c 我们书写一段简短的代码 xff0c 来帮我们完成今天要讲的内容 def sum demo x y for in range 2 x 43 61 1 y 43 6
  • Qt --- 信号与槽

    信号与槽概述 信号与槽是 Qt 框架引以为豪的机制之一 所谓信号与槽 xff0c 实际就是观察者模式 发布 订阅模式 当某个事件发生之后 xff0c 比如 xff0c 按钮检测到自己被点击了一下 xff0c 它就会发出一个信号 xff08
  • 不可不知道的串口常识

    串口 xff1a 串口是一个泛称 xff0c UART xff0c TTL xff0c RS232 xff0c RS485都遵循类似的通信时序协议 xff0c 因此都被通称为串口 串口 UART口 COM xff08 cluster com
  • 【Linux】磁盘分区和挂载

    目录 Linux磁盘分区和挂载 linux分区 查看所有设备挂载情况 挂载案例 步骤1 xff1a 新建一块硬盘 操作步骤2 xff1a 虚拟机硬盘分区 步骤3 xff1a 虚拟机硬盘分区格式化 步骤4 xff1a 将磁盘挂载到根目录下ne
  • RealSense D435i + imu 标定 Ros Melodic

    准备工作 ubuntu ros melodic环境 librealsense realsense ros 一 修改rs camera launch文件中的参数 修改之前装好的realsense环境中的 src realsense ros r
  • Jmeter性能测试(26)---生成HTML性能测试报告

    性能测试工具Jmeter由于其体积小 使用方便 学习成本低等原因 xff0c 在现在的性能测试过程中 xff0c 使用率越来越高 xff0c 但其本身也有一定的缺点 xff0c 比如提供的测试结果可视化做的很一般 不过从3 0版本开始 xf

随机推荐

  • 【mcuclub】时钟模块DS1302

    一 实物图 二 原理图 编号名称功能1VCC2双供电配置中的主电源供应引脚 DS1302工作于 VCC1和VCC2中较大者 当VCC2比VCC1高0 2V 时 xff0c VCC2 给 DS1302供电 当VCC1比VCC2高时 VCC1给
  • 【mcuclub】定时器/计数器

    一 简介 定时器实际上就是Soc当中的一个内部外设 定时器常与计数器扯到一起 xff0c 计数器也是Soc当中的一个内部外设 xff0c 计数器顾名思义是用来计数的 xff0c 就和我们的秒表一样 xff0c 秒表实际上就是一个计数器 xf
  • 基于A*算法自动引导车的路径规划(Matlab代码实现)

    x1f4a5 x1f4a5 x1f49e x1f49e 欢迎来到本博客 x1f4a5 x1f4a5 x1f3c6 博主优势 xff1a x1f31e x1f31e x1f31e 博客内容尽量做到思维缜密 xff0c 逻辑清晰 xff0c 为
  • 【文章转载】使用常见Matlab工具箱调节pid参数(飞机垂直速度控制系统设计)

    申明 xff1a 这是一篇转载文章 xff0c 本人害怕原链接失效 xff0c 故转载 xff0c 没有商用 xff0c 作者也可也私我删除 使用常见Matlab工具箱调节pid参数 小白的第一篇知乎文章 xff0c 如果有不准确的地方 x
  • 制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)

    2 ORBSLAM2 测试自己拍摄的数据集 使用手机 摄像机等设备拍摄视频 xff0c 对应我们只能使用单目 Monocular 2 1对相机标定 首先我们要对相机进行标定 xff0c 使用 MATLAB 里面的标定工具包 标定好之 后创建
  • c++的好处

    1 更新迭代慢 xff0c 技术成熟的很高 xff0c 基本不会有太大的改动 xff0c 工作后学习压力小 2 C C 43 43 是系统编程层级唯一的一门高级语言 xff0c 速度快 xff0c 效率高 不用担心今后会被取代 3 C C
  • lacp协议

    LACP xff08 Link Aggregation Control Protocol xff0c 链路聚合控制协议 xff09 将多条链路逻辑上模拟成一条链路 xff0c 以增加网络带宽 xff08 通常网络多条链路情况下 xff0c
  • Windows 10 下安装Linux

    使用Hype V 快速安装 选择的Ubuntu 22 04 LTS 安装一切正常 xff0c 登录提示 登录以后提示connecting to sesman ip 127 0 0 1 port 3350 关闭查看菜单的 增强模式 xff0c
  • mvvm是什么?

    1 总结 一句话总结 xff1a vm层 xff08 视图模型层 xff09 通过接口从后台m层 xff08 model层 xff09 请求数据 xff0c vm层继而和v view层 实现数据的双向绑定 2 mvc和mvvm的关系 xff
  • 汉诺塔问题(C语言实现)

    前言 一 汉诺塔圆盘的移动步数 二 汉诺塔圆盘移动步骤 总结 前言 汉诺塔 xff08 Tower of Hanoi xff09 xff0c 又称河内塔 xff0c 是一个源于印度古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子
  • ubuntu 16.04版本安装docker以及创建docker容器

    一 简介 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 xff0c 然后发布到任何流行的 Linux 机器上 xff0c 也可以实现虚拟化 容器是完全使用沙箱机制 xff0c
  • 字符串操作函数strstr

    目录 一 strstr函数介绍 二 strstr函数的模拟 三 代码实现 一 strstr函数介绍 在编写程序的过程中 xff0c 我们不可避免地会调用字符串操作函数 xff0c 今天要介绍的字符串操作函数是strstr函数 strstr函
  • 【无标题】前端工程师面试题手册-有点长但是很有用

    不是原作者 想想要获取更多前端开发相关学习资料 xff0c 请加微信1124692领取 前端工程师面试题手册 目录 1 前端基础 11 1 1 HTTP HTML 浏览器
  • 超详细的VMware虚拟机安装Linux图文教程保姆级

    目录 一 下载VMware 二 安装VMware 三 下载Linux 四 安装Linux 五 设置本地机与虚拟机之间的数据传输 xff08 复制 粘贴等操作 xff09 一 下载VMware VMware官网有两个版本 xff0c 分别是
  • 仿牛客技术博客项目常见问题及解答(三)

    书接上回 xff1a 仿牛客技术博客项目常见问题及解答 xff08 二 xff09 李孛欢的博客 CSDN博客 13 项目中的kafka是怎么用的 xff1f kafka入门 Apache Kafka是一个分布式流平台 一个分布式的流平台应
  • [Java] 继承 和 多态(学习总结)

    目录 继承 一 继承主要表示概念层上的 is a 的关系 二 什么是继承 三 语法 四 继承方式 xff1a 五 访问权限 六 构造方法 七 父类的属性和方法的访问 八 重载和重写 xff08 前提是子类是有权限的 xff09 九 执行顺序
  • 第七章-X86汇编语言从实模式到保护模式

    第七章 比高斯更快的计算 7 3 显示字符串 39 1 43 2 43 3 43 43 100 61 39 字符串编译阶段 xff0c 编译器将把它们拆开 xff0c 形成一个个单独的字节jump near start跳过没有指令的数据区1
  • 【java】杂七杂八的基础知识

    1 当用javac命令编译Java源程序 xff08 java文件 xff09 时 xff0c 必须写出该源文件的完整文件名 xff0c 包括扩展名 java 2 当用java exe命令运行一个字节码 class 文件时 xff0c 不必
  • 论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow

    摘要 修剪神经网络的参数可以在训练和测试期间节省时间 内存和能量 最近的研究发现 xff0c 通过一系列昂贵的训练和修剪周期 xff0c 初始化时存在中奖彩票或稀疏可训练的子网络 这就提出一个基本问题 xff1a 我们能否在初始化时识别出高
  • 常见通信协议-原理篇

    目录 前言通信协议分类1 串行与并行通信2 同步与异步通信3 串行通信数据传送方向常见通信方式分类不同分类协议需要额外处理的问题 各通信协议详解一 UART 通用异步收发器 1 接口连接方式2 帧格式波特率 二 IIC 集成电路总线 1 接