韦东山学习笔记——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/RS232/RS485/RS-422笔记

    串口通讯详解笔记 串口通讯概述串口通讯传输数据帧的结构UARTRS232RS485RS 422RS 232 RS 422和RS 485的主要区别 xff08 重要 xff09 串口通讯概述 串口通讯是指数据按位 xff08 bit xff0
  • Jetson nano串口的使用——UART

    UART串口使用两条杜邦线就可以实现数据发送和接收 xff0c 可以很方便的与其他扩展进行数据连接 xff0c 比如微雪的L76X GPS HAT就可以直接连接40Pin的GPIO接口通过UART串口进行数据传递 接下来具体说明Jetson
  • 【IoT开发】UART通信高频测试

    测试所使用芯片 STM32F103RCT6 UART收发的极限频率 xff1a bytes s 1 发送频率 主程序循环发送一字节u8整型 xff0c 记录次数 while 1 t 43 43 if t 61 61 255 t 61 0 p
  • (十三)STM32——串口通信(UART)

    目录 学习目标 内容 通信方法 并行通信 串行通信 通信方向 通信方式 UART 特点 串口参数 通信流程 寄存器 USART SR USART DR USART BRR 过程 代码 运行结果 运行结果 遇到的问题 总结 学习目标 本节我们
  • 05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

    05 STM32F1 串行通信UART xff0c printf xff0c scanf重定向 在C 语言标准库中 xff0c fputc 函数是printf 函数内部的一个函数 xff0c 功能是将字符ch 写入到文件指针file所指向文
  • WK2114(一个异步串口UART 扩展为4个串口UART)

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

    DMA的概念 DMA xff08 Direct Memory Access xff09 即直接内存访问 xff0c DMA传输方式无需CPU直接控制传输 xff0c 通过硬件为RAM I O设备开辟一条直接传输数据的通路 xff0c 能使C
  • UART

    一 S3C2410内置的UART控制器 S3C2410内部具有3个独立的UART控制器 xff0c 每个控制器都可以工作在Interrupt xff08 中断 xff09 模式或DMA xff08 直接内存访问 xff09 模式 xff0c
  • UART通信中流控RTS和CTS的理解

    一 流控 xff0c 顾名思义就是流量控制的意思 目的是协调收发双方 xff0c 使数据不会丢失 如果UART只有RX TX两个信号 xff0c 要流控的话只能是软流控 xff1b 如果有RX xff0c TX xff0c CTS xff0
  • HAL_UART_IRQHandler(UART_HandleTypeDef *huart)里面的中断接收函数(作者自己生成的函数代码,中间有关闭接收中断,但是原子教程中没有关闭中断的语句注意区别)

    前言 1 UART Receive IT 2 HAL UART Receive 3 HAL UART Receive IT 前言 看了很长时间串口中断的HAL库 xff0c 最容易混淆的就是函数的名称 xff0c 主要集中在UART Rec
  • UART串口通信协议概述

    1 UART协议介绍 UART是一种通用串行数据总线 xff0c 用于异步通信 UART能实现双向通信 xff0c 在嵌入式设计中 xff0c 常用于主机与辅助设备通信 UART包括RS232 RS449 RS423等接口标准规范和总线标准
  • UART,SPI,IIC,RS232通信时序和规则

    一 UART 1 串口通信方式 2 串口通信步骤 注意 xff1a 串口协议规定 xff0c 闲置时必须是高电平 校验位 xff1a 是使用奇偶校验 停止位必须高电平 一个0和多个0区分是靠掐时间 异步通信 xff1a 时钟各不一样 二 I
  • 嵌入式Linux应用开发笔记:串口

    文章目录 目的 基础说明 开发准备 设备树 应用程序 应用程序与演示 代码 演示 总结 设备树文件 目的 串口 UART 是嵌入式设备中比较常用的功能 这篇文章将记录下应用程序中串口操作相关内容 这篇文章中内容均在下面的开发板上进行测试 新
  • Verilog功能模块——Uart收发

    摘要 本文分享了一种通用的Uart收发模块 可实现Uart协议所支持的任意波特率 任意位宽数据 5 8 任意校验位 无校验 奇校验 偶校验 1校验 0校验 任意停止位 1 1 5 2 的数据传输 此模块需要搭配FIFO使用 以消除发送端和接
  • UART串口协议

    通用异步收发传输器 Universal Asynchronous Receiver Transmitter 通常称作UATR 是一种异步收发传输器 将数据由串行通信与并行通信间做传输转换 作为并行输入称为串行输出的芯片 UART是一种通用串
  • STM32CubeMX HAL库串口+DMA+IDLE空闲中断不定长度数据接收和发送

    本文开发环境 MCU型号 STM32F103ZET6 IDE环境 MDK 5 29 代码生成工具 STM32CubeMx 5 3 0 HAL库版本 STM32Cube FW F1 V1 8 0 STM32Cube MCU Package f
  • 启用并测试 UART 的本地环回

    我正在尝试进行 UART 内部环回测试并提出以下更改 include
  • GATT 配置文件和 UART 服务

    我是开发通过蓝牙连接到外围设备的移动应用程序的新手 我搜索到 GATT 是用于蓝牙LE 通信的相关配置文件 但我们的客户建议我们使用 UART 服务 现在我很困惑 1 这两件事是如何关联的 2 我们是否必须选择其中之一 如果是的话 每一个的
  • C语言UART通信(十六进制)

    我想向写入函数发送一个十六进制值 例如 0 90 这是因为需要通信的设备接收到的是十六进制数的命令 未使用的变量在测试时出现 并注释为丢失十六进制值 稍后将被删除 如何编写具有字符串以外的十六进制值的写入函数 对于初学者 请告诉我们如何通过
  • 如何在R中从串口读取数据

    我想绘制来自串行端口的实时数据 我认为 R 将是完成这项工作的好工具 我在尝试从串行端口 COM4 读取数据时遇到了困难 我已经验证数据是通过 terra term 传入的 并在尝试 R 之前关闭会话 但我似乎无法在 R 中获取任何内容 我

随机推荐

  • 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相关配置寄存器