韦东山学习笔记——UART(串口)的使用

2023-05-16

基于jz2440的串口使用

  • 搬砖的文章
  • 概述
    • UART的发送和接收
    • 串口之间的数据传输
    • UART的用途
    • 串口的数据帧参数说明
      • 起始位
      • 数据位
      • 奇偶校验位
      • 停止位
      • 波特率
    • 怎么发送一字节数据,比如‘A‘?
    • UART的优缺点
      • 优点
      • 缺点
  • UART相关配置寄存器
    • ULCONn:线路控制寄存器
    • UCONn:控制寄存器
    • UFCONn:FIFO控制寄存器
    • UMCONn:MODEM控制寄存器
    • UTRSTATn:收发状态寄存器
    • UERSTATn:错误状态寄存器
    • UFSTATn:FIFO状态寄存器
    • UMSTATn:Modem状态寄存器
    • UTXHn/URXHn:传输缓冲寄存器
    • UBRDIV:波特率除数寄存器
    • 关于中断
    • FIFO与非FIFO的区别
    • 自动流控制(AFC)
  • UART通讯编程

搬砖的文章

我只是代码的搬运工,为了学习而做的笔记。若是大家有补充的,希望留言,我会一一补充,下面的都是搬砖的文章,都非常优秀,建议查看

1、收藏!了解UART总线工作原理看这一篇就够了!
2、Part4:串口(UART)通信原理与硬件编程
3、韦东山——第011课 Jz2400串口(UART)的使用
4、UART原理
5、ARM硬件结构
6、UART串口异步通信驱动编程
7、s3c2440A开发板UART总结以及UART代码详解(寄存器方面)

概述

UART(Universal Asynchronous Receiver/Transmitter)是一种异步串口IO端口(Asynchronous Serial I/O PORT),每个SOC上可支持多个独立的UART,每个独立的UART的特性如下:
(1)每个UART PORT可基于中断或者DMA来工作,也就是UART可生成中断或者DMA请求,再内存和UART间进行数据的传输;
(2)可编程的波特率、红外传输(接收)、1~2个停止位、5-8个bit数据位宽、校验位(奇偶校验)
(3)主要组成部分是控制单元,接收器、发送器,发送器,波特率生成器

要发送数据时,CPU控制内存要发送的数据通过FIFO传给UART单位,UART里面的移位器,依次将数据发送出去,在发送完成后产生中断提醒CPU传输完成。

接收数据时,获取接收引脚的电平,逐位放进接收移位器,再放入FIFO,写入内存。在接收完成后产生中断提醒CPU传输完成。

UART的发送和接收

UART传输数据依靠的是UART总线,数据总线用于通过CPU,存储器或微控制器等其他设备将数据发送到UART。数据以并行形式从数据总线传输到发送UART。在发送UART从数据总线获得并行数据之后,它将添加起始位,奇偶校验位和停止位,从而创建数据包。接下来,数据包在Tx引脚上逐位串行输出。UART接收端则在其Rx引脚上逐位读取数据包。然后,接收UART将数据转换回并行形式,并删除起始位,奇偶校验位和停止位。最后,接收UART将数据包并行传输到接收端的数据总线。
在这里插入图片描述

串口之间的数据传输

在这里插入图片描述

  • 通过TxD->RxD把ARM开发板要发送的信息发送给PC机。
  • 通过RxD->TxD线把PC机要发送的信息发送给ARM开发板。
  • 最下面的地线统一参考地。

UART的用途

  • 打印调试信息;
  • 外接各种模块:GPS、蓝牙;

串口的数据帧参数说明

UART传输的数据被组织成数据包。每个数据包包含1个起始位,5到9个数据位(取决于UART),可选的奇偶校验位以及1或2个停止位:

在这里插入图片描述

起始位

当UART数据传输线不传输数据时,它通常保持在高电压电平。为了开始数据传输,发送UART将传输线从高电平拉至低电平一个时钟周期。当接收UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位。

由1个逻辑 0 的数据位表示
先发出一个逻辑“0”的信号,表示传输字符开始。

数据位

数据框包含要传输的实际数据。如果使用奇偶校验位,则它可以是5位到8位长。如果不使用奇偶校验位,则数据帧可以是9位长。在大多数情况下,数据首先以最低有效位发送。

在起始位后紧接着的就是有效数据,有效数据的长度常被约定为 5、 6、 7 或 8 位长

奇偶校验位

奇偶校验描述数字的均匀性或奇数。奇偶校验位是接收UART在传输过程中判断是否有任何数据发生变化的一种方法。电磁辐射、不匹配的波特率或长距离传输时,数据都有可能发生变化。接收UART读取数据帧后,它会计算值为1的位数,并检查总数是偶数还是奇数。如果奇偶校验位为0(偶校验),则数据帧中的1位应总计为偶数。如果奇偶校验位是1(奇校验),则数据帧中的1位应总计为奇数。当奇偶校验位与数据匹配时,UART知道传输没有错误。但如果奇偶校验位为0,然而1位应总计为奇数;或者奇偶校验位是1,并且1位应总计是偶数,则数据帧中的位已经改变。

可选,为的是数据的抗干扰性。
校验方法分为:

  • 1、奇校验(odd),有效数据和校验位中“ 1”的个数为奇数
  • 2、偶校验(even) ,有效数据和校验位中“ 1”的个数为偶数
  • 3、0 校验(space),不管有效数据中的内容是什么,校验位总为“ 0”
  • 4、1校验(mark),不管有效数据中的内容是什么,校验位总为“ 1”
  • 5、无校验(noparity)
  • 空闲位,总是保持逻辑1

停止位

为了通知传输数据包的结束,UART发送端会将数据传输线从低电压驱动至高电压至少两位持续时间。它是一个字符数据的结束标志。

由 0.5、 1、 1.5 或 2 个逻辑 1 的数据位表示

波特率

波特率(Baud rate):一般选波特率都会有9600,19200,115200等选项。其实意思就是每秒传输这么多个比特位数(bit)。约定彼此收发数据的频率,即每1bit所占时间的约定
在这里插入图片描述

怎么发送一字节数据,比如‘A‘?

A 的ASCII值是0x41,二进制就是01000001,怎样把这8位数据发送给PC机呢?

  • 双方约定好波特率(每一位占据的时间);
  • 规定传输协议

当UART数据传输线不传输数据时,它通常保持在高电压电平。为了开始数据传输,发送UART将传输线从高电平拉至低电平一个时钟周期。

逻辑电平就是说代表信号1的引脚电平是人为规定的。

  • 注:在xV至5V之间,就认为是逻辑1,在0V至yV之间就为逻辑0。 如图是TTL/CMOS逻辑电平下,传输‘A’时的波形:

在这里插入图片描述

UART的优缺点

优点

  • 只使用两根电线
  • 不需要时钟信号
  • 有一个奇偶校验位
  • 只要双方设置后,就可以改变数据包的结构
  • 有完整的文档并且具有广泛的使用

缺点

  • 数据帧的大小限制为最多9位
  • 不支持多个从属或多个主系统
  • 每个UART的波特率必须在10%之内

UART相关配置寄存器

uart各个寄存器各个位的含义

ULCONn:线路控制寄存器

ULCONn:线路控制寄存器,用于设定线路的字长度、停止位个数、奇偶校验方式、是否使用红外模式。(看的书中翻译成“线性控制寄存器”,我感觉是不正确的)
在这里插入图片描述
我在jz2440里配置为:

  • ①取消红外线模式(Infrared Mode)
  • ②无奇偶校验(Parity Mode)
  • ③一个停止位(Number of Stop Bit)
  • ④八个数据位(Word Length)

UCONn:控制寄存器

UCONn: 控制寄存器,用于设定操作模式(中断或轮询/DMA)、环回模式、中断方式、时钟选择。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我在jz2440里配置为:

  • 时钟设置为PCLK(Clock Selection)
  • 中断脉冲触发(Tx/Rx Interrupt Type)
  • 接收超时中断不允许(Tx/Rx Error Status Interrupt Enable)
  • 接收超时中断不允许(Rx Time Out Enable)
  • 不产生接收错误中断(Rx Error Status Interrupt Enable)
  • 设置正常模式,不使用环回模式(Loopback Mode)
  • 设置正常模式,不启动间断发送(Send Break Signal)
  • 发送/接收模式设置为中断请求或轮询模式(Transmit/Receive Mode)

UFCONn:FIFO控制寄存器

UFCONn:FIFO控制寄存器,用于控制FIFO操作方式,如是否使用FIFO以及触发级别。
在这里插入图片描述
这里我们不使用FIFO不用设置,默认即可。

由于我们需要大量数据的传输时,才使用FIFO,若是传输几个字节的数据时,不必启用FIFO。

UMCONn:MODEM控制寄存器

UMCONn:Modem控制寄存器,用于设置是否使用AFC(自动流控制)和RTS。TTL2是不支持流控制的,所以没有UMCON2寄存器。
在这里插入图片描述
我们不设置,所以就默认值就好。

UTRSTATn:收发状态寄存器

UTRSTATn:收发状态寄存器,可从中读取收发保持寄存器的状态,即是否有数据,仅在非FIFO模式下使用。
在这里插入图片描述

在这里插入图片描述
我们判断在[2]位是否存在数据

UERSTATn:错误状态寄存器

UERSTATn:错误状态寄存器,可从中读取接收错误状态。
在这里插入图片描述
我们不设置,所以就默认值就好。

UFSTATn:FIFO状态寄存器

UFSTATn:FIFO状态寄存器,可从中读取FIFO状态信息,用于FIFO模式。
在这里插入图片描述
我们不设置,所以就默认值就好。

UMSTATn:Modem状态寄存器

UMSTATn:Modem状态寄存器,可从中读取Modem状态,即CTS信号状态。TTL2不支持流控制,所以没有UMSTAT2寄存器。
在这里插入图片描述
我们不设置,所以就默认值就好。

UTXHn/URXHn:传输缓冲寄存器

UTXHn和URXHn:收发保持(对非FIFO模式)和缓冲(对FIFO模式)寄存器,用于收发数据。

在UART块中有三个UART传输缓冲区寄存器,包括UTXH0、UTXH1和UTXH2。UTXHn有一个用于传输数据的8位数据。
在这里插入图片描述
在这里插入图片描述

UBRDIV:波特率除数寄存器

UBRDIV:波特率除数寄存器,用于设定串口通信波特率。
在这里插入图片描述
我们根据波特率以及一些参数算出最终的值写入这个寄存器即可。

关于中断

  • 边沿(脉冲?)触发:一旦(as soon as)Tx缓冲区变为(becomes)空(非FIFO模式)或者达到(reaches)Tx FIFO触发级别(FIFO模式),则请求中断。注意,这里的“一旦”不仅限定前半句(非FIFO模式),也限定后半句(FIFO模式)。“一旦”与“变为”和“达到”连接起来,表示的是一个时间点,一个变化过程,是变为空或者达到触发级别的时间点或者说变化过程中请求中断。这个时间点过后,或者变化完成后,就不再请求中断了。只要处理中断后,清除源未决寄存器(SRCPND)和中断寄存器(INTPND)的相关位,就不会再有中断发生了。

  • 电平触发:当(while)Tx缓冲区为空(非FIFO模式)或者达到Tx FIFO触发级别,则请求中断。这里的“当”限定前半句和后半句。“当”表示的是一种状态,是处于缓冲区空或者达到Tx FIFO触发级别的状态的时候,就请求中断。处理中断后,即使清除了源未决寄存器(SRCPND)和中断寄存器(INTPND)的相关位,只要这种状态存在,就一直请求中断,即会再次发起中断请求。只有不存在这种状态了,才不会再发起中断请求。

FIFO与非FIFO的区别

  • S3C2440A的UART内部对于接收和发送各有64字节的缓冲区,当使用FIFO模式时,UART将使用这个缓冲区进行数据暂存操作,这样可以增加数据吞吐量,提高传输速率。其实,非FIFO模式也可以看作是特殊的FIFO模式,即只有一个字节缓冲区的FIFO模式。二者的主要不同在于读取缓冲区状态的方式:非FIFO模式下,通过UTRSTAT寄存器得知收发缓冲区状态;FIFO模式下,则从UFSTAT寄存器获得缓冲区状态。要注意的是,在FIFO模式下,只有达到触发级别后才会发起Rx或Tx中断。比如说,如果设置接收触发级别为16字节,则只有在接收缓冲区中有16个字节以上数据时,才会发起Rx中断请求。如果需要进行输入回显,则可能导致不能立即回显用户在串口工具中输入的字符。

自动流控制(AFC)

  • AFC(Auto Flow Control):自动流控制。S3C44BoX中的UART用nRTS(发送请求信号)和nCTS(清除发送信号)来支持自动流控制,以此实现UART之间的互联。

  • 自动流控制涉及到RTS和CTS,我查了下相关缩写的含义:

  • DTE:Data Terminal Equipment,数据终端设备,一般指计算机。

  • DCE:Data Communication Equipment,数据通信设备,一般是调制解调器(Modem)。

  • DTR:Data Terminal Ready,数据终端就绪,DTE向DCE发送这个信号表示已经准备就绪。

  • DSR:Data Set Ready,数据设备就绪,DCE向DTE发送这个信号表示已经准备就绪。

  • RTS:Request To Send,请求发送,DTE向DCE请求发送数据。

  • CTS:Clear To Send,清除发送,DCE向DTE表示准备就绪,可以接收数据了。

UART通讯编程

我们所使用的时RX0/TX0,所对应的引脚位GPH2、GPH3。
在这里插入图片描述
在这里插入图片描述
这里的GPHCON 之类的变量是自己定义的宏定义,比如把指针地址直接定义为一些宏定义,这样就方便以及隐藏地址,本质还是地址

在这里插入图片描述

代码如下:

#include "s3c2440.h"

void uart0_init(){


	/* 设置引脚用于串口 */
	/* GPH2,3用于TxD0, RxD0 */
	GPHCON &= ~((3<<4)|(3<<6));
	GPHCON |= ((1<<4)|(1<<6));
	
	GPHUP &= ~((1<<2)|(1<<3));	//使能内部上拉
	


	/* 
	 * ULCONn:线路控制寄存器
	 * 根据寄存器的[7:0]的数据位的配置可知为:000011也就是3
	 */

	ULCON0 = 0x03;
	
	
	/*
	 * UCONn:控制寄存器
	 * 根据寄存器的[15:0]的数据位可知的配置位:0000 00 0 0 0 0 0 0 01 01也就是5
	 */
	 
	UCON0 = 0x05;



	/* UFCONn:FIFO控制寄存器
	 * 
	 * ->因为我们还没有使用FIFO,所以就暂时不设置<-
	 */


	/* UMCONn:MODEM控制寄存器
	 * 
	 * ->因为我们还没有使用MODEM,所以就暂时不设置<-
	 */


	/* UERSTATn:错误状态寄存器
	 * 
	 * ->因为我们还没有用到,所以就暂时不设置<-
	 */
	 

	/* UFSTATn:FIFO状态寄存器
	 * 
	 * ->因为我们还没有用到,所以就暂时不设置<-
	 */


	/* UMSTATn:Modem状态寄存器
	 * 
	 * ->因为我们还没有用到,所以就暂时不设置<-
	 */




	/* UBRDIV:波特率除数寄存器
	 * 
	 * 设置波特率
	 * UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
	 * UART clock = 50M
	 * UBRDIVn = (int)( 50000000 / ( 115200 x 16) ) –1 = 26
	 *
	 */
	
	UBRDIV0 = 26;


}




/*
 * UTXHn/URXHn:传输缓冲寄存器 ,用来发送接收数据的缓冲区。这里的UTXH0_B,以及UTXH0_L表示采用大尾端还是小尾端
 *
 
 *判断UTRSTAT0里的[2]是否为1:若是为1,则表示里面的发送缓冲和发送移位寄存器时为空,则表示可以出发送数据,若是为0,表明有数据,死循环等待。
 
 * L是指尾端(endian)模式是小尾端模式
 * B是指尾端(endian)模式是大尾端模式
 * 大小尾端:大尾端是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中。小尾端反之
 */
int putchar(char c){
	while(!(UTRSTAT0 & (1<<2));
	UTXH0_STR_B = (unsigned char)c;//这里的UTXH0_STR_B也就是传输缓冲寄存器

}

int getchar(void){
	while(!(UTRSTAT0 & (1<<0)));
	return URXH0_STR_B;//这里的URXH0_STR_B也就是传输缓冲寄存器


}

int putstring(const char *c){

	while (*s)
	{
		putchar(*s);
		s++;
	}

}


在这里插入图片描述

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

韦东山学习笔记——UART(串口)的使用 的相关文章

  • UART串口协议时序图

    为了在编写协议的时候更加方便 xff0c 笔者使用逻辑分析仪读取了UART串口协议的时序 xff0c 记录如下 UART协议 波特率 起始位 数据位 奇偶校验位 停止位 1 波特率9600 xff0c 数据位8 xff0c 无奇偶校验位 x
  • 【FPGA】FPGA实现UART串口通信回环

    目录 一 UART协议基础二 系统模块划分三 代码实现1 uart顶层设计模块2 uart rx串口数据接收模块3 control控制模块4 uart tx串口数据发送模块 四 仿真五 上板验证六 踩坑事项 一 UART协议基础 关于UAR
  • UART、RS232 、RS485 区别

    UART RS232 RS485 区别 UART RS232 RS485这些物理层的串口通信 xff0c 它们都是在同一时间发送一位 RS232 RS485只是串口通讯的变种 xff0c 理解了UART串口通讯 xff0c 那么RS232和
  • UART、IIC、SPI、CAN通信的区别与应用

    文章目录 1 通信的基本知识1 1 数据通信的种类1 1 1 串行通信1 1 2 并行通信1 1 3 总结 1 2 数据通信的传输方向1 2 1 单工1 2 2 半双工1 2 3 全双工1 2 4 总结 1 3 数据通信的方式1 3 1 同
  • 基于uart的RS232和RS485总线

    我们之前讲uart的时候就已经提过一个问题 xff0c 就是它并不是直接连接到SOC里面的 xff0c 而是经过了一个芯片的转换 这个芯片的转换就是和我们要说的rs232 485总线有关的 RS232和RS485总线其实本质就是uart 只
  • DSP:TMS320C6657 之 UART波特率问题

    6657 设置串口波特率 以614400为例 xff08 1 xff09 根据公式计算分频系数 xff08 2 xff09 1GHz 主频下 UART 输入频率 166666666Hz xff08 1 6 xff09 xff08 3 xff
  • Jetson Nano – UART

    There is a UART on the J41 GPIO Header of the NVIDIA Jetson Nano Developer Kit Useful when you need a little bit of extr
  • 串口通信UART

    串口基本概念 串口通讯 Serial Communication 是指外设和计算机间 xff0c 通过数据信号线 地线等 xff0c 按位进行传输数据的一种通讯方式 其通讯协议可分层为协议层和物理层 物理层规定通信协议中具有机械 电子功能的
  • WK2114(一个异步串口UART 扩展为4个串口UART)

    WK2114是UART接口的4通道UART器件 WK2114将一个标准3线异步串口 xff08 UART xff09 扩展成为4个增强 功能串口 xff08 UART xff09 主接口UART在数据传输时主接口的UART可以通过引脚配置为
  • UART通信协议

    UART通信协议 一 UART是什么 xff1f 1 同步串口通信 vs 异步串口通信2 串行通信 二 通信协议三 工作原理四 特点 一 UART是什么 xff1f 通用异步收发传输器 xff08 Universal Asynchronou
  • 1、串口(UART/COM/TTL/RS232/RS485)

    目录 串口简介 串行通讯制式 UART 2 1 简介 2 2 电平标准 TTL RS232 RS485 2 3 电平转换 xff08 重点讲解RS232 TTL xff09 USB转TTL USB转RS232 USB转RS485 RS232
  • STM32 HAL UART 使用关键思路(无代码,但是很关键)

    1 到底使用哪种方式 xff0c 或者说有哪几种方式 xff1f STM32 中的 UART 允许使用不同的发送 TX 和接收 RX 模式进行配置 xff0c 有什么区别和优势 xff1f xff1a 轮询模式 xff08 简单来说就是无
  • arduino学习——UART串口通信

    Serial begin 初始化串口 用作串口的启动 xff0c 常放置在setup xff08 xff09 中 原型 xff1a Serial begin speed Serial begin speed config 参数 xff1a
  • FPGA uart串口收发verilog源码程序,适用于RS232 RS422

    FPGA uart串口收发verilog源码程序 xff0c 适用于RS232 RS422 xff0c 支持修改波特率 xff0c 数据位 xff0c 校验位 ID 3750670799663712
  • 串口通信协议 UART+I2C+SPI

    UART 异步 串行 全双工 I2C SPI 不同通信协议比较 UART UART协议详解 UART通信 xff0c 接收与发送 xff08 详细版 xff0c 附代码 xff09 UART串行通信详解 待整理 UART是Universal
  • MCU-串口通信协议

    MCU 串口通信协议 一 介绍 串行通信就像单车道 所有数据得一个一个通行 并行就像多车道 一次可以通行多辆车 MCU常用到的串口通信模块主要有两种 UART和USART UART 全称是Universal Asynchronous Rec
  • 51单片机串口通信(UART)

    项目描述 1 串口工作方式为1 8位UART 波特率可变 无校验位 2 通信数据格式为 1位起始位 8位数据位 1位停止位 3 上电后MCU给上位机发送问候语 之后等待上位机的信息 MCU和上位机的通信为收发交替进行 MCU接收到的信息会实
  • 启用 DMA 的 UART Tx 模式

    我已经为 UART 在传输模式下编写了一个简单的设备驱动程序 并启用了 DMA 和中断 我使用的硬件是 omap 4460 pandaboard 其中加载了 Linux 3 4 下面我分享一下相关部分的代码 在开放阶段 dma map io
  • 通过 USB 模拟 UART

    有谁知道是否可以通过 USB 模拟 UART 简单串行发送和接收 这将如何实现 我在 Microchip 网站上找到了这个链接 但不是很容易找到 http www microchip com forums m522571 print asp
  • 如何检测来自 QNX 中 ncurses 的屏幕调整大小事件?

    我无法配置为接收有关使用 ncurses QNX Momentics 更改终端大小的事件 我使用Putyy作为终端 通过COM端口传输数据 我的问题是如何实现使用远程终端时接收屏幕变化事件 FILE fcons fopen dev ser1

随机推荐

  • NVIDIA Jetson Xavier NX禁用上电自启,使用按键开关机

    NVIDIA Jetson Xavier NX禁用上电自启 xff0c 使用按键开关机 文章目录 NVIDIA Jetson Xavier NX禁用上电自启 xff0c 使用按键开关机前言一 原理二 拓展 前言 NX默认上电自启 xff0c
  • Linux系统设置共享文件夹

    Linux系统设置共享文件夹 文章目录 Linux系统设置共享文件夹一 设置原理二 设置步骤1 安装samba2 创建 设置共享文件夹 三 测试 一 设置原理 基于Ubuntu16 04 xff0c 采用在线安装samba库的方式设置共享文
  • Linux:复位USB设备

    Linux xff1a 复位USB设备 文章目录 Linux xff1a 复位USB设备前言一 基本原理二 代码实例总结 前言 在Ubuntu16 04下开发SDR设备数据处理程序时 xff0c msi sdr设备有时运行几个小时后就会出现
  • Ubuntu Terminal终端默认常用快捷键总结

    Ubuntu Terminal终端默认常用快捷键总结 Ubuntu Terminal终端快捷键默认设置如下 xff0c 不同的发行版本可能有所出入 xff0c 以下快捷键在Ubuntu18 04LTS下可用 1 文件 快捷键说 明Ctrl
  • 基于c++ boost库实现进程管理

    基于c 43 43 boost库实现进程管理 1 前言 基于c 43 43 boost库与Terminator终端 xff0c 实现启动进程 进程运行状态监听 自动重启进程 杀死进程 设置进程环境变量等基础功能 2 原理 启动 杀死进程基于
  • 【RT-Thread】UART 设备源码分析

    官网介绍 I O 设备模型框架如下图 xff1a 但看到官网写道 设备驱动层是一组驱使硬件设备工作的程序 xff0c 实现访问硬件设备的功能 它负责创建和注册 I O 设备 xff0c 对于操作逻辑简单的设备 xff0c 可以不经过设备驱动
  • 基于c++ boost实现阻塞式ping指定IP

    基于c 43 43 boost实现阻塞式ping指定IP 1 前言 在实际业务场景中 xff0c 可能需要阻塞式检测目标IP连通性 xff0c 本程序基于c 43 43 boost库实现了一个简易的阻塞式ping指定IP例子 2 原理 在循
  • ROS_PACKAGE_PATH相关问题

    在ROS进行跨文件调用功能包时遇到报错 Resource not found The following package was not found span class token keyword in span span class t
  • 基于python批量调整图像大小

    前言 在写论文的时候常常因为截图的尺寸大小不一样 xff0c 导致图片排版很难受 xff0c 在word中又不会批量修改 xff0c 用下面的代码可以批量处理修改成一样的尺寸哦 xff01 代码如下 xff1a 在本文中 xff0c 我将向
  • PX4:【启动流程】

  • 线程池和多线程的区别

    线程池的概念 线程池大类总共分为4种 fixThreadPool 正规线程 xff08 传统线程池 xff09 cacheThreadPool 缓存线程池singleThreadPoll 单线程线程池 xff08 单例线程池 xff09 S
  • C++ libcurl Digest Auth

    C 43 43 libcurl Digest Auth postman操作如下 xff1a 附认证原理如下 xff1a MD5 md5 span class token punctuation span string HA1 span cl
  • 如何安装postman(超简单)

    方法一 xff1a xff08 官网下载 xff09 1 打开https www crx4chrome com crx 1058 2 稍微往下微微一拉就出现 Download crx file from Crx4Chrome gt 的选择
  • 转 curl 参数大全

    curl是一个非常实用的 用来与服务器之间传输数据的工具 xff1b 支持的协议包括 DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3 POP3S RTMP RT
  • DataX mysql同步到mysql

    使用Datax web 创建同步任务 准备工作 创建数据源 配置数据库相关信息 创建执行器 配置执行器执行地址相关信息 1 构建reade 1 1 SQL语句 xff08 querySql xff09 在json文件中此部分配置就是 que
  • MQTT协议简介

    目录 MQTT协议简介一 MQTT协议特点1 1 发布和订阅1 2 QoS Quality of Service levels 二 MQTT数据包结构2 1 MQTT固定头2 2 MQTT可变长 Variable header 2 3 消息
  • vins位姿图优化

    我们 的滑动窗口和边缘化方案限制了计算的复杂性 xff0c 但也给系统带来了累积漂移 更确切地说 xff0c 漂移发生在全局三维位置 x y z 和围绕重力方向的旋转 yaw 为了消除漂移 xff0c 提出了一种与单目VIO无缝集成的紧耦合
  • 基于STM32开发板实现温湿度传感数据采集

    一 实验要求 本实验将选用STM32F407ZGT6开发板进行项目开发 xff0c 选用的传感器为DHT11温湿度传感器 传感器将采集到的数据传输到STM32 xff08 MCU xff09 主控进行数据处理 xff0c 最后通过串口打印出
  • 相机成像模型、内参矩阵、外参矩阵

    相机针孔成像模型 基本的小孔成像过程 xff1a X坐标系是针孔所在坐标系 xff0c Y坐标系为成像平面坐标系 xff0c P为空间一点 xff0c 小孔成像使得P点在图像平面上呈现了一个倒立的像 xff0c 俯视图如下 xff1a 由三
  • 韦东山学习笔记——UART(串口)的使用

    基于jz2440的串口使用 搬砖的文章概述UART的发送和接收串口之间的数据传输UART的用途串口的数据帧参数说明起始位数据位奇偶校验位停止位波特率 怎么发送一字节数据 xff0c 比如 A UART的优缺点优点缺点 UART相关配置寄存器