【单片机】12-串口通信和RS485
1.通信有关的常见概念
区分:串口,COM口,UART,USART_usart和串口区别-CSDN博客
串口、COM口、UART口, TTL、RS-232、RS-485区别详解-CSDN博客
1.什么是通信
(1)人和人之间的通信:说话,写信
(2)人和计算机之间的通信:按键,显示器,鼠标
(3)计算机和计算机之间的通信
2.通信的关键
(1)事先约定
(2)基本的信息单元
(3)有效信息的编码,传输和解码
3.通信的专业性概念
(1)同步和异步:同一个步调
(2)单工,半双工,全双工:数据传输方向
(3)并行和串口:并行(多根线),串行(单根线)
(4)电平信号【传输近,易受干扰】和差分信号【传输远,不易受干扰】:电平是通过高低电平进行区分,差分是相对的
2.串行通信
1.串口通信基础
(1)一种特定的通信协议【电平通信】
(2)串行通信,串口通信,UART,USART
(3)串口通信的特点:异步,串行,全双工
2.串行通信的主要用途
(1)早期:计算机之间短距离通信(1.5米内),完备通信机制
(2)现在:CPU之间近距离通信【CPU和周边芯片】,调试信息输入输出,非完备通信
3.串行通信的工作方式
(1)3根线(GND,RxD【接收线】,TxD【发送线】---recive ,transmit)---不完备通信
或者9根线(DB9)-完备通信
(2)发送方有发送位移寄存器,接收方有接收移位寄存器
(3)数据在发送方和接收方的CPU中都以字节为单位整字节处理
(4)数据在通信线上以位为单位逐个bit的传输
4.串行通信的主要概念
传输都是一帧一帧的发
1.起始位
开始之前要发送一个起始位
2.数据位
比如我们传输“A”,转换为ASCII就是8位二进制,这8位就叫做8位数据位【有效数据】
数据位要双方沟通确定的
3.奇偶校验位
判断传输过程中是否出错
4.停止位(帧)
判断是否结束
5.波特率
串行通信的速度
一秒钟传输多少给bit位,发送方和接收方必须波特率设置为一样【波特率越小,传输速度慢,抗干扰能力越强】
6.流控
速率协商,现在一般要禁用掉
3.51单片机的串行通信
1.基础概念
SoC:把CPU以及其他功能集成到一个芯片上
(1)串行通信功能是SoC的一个(内部)外设提供的,与CPU无关【CPU=运算器+控制器】--CPU本身无法通信
(2)各种不同的SoC的串行通信大同小异【内部差不多,编程时候可能不同】
(3)串行通信经常作为主控SoC与其他外部芯片之间的通信接口【串行通信==SoC与外部其他芯片的通信】
2.STC51单片机的串行通信简介
4.STC51的串行通信相关寄存器
1.总体浏览
2.SCON:串行控制寄存器
3.SBUF:串行口缓存寄存器
4.PCON:电源控制寄存器
5.IE:中断允许寄存器
6.串口发送时的软硬件协作方式
(1)查询方式。硬盘在发送完一帧数据后会将一个标志位置位(标志位本来是0),软件需要不断读取这个标志位的值来判断硬件是否完成了发送(如果读出来的是0就表示硬件还在发还在发还没完还在忙,所以我们就不能认为硬件发完了,所以就不能给硬件安排下一帧数据的发送;如果读出来的是1则说明硬件已经发完了上一帧数据,这时候软件就应该给硬件在给一帧数据去发送)
(2)因为串口发送完这个事件对CPU来说是个异步事件(因为不知道什么时候发送消息),所以这里查询方式来处理和之前讲过的查询方式处理按键是非常类似的。
(3)常见情况下:串口发送会使用查询方式,串口接收会使用中断方式【因为不知道什么时候会接收到信息,使用中断才不会过度销毁CPU】
7.波特率加倍
PCON中的SMOD
所谓波特率加倍,就是正常计算出的波特率假设是2400,那么SMOD=1时则实际波特率就是4800;当SMOD=0时不加倍,也就是2400还是2400
5.STC51的串行通信实战
1.硬件接线分析
(1)目标:将PC机和51单片机通过串口连接起来
(2)PC机的串口情况:台式机串口,笔记本USB转串口
(3)开发板原理图分析
2.接线方案
1.使用板载CH340
什么都不用动,默认就是使用这个,最简单最省事,最推荐
2.使用DB9接口USB转串口线
用DB9接口的USB转串口线
注意:跳线帽接到DB9一侧
3.使用TTL接口USB转串口线
只接三根线:TxD,RxD,GND
4.总结
3.使用板载CH340进行串口实践
1.接线+下载程序
2.查看设备管理器确定COM号
3.方法一:使用普中下载软件自带的串口助手监视
4.方法二:使用第三方串口助手软件监视
5.方法三:使用SecureCRT软件监视
4.使用DB9接口USB转串口线
1.接线+下载程序
2.注意对下载程序的影响
此时无法进行程序下载
3.使用各种方式进行监视
5.串口初始化
//串口初始化函数
//预设一个串口条件:8位数据位,1停止位,0校验位,波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){SCON=0x50; //串口工作在模式1(8位串口),允许接收PCON=0x80; //波特率加倍,意思是本来需要波特率4800,等一下计算时按照2400去计算就好}
6.波特率计算
SMOD---》判断是否进行波特率加倍【如果加倍则为1,不加倍则为0】
查看数据手册中”串行通信中波特率的设置“
接着查看定时/计数器1的工作方式2的寄存器设置情况
TMOD=0x20; //设置T1为模式2
TR1=1; //开启T1让它开始工作
我们刚刚在上面计算出TH1=243;,所以进行设置
TH1=243;
TL1=243; //8位自动重装,意思就是TH1用完了下一个周期TL1会自动重装到TH1中
7.串口发送字符【单个字符】
注意点:51单片机不一样,要先发送在检验有没有在发送
其他MCU都是先检验在发送
如果为【0】则表示在忙,如果为【1】则表示发送结束
//串口发送函数,发送一个字节
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUF=c;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI=0,表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI=0;
}
8.测试一下
1.波特率不加倍
#include<reg51.h>//函数声明
void uart_init(void);
void uart_send_byte(unsigned char c);
void delay();void main(){//第一步:初始化好串口到正确的状态uart_init();while(1){//为了调试方便,让A循环发送,才好监视//第二步:通过串口发送信息出去uart_send_byte('A');delay();}}void delay(){unsigned char i,j;for(i=0;i<100;i++){for(j=0;j<200;j++);}
}//串口初始化函数
//预设一个串口条件:8位数据位,1停止位,0校验位,波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){//波特率不加倍的例子SCON=0x50; //串口工作在模式1(8位串口),允许接收PCON=0x00; //波特率不加倍//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD=0x20; //设置T1为模式2TR1=1; //开启T1让它开始工作TH1=249;TL1=249; //8位自动重装,意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES=1;//串口中断初始化EA=1;//整个中断初始化}//串口发送函数,发送一个字节
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUF=c;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI=0,表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI=0;
}
因为我们算出来的TH1和TL1=6.5,所以精确度可能会受到影响,我们将其设置为250 或者 249则结果都会输出乱码
2.换一个波特率:9600
我们前面算出TH1=6.5【这里我们的波特率为4800】,所以如果为9600则我们应该将【6.5/2=3.25】才是我们9600的结果
//波特率为9600SCON=0x50; //串口工作在模式1(8位串口),允许接收PCON=0x00; //波特率不加倍//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD=0x20; //设置T1为模式2TR1=1; //开启T1让它开始工作TH1=253;TL1=253; //8位自动重装,意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES=1;//串口中断初始化EA=1;//整个中断初始化
9.串口发送字符串【多个字符】
#include<reg51.h>//函数声明
void uart_init(void);
void uart_send_byte(unsigned char c);
void delay();
void uart_send_string(unsigned char *str);void main(){//第一步:初始化好串口到正确的状态uart_init();while(1){//发送字符串,也可以发送中文uart_send_string("abcdefg");delay();}}void delay(){unsigned char i,j;for(i=0;i<100;i++){for(j=0;j<200;j++);}
}//串口初始化函数
//预设一个串口条件:8位数据位,1停止位,0校验位,波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){//波特率加倍的例子SCON=0x50; //串口工作在模式1(8位串口),允许接收PCON=0x80; //波特率加倍,意思是本来需要波特率4800,等一下计算时按照2400去计算就好//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD=0x20; //设置T1为模式2TR1=1; //开启T1让它开始工作TH1=243;TL1=243; //8位自动重装,意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES=1;//串口中断初始化EA=1;//整个中断初始化}//串口发送函数,发送一个字节【单个字节】
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUF=c;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI=0,表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI=0;
}//发送字符串【多个字符】
void uart_send_string(unsigned char *str)
{while (*str != '\0'){uart_send_byte(*str); // 发送1个字符str++; // 指针指向下一个字符}
}
10.串口接收函数编写
因为我们在程序执行过程中如果要接收PC机传输过来的数据,则表示程序要进行中断,则要进行中断处理。
void uart_isr(void) interrupt 4 using 1{
}
#include<reg51.h>//函数声明
void uart_init(void);
void uart_send_byte(unsigned char c);
void delay();
void uart_send_string(unsigned char *str);void main(){//第一步:初始化好串口到正确的状态uart_init();uart_send_string("串口回环测试\n");while(1);
}void delay(){unsigned char i,j;for(i=0;i<100;i++){for(j=0;j<200;j++);}
}//串口初始化函数
//预设一个串口条件:8位数据位,1停止位,0校验位,波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){//波特率加倍的例子SCON=0x50; //串口工作在模式1(8位串口),允许接收PCON=0x80; //波特率加倍,意思是本来需要波特率4800,等一下计算时按照2400去计算就好//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD=0x20; //设置T1为模式2TR1=1; //开启T1让它开始工作TH1=243;TL1=243; //8位自动重装,意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES=1;//串口中断初始化EA=1;//整个中断初始化}//串口发送函数,发送一个字节【单个字节】
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUF=c;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI=0,表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI=0;
}//发送字符串【多个字符】
void uart_send_string(unsigned char *str)
{while (*str != '\0'){uart_send_byte(*str); // 发送1个字符str++; // 指针指向下一个字符}
}//中断处理程序
void uart_isr(void) interrupt 4 using 1
{unsigned char tmp;if(RI){tmp=SBUF; //读取SBUF,其实就是读出串口接收到的1个字节//RI:串行口1接收中断标志RI=0;}//自此已经读到了PC发给单片机的一个字节,但是单片机没有显示器无法显示//我们用最简单的方法,就是直接回发uart_send_byte(tmp);
}
6.RS485
1.UART的缺点:传输距离受限
(1)理论上RS232不超过15米--电脑的COM端口【DB9】
(2)理论上TTL电平通信距离更短---TTL是在单片机上使用
(3)实际上几百米也有人宣称做到了,但是稳定性不能保证
(4)波特率越高通信距离越短【速度越快,通信距离越短】
2.远距离传输
(1)提高电压标准
(2)提高通信线抗干扰能力,降低阻抗
(3)使用差分信号--抗干扰能力强【RS485/RS422】
3.RS485(RS422)
(1)最大通信距离1200多米,最快通信速率10Mbps,距离和速度成反比(USB接口,网线)
(2)差分信号负逻辑【5V代表---0 -3V代表----1】
(3)更远距离可以加中继器【中继器---多个485的节点连接起来--放大】
(4)半双工【如果要实现全双工,则使用4根线】
(5)RS485只提高物理层通信能力,不提供数据层协议,需要用户自定义,或者使用标准协议如MODBUS协议。
4.MAX485
MAX485就是相当于UART与RS485之间的信号转换
(1)CPU本身只会提供URAT接口,而不会提供RS485接口。CPU根本不认识RS485
(2)RS485使用场景:CPUA-->UART转RS485------>远距离通信----->RS485转UART---->CPUB
(3)对RS485的理解:RS485是纯硬件实现的,硬件芯片如MAX485来管理的,根本不涉及软件编程。软件工程师只关注串口,只通过串口将数据发送出去或者接收回来即可。UART转485和485转UART对CPU来说是透明的。
相关文章:
【单片机】12-串口通信和RS485
1.通信有关的常见概念 区分:串口,COM口,UART,USART_usart和串口区别-CSDN博客 串口、COM口、UART口, TTL、RS-232、RS-485区别详解-CSDN博客 1.什么是通信 (1)人和人之间的通信:说话ÿ…...
一步步教你使用GDB调试程序:从入门到精通的全面指南
文章目录 Step1:安装GDB1.1、包管理器安装1.2、下载源码编译安装 Step2:编译程序时添加调试信息Step3:GDB启动、退出、查看代码Step4:GDB断点操作Step5:GDB调试操作5.1 单步调试5.2 多进程调试 调试是软件开发中非常重…...
OpenCV读取图像时按照BGR的顺序HWC排列,PyTorch按照RGB的顺序CHW排列
OpenCV读取RGB图像 在OpenCV中,读取的图片默认是HWC格式,即按照高度、宽度和通道数的顺序排列图像尺寸的格式。我们看最后一个维度是C,因此最小颗粒度是C。 例如,一张形状为2562563的RGB图像,在OpenCV中读取后的格式…...
基于安卓android微信小程序的校园维修平台
项目介绍 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整…...
mysql面试题16:说说分库与分表的设计?常用的分库分表中间件有哪些?分库分表可能遇到的问题有哪些?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说说分库与分表的设计? 在MySQL中,分库与分表是常用的数据库水平扩展技术,可以提高数据库的吞吐量和扩展性。下面将具体讲解MySQL中分库与分表…...
AlexNet网络复现
1. 引言 在现代计算机视觉领域,深度学习已经成为了一个核心技术,其影响力远超过了传统的图像处理方法。但深度学习,特别是卷积神经网络(CNN)在计算机视觉的主导地位并不是从一开始就有的。在2012年之前,计…...
pytorch模型量化和移植安卓详细教程
十一下雨,在家撸模型,希望对pytorch模型进行轻量化,间断摸索了几天,效果不错,做个总结分享出来。 量化是一种常见的技术,人们使用它来使模型在推断时运行更快,具有更低的内存占用和更低的功耗,而无需更改模型架构。在这篇博客文章中,我们将简要介绍量化是什么以及如何…...
C++(List)
本节目标: 1.list介绍及使用 2.list深度剖析及模拟实现 3.list和vector对比 1.list介绍及使用 1.1list介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,…...
分布式架构篇
1、微服务 微服务架构风格,就像是把一个单独的应用程序开发为一套小服务,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API。这些服务围绕业务能力来构建,并通过完全自动化部署机制来独立部署。这些…...
ros编译报错-- Could NOT find ros_ethercat_eml (missing: ros_ethercat_eml_DIR)
– Could NOT find ros_ethercat_eml (missing: ros_ethercat_eml_DIR) – Could not find the required component ‘ros_ethercat_eml’. The following CMake error indicates that you either need to install the package with the same name or change your environment …...
VD6283TX环境光传感器驱动开发(3)----测试闪烁频率代码
VD6283TX环境光传感器驱动开发----3.测试闪烁频率代码 概述视频教学样品申请源码下载参考代码开发板设置测试结果 概述 ST提供了6283A1_AnalogFlicker代码在X-NUCLEO-6283A1获取闪烁频率,同时移植到VD6283TX-SATEL。 闪烁频率提取主要用于检测光源的闪烁频率&#…...
透明度和透明贴图制作玻璃水杯
1、什么是透明度 模型透明度是指一个物体或模型在呈现时的透明程度。它决定了物体在渲染时,是否显示其后面的物体或背景。 在图形渲染中,透明度通常以0到1之间的值表示。值为0表示完全透明,即物体不可见,背景或其他物体完全穿透…...
【前后缀技巧】2022牛客多校3 A
登录—专业IT笔试面试备考平台_牛客网 题意: 思路: 这种是典中典中典,对于gcd,背包问题都是一样的处理方式 预处理出前缀lca和后缀lca,枚举哪个消失即可,可以统计方案数 Code: #include &l…...
Ae 效果:CC Page Turn
扭曲/CC Page Turn Distort/CC Page Turn CC Page Turn (CC 翻页)主要用于模拟书页翻动的效果。通过使用该效果,用户可以创建出像书页或杂志页面翻动的视觉效果,增强影片的交互性和视觉吸引力。 ◆ ◆ ◆ 效果属性说明 Contro…...
【数据仓库设计基础(四)】数据仓库实施步骤
文章目录 1.定义范围2.确定需求3.逻辑设计1)建立需要的数据列表2)识别数据源3)制作实体关系图 4.物理设计1)性能优化2)数仓的拓展性 5.装载数据6.…...
GridSearchCV 工具介绍
目录 1、定义 2、工作流程 3、示例代码 4、总结 1、定义 GridSearchCV 是一个用于超参数调优的工具,它在给定的参数网格中执行交叉验证,以确定最佳的参数组合。通过穷举搜索(exhaustive search)来寻找最佳参数,即…...
基于 SSM 框架的旅游文化管理平台
本系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。 开发环境: JDK版本:JDK1.8 服务器&…...
chatgpt技术总结(包括transformer,注意力机制,迁移学习,Ray,TensorFlow,Pytorch)
最近研读了一些技术大咖对chatgpt的技术研讨,结合自己的一些浅见,进行些许探讨。 我们惊讶的发现,chatgpt所使用的技术并没有惊天地泣鬼神的创新,它只是将过去的技术潜能结合现在的硬件最大化的发挥出来,也正因如此&am…...
vertx的学习总结4
一、异步数据和事件流 1.为什么流是事件之上的一个有用的抽象? 2.什么是背压,为什么它是异步生产者和消费者的基础? 3.如何从流解析协议数据? 1. 答:因为它能够将连续的事件序列化并按照顺序进行处理。通过将事件…...
SpringBoot心旅售票管理系统
本心旅售票管理系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA、springboot、vue等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。 采用技术: SpringBootVueMySQL...
CUDA C编程权威指南:1-基于CUDA的异构并行计算
什么是CUDA?CUDA(Compute Unified Device Architecture,统一计算设备架构)是NVIDIA(英伟达)提出的并行计算架构,结合了CPU和GPU的优点,主要用来处理密集型及并行计算。什么是异构计算࿱…...
R语言易错点(持续更新中~~)
1.R向量元素的索引(下标)是从1开始的,而非0 >x [1] 1 2 4>x[3] [1] 4 2.[]和[ [ ] ] mylist<-list(stud.id1234,stud.name"Tom",stud.marksc(10,3,14,25,19)) > mylist $stud.id [1] 1234$stud.name [1] "Tom"$stud.marks [1] 10…...
Multisim14.0仿真(二十七)基于UC3842的反激式开关电源的设计及仿真
一、UC3842简介: UC3842为固定频率电流模式PWM控制器。它们是专门为OFF−线和直流到直流转换器应用与最小的外部组件。内部实现的电路包括用于精确占空比控制的修剪振荡器、温度补偿参考、高增益误差放大器、电流传感比较器和理想适合于驱动功率MOSFET的高电流温度极…...
SpringMVC(二)@RequestMapping注解
我们先新建一个Module。 我们的依赖如下所示: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…...
NXP公司K60N512+PWM控制BLDC电机
本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡:1.塔式系统支撑模块(TWR-Elevator),用以连接微控制器以及周边模块;2.低…...
CAA的VS Studio安装
文章目录 一、官网下载VS Studio二、勾选如下安装信息三、更改软件安装位置四、17专业版密钥 一、官网下载VS Studio 官网下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 下载对应版本后,以VS Studio2017为例: 二、勾…...
条件查询和数据查询
一、后端 1.controller层 package com.like.controller;import com.like.common.CommonDto; import com.like.entity.User; import com.like.service.UserService; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; import …...
JSP旅游平台管理
本系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA、JSP等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。 开发环境: JDK版本:JDK1.8 服务器&…...
简单走近ChatGPT
目录 一、ChatGPT整体背景认知 (一)ChatGPT引起关注的原因 (二)与其他公司的竞争情况 二、NLP学习范式的发展 (一)规则和机器学习时期 (二)基于神经网络的监督学习时期 &…...
10.3作业
#include <myhead.h> int main(int argc, const char *argv[]) { mkfifo(“./f1”,0777); mkfifo(“./f2”,0777); pid_t cpid fork(); if(0 < cpid) { int fdw open(“./f1”,O_WRONLY); int fdr open(“./f2”,O_RDONLY); char buf[128] “”; while(1) { bzero…...
俱乐部网站模板/产品推广平台有哪些
刚刚偶然之间在书上看到了关于如何进行raid配置的内容,就顺便给大家截取下来了,大家有兴趣的可以看看...
宁德市住房和城乡建设局网站打不开/免费网页在线客服系统
urllib.request模块 版本 python2 :urllib2、urllib python3 :把urllib和urllib2合并 常用的方法 urllib.request.urlopen("网址") 作用 :向网站发起一个请求并获取响应字节流 response.read()字符串 response.read().deco…...
笔记本怎么做1920宽的网站/百度收录查询接口
Part1:写在最前 在MysQL5.6版本中,可以把undo log 回滚日志分离到一个单独的表空间里;其缺点是不能回收空间大小,until MysQL5.7,but MariadDB10.1暂不支持。 本文介绍并演示MysQL5.7是如何在线收缩undo log的。 undo log日志是保…...
网站怎么做评估/核心关键词和长尾关键词
这个题真的很水,但我竟然连错,在此警醒自己!!! 写代码改了东边,忘了西边,“认真”这两个字又被我吃了,打脸啪啪啪啪。 #include<iostream>using namespace std;int gcd(int a,…...
百度网站是百度公司做的吗/电脑系统优化软件十大排名
centos 6 调显示器分辨率 中文版 在系统 -- 首选项-- 显示 (或者是屏幕分辨率 ) 英文版是: system -- preference -- display 打开就看到调整分辨率的选项 本文转自linux博客51CTO博客,原文链接http://blog.51cto.com/yangzhiming/836055如需转载请自行联系原作者…...
外贸自己做网站/网站推广的几种方法
GPFS centos7部署实战准备工作(每个节点)安装(每个节点)创建集群(管理节点)准备工作(每个节点)集群时间同步yum install -y ntpdatentpdate ntp.sjtu.edu.cn关闭不必要的服务systemctl stop firewalldsystemctl disable firewalldsystemctl stop NetworkManagersystemctl disab…...