串口通信实验_第1页
串口通信实验_第2页
串口通信实验_第3页
串口通信实验_第4页
串口通信实验_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、串口通信实验一、实验目的1.掌握ARM的串行口工作原理。2.学习编程实现ARM的UART通讯。3.掌握CPU利用串口通讯的方法。二、实验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM和计算机实现串行通讯:ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。三、实验原理介绍通信方式在通信过程中,如果通信仅在点对点之间进行,或者点对多点之间进行,那么,按消息传输的方向和时间的不

2、同,可以将通信分为单工通信、全双工通信以及半双工通信。(1)单工消息只能单方向进行传输的一种通信方式称为单工通信。如图8-1所示,通信只能从A传输到B。这好比一条绝对方向的单行道路,不准双向通信也不能逆向行驶。在现代通信系统中,如模拟广播电视系统(不包括现正在研究应用的HFC双向网络)、无线寻呼系统等。信号只能从广播电视台、无线寻呼中心发送到电视机接收机、BB机上。图8-1 单工通信方式(2)全双工全双工通信是指通信双方可以同时进行双向数据传输而互不影响的工作方式。如图8-2所示,在这种工作方式下,通信双方都可以同时进行信息的发送和接收,因此,全双工通信的信道必须是双向信道。如果是有线的全双工

3、方式,通信双方会有两根独立的信号线分别传输发送信号和接收信号,从而使得发送和接收可同时进行。生活中的普通电话系统、移动通信系统都是全双工方式。图8-2 双工通信方式(3)半双工这种方式允许数据传输做双向操作,即不仅可以发送,亦可以接收信号,但是,在同一时刻,只能进行发送和接收任意一个操作。因此仍然只采用一个信道。如图8-3所示,如果是有线通信,通信双方只需要一根数据线连接,但是比全双工方式耗时会更多。如对讲机系统就是采用的半双工通信方式。图8-3 半双通信方式串行同步通信与串行异步方式在通信过程中,发送方和接收方每次都只发送和接收一位数据的通信方式称为串行通信方式。也就是说,在任意一个时刻,数

4、据线上仅有一位数据。在传输数据过程中,双方需要协商时钟信号,即规定什么时候发送数据和接收数据,以及每位数据所占用的时间宽度。根据双方接收和发送数据所采用的时钟信号是否是同一个时钟源而分为串行异步通信方式和串行同步通信方式。串行异步通信方式中,通信双方采用自己的时钟信号,根据信号的起始位等判断信息,因此接收和发送仅需要两根信号线分别用来传送和接收信号。而串行同步通信方式中,由通信双方的一方(或者另外设备)提供统一的时钟信号,在一定程序上提高通信速率,但这种通信方式需要额外的时钟信号线。另外,这种通信方式不适合远距离传输,因为远距离会使时钟信号受到干扰,出现误码等现象。(1)串行异步通信方式在异步

5、传输模式下,传输数据以字符为单位,数据传输速率多在1.2kb/s以下。当发送一个字符代码时:l        字符前面要加一个起始信号,其长度为一个码元,极性为“0”,即空号极性。l        字符后面要加一个终止符号,其长度为1-2个码元,极性为“1”,即传号极性。加上起始终止信号后,即可区分出所传输的字符,传送时,字符可以连续发送,也可以单独发送,不发字符时线路保持“1”状态,如图8-4所示为起止式同步传输序列,每个字符由8bit组成,加上起止位,

6、信号共11位,两字符之间的间隔长度可以不固定。实现起来比较简单。图8-4 异步传输模式帧格式异步串行通信协议规定字符数据的传输规范总结起来有以下几点:起始位:通信线上没有数据被传送时处于逻辑“1”状态,当发送设备要发送一个字符数据时,首选发送一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收机,接收设备检测到这低电平后,就开始准备接收数据位信号。起始位所起的作用就是使设备同步,通信双方必需在传送数据位前一致同步。数据位:当接收设备收到起始位后,开始接收数据位。数据位的个数可以是5-9位,PC机中经常采用7-8位数据传送。在字符传送过程中,数据位从最低有效位开始传送,依次在接

7、收设备中被转换为并行数据。奇偶校验位:数据位发送完后,为了保证数据的可靠性传输,常传送奇偶校验位。奇偶校验用于有限差错检测。如果选择偶校验,则数据位和奇偶位的逻辑“1”的个数必须为偶数,相反,如果是奇校验,逻辑“1”的个数为奇数。停止位:在奇偶位或者数据位(当无奇偶校验时)之后发送停止位。停止位是一个字符数据的结束,可以是1-2位的低电平,接收设备收到停止位后,通信线路便恢复逻辑“1”状态,直到下一个字符数据的起始位到来。波特率设置:通信线路上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据的码元传送速率确定,而码元速率是单位时间内传送的码元的个数,即波特率。(2)串行同步通信方

8、式在同步通信中,通信双方使用同一个时钟源,这个时钟信号可以由通信方式的一方提供或者由第三方提供。其时序图如图8-5所示,所有要传输的数据都需要与此时钟信号同步,即每个传输的数据所占用的时间宽度都需要与一个时钟变换所用时间相等。即数据在时钟跳变(上升沿和下降沿)后一段时间内有效。相应的,接收方根据时钟跳变来确定何时接收一位数据。同步传输使用不同的方式来表示一次传输的开始和结束。图8-5 串行同步通信方式S3C2410芯片UART基于ARM9内核架构的嵌入式处理器的S3C2410的UART(Universal Asynchronous Receiver and Transmitter)单元拥有3个

9、SIO(saynchronous serial I/O),每个单元都可以工作在中断模式以及DMA(Direct Memory Access)模式。UART最大速率可以达到230.4kbps。如果外部设备提供一个时钟信号,其可以工作在更新的通信速率。每个UART通道都包含两个16bit的FIFO来接收和发送数据。S3C2410处理器的UART支持可编程波特率、IR(infra-red)传输,12位停止位,58位数据宽度,同时支持奇偶校验。S3C2410芯片UART结构图如图8-11所示为S3C2410芯片UART结构图。图8-11 S3C2410芯片UART结构图数据发送S3C2410芯片UAR

10、T支持可编程数据传输帧格式。在数据帧中包含起止位、58位数据位、一位奇偶校验位以及12位停止位。具体设置可以在控制寄存器(ULCONn)设置。同时,传输装置支持中断方式,即在传输的时候强制输出逻辑0中断信号。此中断信号在完成一个字符传输后传输,之后传输器继续传输数据至Tx FIFO。数据接收同理,接收器亦支持可编程方式,同样包含起止位、58位数据位、一位奇偶校验位以及12位停止位,具体设置可以在控制寄存器(ULCONn)设置。接收器亦可以探测到数据溢出错误、奇偶校验错误、帧错误以及中断信号,并且每种情况都可置相应的错误标识。数据溢出错误:在上一字符没有接收完成时新的数据已经到达,从而覆盖了原来

11、的数据。奇偶校验错误:奇偶位不满足奇偶条件。帧错误:接收数据没有有效的停止位。中断信号:RxDn输出持续逻辑0信号(持续时间超过一帧)。功能寄存器(1)列控制寄存器S3C2410的UART单元包含三个列控制寄存器,分别是ULCON0, ULCON1和ULCON2。其说明如表8-6所示。表8-6 列控制寄存器寄存器地址读/写说明复位值ULCON00x50000000可读/写UART0列控制寄存器0x00ULCON10x50004000可读/写UART1列控制寄存器0x00ULCON20x50008000可读/写UART2列控制寄存器0x00ULCONn各位功能描述如表8-7所示。表8-7 ULC

12、ONn各位功能描述ULCONn位说明初始化状态保留位7 0红外模式6设置是否采用红外模式。0普通模式,1红外模式0奇偶校验模式5:3设置在奇何偶校验模式方式:0XX:无;100奇校验;101偶校验;110强制为1;111强制为0。000停止位2设置每帧停止位位数:01位停止位;1两位停止位。0字长度1:0设置每帧数据位长度:005位、01=6位、10=7位、11=8位。0(2)控制寄存器S3C2410的UART单元包含三个控制寄存器,分别是UCON0, UCON1和UCON2。其说明如表8-8所示。表8-8控制寄存器寄存器地址读/写说明复位值UCON00x50000004可读/写UA

13、RT0控制寄存器0x00UCON10x50004004可读/写UART1控制寄存器0x00UCON20x50008004可读/写UART2控制寄存器0x00UCONn各位功能描述如表8-9所示。表8-9 UCONn各位功能描述UCONn位说明初始化状态时钟选择10选择时钟来源。0=PCLK,1=UCLK。0Tx中断类型9中断请求类型。0Pulse。1Level。0Rx中断类型8中断请求类型。0Pulse。1Level。0Rx超时7禁止/允许接收超时终端。0=禁止;1允许。0接收错误状态中断允许6当产生异常时使能UART产生中断中断。如帧错误、奇偶校验错误、溢出错误。0不产生,1产生。0回环模式

14、5设置是否进入回环模式。0普通模式;1回环模式。0发送中断信号4设置UART产生中断信号。如果发出一个中断后,此位将自动清0。0普通传输,1发送中断信号。0传输模式3:2决定当前UART采用何种传输模式。00=禁止;01中断或者轮流模式;10DMA0请求(UART0),DMA3请求(UART2);11DMA1请求(UART0)。00接收模式1:0决定当前UART采用何种接收模式。00=禁止;01中断或者轮流模式;10DMA0请求(UART0),DMA3请求(UART2);11DMA1请求(UART0)。00(3)FIFO控制寄存器S3C2410的UART单元包含三个FIFO控制寄存器,分别是U

15、FCON0, UFCON1和UFCON2。其说明如表8-10所示。表8-10 FIFO控制寄存器寄存器地址读/写说明复位值UFCON00x50000008可读/写UART0 FIFO控制寄存器0x00UFCON10x50004008可读/写UART1 FIFO控制寄存器0x00UFCON20x50008008可读/写UART2 FIFO控制寄存器0x00ULCONn各位功能描述如表8-11所示。表8-11 UFCONn各位功能描述UFCONn位说明初始化状态Tx FIFO触发方式7:6决定传输FIFO信号标准。00 =空,01 = 4-byte,10 = 8-byte,11 = 12-byte

16、。00Rx FIFO触发方式5:4决定接收FIFO信号标准。00 = 4-byte,01 = 8-byte,10 = 12-byte,11 = 16-byte。00保留3 0Tx FIFO复位2自动清零。0 = 一般模式 1= Tx FIFO复位。0Rx FIFO复位1自动清零。0 = 一般模式 1= Tx FIFO复位。0FIFO使能00禁止,1使能。0(4)MODEM控制寄存器S3C2410的UART单元包含三个MODEM控制寄存器,分别是UMCON0, UMCON1和UMCON2。其说明如表8-12所示。表8-12 MODEM控制寄存器寄存器地址读/写说明复位值UMCON00x

17、5000000C可读/写UART0 MODEM控制寄存器0x00UMCON10x5000400C可读/写UART1 MODEM控制寄存器0x00保留0x5000800C-保留-ULCONn各位功能描述如表8-13所示。表8-13 MODEM各位功能描述MODEMn位说明初始化状态保留7:5这些位必须为000AFC41使能,0禁止0保留3:1这些位必须为0000请求发送0如果使能AFC,此位将被忽略。S3C2410将自动控制nRTS信号。如果禁止AFC。nRTS必须由软件控制。0高电平,1低电平。0(5)Tx/Rx状态寄存器S3C2410的UART单元包含三个Tx/Rx状态寄存器,分别是UTRS

18、TAT 0, UTRSTAT1和UTRSTAT 2。其说明如表8-14所示。表8-14 MODEM控制寄存器寄存器地址读/写说明复位值UTRSTAT00x50000010可读UART0 Tx/Rx状态寄存器0x6UTRSTAT 10x50004010可读UART1 Tx/Rx状态寄存器0x6UTRSTAT20x50008010可读UART2 Tx/Rx状态寄存器0x6UTRSTAT n各位功能描述如表8-15所示。表8-15 UTRSTATn各位功能描述UTRSTAT n位说明初始化状态传输装置空2当传输buffer寄存器没有可用数据传输或者传输移位寄存器为空时自动设置为1。0非空;1空。1传

19、输Buffer空1当传输寄存器为空时自动设置为1。0非空,1空。1接收Buffer数据准备好0当接收buffer寄存器有有效数据通过RxDn端口接收数据。0空,1有接收数据。0(6)错误状态寄存器S3C2410的UART单元包含三个错误状态寄存器,分别是UERSTAT0, UERSTAT1和UERSTAT2。其说明如表8-16所示。表8-16 错误状态寄存器寄存器地址读/写说明复位值UERSTAT 00x50000014可读UART0 错误状态寄存器0x0UERSTAT 10x50004014可读UART1 错误状态寄存器0x0UERSTAT 20x50008014可读UART2 错误状态寄存

20、器0x0UERSTAT n各位功能描述如表8-17所示。表8-17 UERSTAT n各位功能描述UERSTAT n位说明初始化状态保留30接收时无帧错误;1帧错误。0帧错误2在接收操作时无论何时出现错误将自动置1。0无帧错误。1帧错误。0保留10无帧错误。1帧错误。0溢出错误0无论何时发生溢出错误将置此位为1。0无错误。1溢出错误。0(7)FIFO状态寄存器S3C2410的UART单元包含三个FIFO状态寄存器,分别是UFSTAT0, UFSTAT1和UFSTAT2。其说明如表8-18所示。表8-18 FIFO状态寄存器寄存器地址读/写说明复位值UFSTAT 00x50000018可读UAR

21、T0 FIFO状态寄存器0x00UFSTAT 10x50004018可读UART1 FIFO状态寄存器0x00UFSTAT 20x50008018可读UART2 FIFO状态寄存器0x00UFSTAT n各位功能描述如表8-19所示。表8-19 UFSTAT n各位功能描述UFSTAT n位说明初始化状态保留15:100接收时无帧错误;1帧错误。0Tx FIFO满9如果传送FIFO满将自动设置此位为1。00位Tx FIFO数据15位;1FULL。0Rx FIFO满8如果接收FIFO满将自动设置此位为1。00位Tx FIFO数据15位;1FULL。0Tx FIFO计数器7:4Tx FIFO数据个

22、数。0Rx FIFO计数器3:0Rx FIFO数据个数。0(8)MODEM状态寄存器S3C2410的UART单元包含三个MODEM状态寄存器,分别是UMSTAT0, UMSTAT1和UMSTAT2。其说明如表8-20所示。表8-18 MODEM状态寄存器寄存器地址读/写说明复位值UMSTAT 00x5000001C可读UART0 FIFO状态寄存器0x00UMSTAT 10x5000401C可读UART1 FIFO状态寄存器0x00保留0x5000801C-保留-UMSTAT n各位功能描述如表8-20所示。表8-20 UMSTAT n各位功能描述UMSTAT n位说明初始化状态保留3

23、0;0Delta CTS2指示nCTS值相对于上次CPU读取输入状态发生了改变。0没有发生变化,1变化。0保留1 0发送清除00CTS信号没有激活(高电平);1CTS激活(低电平)。0(9)传输缓冲寄存器S3C2410的UART单元包含三个传输缓冲寄存器,分别是UTXH0, UTXH1和UTXH2。其说明如表8-21所示。表8-21 传输缓冲寄存器寄存器地址读/写说明复位值UTXH 00x50000020(L)0x50000023(B)可写(字节)UART0 传输缓冲寄存器 UTXH 10x50004020(L)0x50004023(B)可写(字节)UART1 传输缓冲寄存

24、器 UTXH20x50008020(L)0x50008023(B)可写(字节)UART2 传输缓冲寄存器 (10)接收缓冲寄存器S3C2410的UART单元包含三个接收缓冲寄存器,分别是URXH0, URXH1和URXH 2。其说明如表8-22所示。表8-22 接收缓冲寄存器寄存器地址读/写说明复位值URXH 00x50000024(L)0x50000027(B)可写(字节)UART0 接收缓冲寄存器 URXH 10x50004024(L)0x50004027(B)可写(字节)UART1 接收缓冲寄存器 URXH 20x50008024(L)0x5000

25、8027(B)可写(字节)UART2 接收缓冲寄存器 (11)波特率约数寄存器S3C2410的UART单元包含三个波特率约数寄存器,分别是UBRDIV0, UBRDIV1和UBRDIV2。其说明如表8-232所示。表8-23 波特率约数寄存器寄存器地址读/写说明复位值UBRDIV 00x50000028可读/写UART0 波特率约数寄存器 UBRDIV10x50004028可读/写UART1 波特率约数寄存器 UBRDIV 20x50008028可读/写UART2 接波特率约数寄存器 S3C2410串行接口硬件电路如图8-13所示为S3C2410芯片UA

26、RT采用MAX3232进行电平转换,从而输出RS232C标准信号的电路图。MAX3232主要实现电平转换功能。两个DB9硬件接口(UART0、UART1)可以直接与计算机以及其它符合RS232C标准的串行接口直接相连。MAX3232左侧的TXD0、RXD0、TXD1、RXD1分别与S3C2410芯片UART0和UART1相连。图8-13S3C2410芯片UART接口电平转换电路四、串行通信实验及C源代码分析本处给出一个无操作系统支持的串行通信测试程序及源码分析及试验步骤,此试验步骤以博创UP-NETARM2410为试验平台,其串行通信接口电路图如图8-11所示,软件开发平台为ADS1.2(AR

27、M Developer Suite v1.2)。如果读者选用其它硬件平台,试验步骤可能略有差异。但是,此程序可以不经过任何修改即可直接使用。因为采用无操作系统支持的方式编译此程序,因此,此程序在上传到试验箱时最好能够有bootloader程序加载。当然,读者也可以采用直接烧写的方式加载。根据图8-11所示硬件电路,此硬件连接方式中每一个串口有两根信号线(TXD和RXD)分别用来传输和发送数据。因此,本试验采用串口异步通信方式。与此程序相关的源代码如下所示。(1)与UART相关的寄存器宏定义。l       #define UART_C

28、TL_BASE      0x50000000  /*UART寄存器基地址 */l       #define UART0_CTL_BASE     UART_CTL_BASE    /*UART0寄存器基地址 */l       #define UART1_CTL_BASE     UART_CTL_BAS

29、E + 0x4000   /*UART1寄存器基地址 */l       #define UART2_CTL_BASE     UART_CTL_BASE + 0x8000   /*UART2寄存器基地址 */l       #define bUART(x, Nb)    _REG(UART_CTL_BASE + (x)*0x4000 + (Nb)l 

30、60;     /* Offset */l       #define oULCON             0x00 /* R/W, UART 线性控制寄存器 */l       #define oUCON           0x04

31、/* R/W, UART 控制寄存器 */l       #define oUFCON             0x08 /* R/W, UART FIFO控制寄存器 */l       #define oUMCON             0x0C /* R

32、/W, UART modem 控制寄存器 */l       #define oUTRSTAT        0x10 /* R  , UART Tx/Rx状态寄存器 */l       #define oUERSTAT        0x14 /* R  , UART Rx error状态寄存器 */l   

33、;    #define oUFSTAT         0x18 /* R  , UART FIFO 状态寄存器 */l       #define oUMSTAT         0x1C /* R  , UART Modem 状态寄存器*/l       #def

34、ine oUTXHL             0x20 /*  W, UART transmit(小端模式) buffer */l       #define oUTXHB             0x23 /*  W, UART transmit(大端模式) buffer */l 

35、60;     #define oURXHL             0x24 /* R  , UART receive(小端模式) buffer */l       #define oURXHB             0x27 /* R  , UART r

36、eceive(大端模式) buffer */l       #define oUBRDIV         0x28 /* R/W, 波特率约数 寄存器 */l       /* Registers */l       #define ULCON0       

37、0;     bUART(0, oULCON)l       #define UCON0           bUART(0, oUCON)l       #define UFCON0             bUART(0, oUFCON)l

38、60;      #define UMCON0             bUART(0, oUMCON)l       #define UTRSTAT0        bUART(0, oUTRSTAT)l       #define UERSTAT0

39、0;       bUART(0, oUERSTAT)l       #define UFSTAT0         bUART(0, oUFSTAT)l       #define UMSTAT0         bUART(0, oUMSTAT)l 

40、60;     #define UTXH0           bUART(0, oUTXHL)l       #define URXH0           bUART(0, oURXHL)l       #define UBRDIV0  

41、;       bUART(0, oUBRDIV)l       #define ULCON1             bUART(1, oULCON)l       #define UCON1          bUART(1, oUCO

42、N)l       #define UFCON1             bUART(1, oUFCON)l       #define UMCON1             bUART(1, oUMCON)l    &

43、#160;  #define UTRSTAT1        bUART(1, oUTRSTAT)l       #define UERSTAT1        bUART(1, oUERSTAT)l       #define UFSTAT1         bUAR

44、T(1, oUFSTAT)l       #define UMSTAT1         bUART(1, oUMSTAT)l       #define UTXH1           bUART(1, oUTXHL)l       #define

45、 URXH1           bUART(1, oURXHL)l       #define UBRDIV1         bUART(1, oUBRDIV)l       #define ULCON2        

46、60;    bUART(2, oULCON)l       #define UCON2           bUART(2, oUCON)l       #define UFCON2             bUART(2, oUFCON)l &#

47、160;     #define UMCON2             bUART(2, oUMCON)l       #define UTRSTAT2        bUART(2, oUTRSTAT)l       #define UERSTAT2 

48、60;      bUART(2, oUERSTAT)l       #define UFSTAT2         bUART(2, oUFSTAT)l       #define UMSTAT2         bUART(2, oUMSTAT)l  &#

49、160;    #define UTXH2           bUART(2, oUTXHL)l       #define URXH2           bUART(2, oURXHL)l       #define UBRDIV2  

50、0;      bUART(2, oUBRDIV)(2)发送一个字符l       #define WrUTXH0(ch)  (*(volatile unsigned char *) UTXH0)=(unsigned char)(ch)l       #define WrUTXH1(ch)  (*(volatile unsigned char *) UTXH1)=(unsigned char)(ch)l&#

51、160;         void Uart_SendByten(int Uartnum, U8 data)/向uartnum发送数据datal                                  

52、;                 /#define U8 unsigned charl          if(Uartnum=0)l           while(!(UTRSTAT0 & 0x4);    

53、0;   / UART0 Tx/Rx状态寄存器,其第2位标识传输buffer寄存器/是否为空(0为空),发送数据直到传输buffer寄存器为空l              hudelay(10);          /等待10msl            &#

54、160; WrUTXH0(data);        /发送data到传输UTXH0中l           l          Else                  &#

55、160;      /否则选用UART1l           l              while(!(rUTRSTAT1 & 0x4);  l              hudelay

56、(10);l              WrUTXH1(data);l             l             (3)接收字符测试程序l          c

57、har Uart_Getchn(char* Revdata, int Uartnum, int timeout)l                    / Revdata为接收的数据,uartnum为串口标识,timeout为超时l          if(Uartnum=0)l     

58、;         l              while(!(UTRSTAT0 & 0x1);/UART0 Tx/Rx状态寄存器的第0位标识接收l                      

59、;              /buffer数据是否准备好。1有接收数据l              *Revdata=URXH0();         / URXH0:UART0的接收缓冲寄存器l       

60、0;      return 1;l             l          Else                    /如果从UART1接收数据l 

61、0;            l              while(!(rUTRSTAT1 & 0x1);/Receive data readl              *Revdata=RdURXH1();l   &

62、#160;          return TRUE;l             l       (4)测试主程序l       int main(void)l       l       

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论