#IAR编译器MAXQ2000评估板使用入门_第1页
#IAR编译器MAXQ2000评估板使用入门_第2页
#IAR编译器MAXQ2000评估板使用入门_第3页
#IAR编译器MAXQ2000评估板使用入门_第4页
#IAR编译器MAXQ2000评估板使用入门_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、IAR 编译器和 MAXQ2000摘要:本应用笔记说明如何建立、构建和调试面向评估板使用入门MAXQ? 平台、以 C 语言编写的应用程序,并演示 MAXQ2000 的某些特性。引言MAXQ 平台得到了世界一流工具的支持,例如 IAR 专为 MAXQ 系列提供的 “嵌入式工作台 ” (Embedded Workbench 。本应用笔记说 明如何建立、构建和调试面向 MAXQ 平台、以 C 语言编写的应用程序。本文还将演示 MAXQ2000 的某些特性, MAXQ2000 是 MAXQ 系列的第一款微控制器。本应用采用专用于 MAXQ 平台的 1.12B 版 IAR 编译器编写。这些指令在后续版本

2、的产品中仍会保留。这些指令可以在 MAXQ2000 评估 板上执行。设置 MAXQ2000 评估板在开始编写代码前,首先连接 MAXQ2000 评估板。该评估板应含有 3 块电路板,其中一个带有小型 LCD 屏。最大的那个电路板 (图 1 中 连接了 LCD 子板的 就是 MAXQ2000 评估板。我们将在本文后面讨论它的特性。将 LCD 板连接至 MAXQ2000 评估板上标有 J3 的端 子。剩下的一块电路板是 JTAG 板。 MAXQ2000 装载器和调试引擎采用 JTAG 协议通信。因为很难找到通用的、用于个人计算机的商品化 JTAG 适配器, Dallas Semiconductor

3、提供了一个串行至 JTAG 转换板。评估板还包括了一个小型连接器。如 图 2 所示,使用该连接器来连接 MAXQ2000 评估板和 JTAG 板。通过电缆将 MAXQ2000 评估板上标有 J4 的端子和 JTAG 电路板上标有 P2 的端子连接在一起。 注意,连接电缆的红边应在两个板子上的引脚 “1”和“2”一侧。/ 14MAXQ2000 评估板上有 3 个跳线。跳线 JU1 、JU2 和 JU3 上的引脚 1和2 应跳接在一起。此外,确保晶体放置在 Y1 上(靠近板上的微 处理器 。本应用笔记的演示程序默认晶振频率为 13.5MHz 。JTAG 板也含有 3个跳线。跳线应放置在端子 JH1

4、、 JH2 和JH3 上。本装置要求 5V 5%/300mA 的电源,插孔中心为正极。将电源插入 JTAG 板上的电源插孔 J2 。最后,需要将 PC 串口连接至 JTAG 板。采用一个标准 9 针直通串行电缆,将计算机的一个串口与 JTAG 板的串口相连 (注意:不要连接至 MAXQ2000 评估板的串口,具体参见 图 3 的正确连接方式 。/ 14串行电缆的正确位置现在,我们就可以利用 IAR 工具开始工作了IAR 编译器使用入门 : Hello WorldIAR 提供了一个为 MAXQ 平台设计、限定代码尺寸的评估版编译器,它们在 MAXQ2000 评估板附带的 CD 上。此外,也可以从

5、下载。按 照说明来安装、选择默认的安装位置和选项。注意, IAR Embedded Workbench 产品仅适用于 Windows? 平台。按照以下步骤从开始菜单启动 IAR Embedded Workbench:IAR SystemsIAR Embedded Workbench for MAXQIAREmbedded Workbench 。现在,我们就在 MAXQ2000 评估板上创建一个简单的应用。建立一个新的工作区。在 FILE 菜单下,选择 NEW 。将出现一个对话框,显示 Source/Text 和Workspace 选项。选择 WORKSPACE ,单击 OK 。出现一个文件对话

6、框,询问新工作区的名称。确定保存新工作区的位置后,输入工作区名称。对于本项目,我 们称其为 helloworld 。输入工作区名称后,单击 SAVE 。一旦打开工作区后,则需要建立一个项目。在 PROJECT 菜单下,选择 CREATE NEW PROJECT 。将弹出另一个文件对话框。确定在下 拉框Tool Chain 中选择 MAXQ 。输入项目名称,单击 CREATE 按钮。此项目名定为 helloproject 。现在项目建立完毕,我们还需要对其进行配置,以便用于 MAXQ2000 评估板。在项目管理窗口中,右键单击标有 helloproject - Debug 的一行,单击 OPTI

7、ONS 项(图 4 。大部分默认选项是恰当的,但是需要修改部分设置。图 4. 在项目上单击右键在项目选项中,选择 CATEGORY 下的 XLINK ,然后选择 Include 标签。在对话框的最下面,选中标有 Override Default 的框,然后 单击下面编辑行右侧的小按钮 (标着. 。将出现文件选择对话框。选择文件 lnkmaxq200 x.xcl 1,单击 OPEN 。应出现如 图 5 所示的 项目选项对话框。/ 14图 5. 为 MAXQ2000 设置正确的链接器选项现在,选择 CATEGORY 下面的 C-SPY DEBUGGER 。在标有 Driver 的下拉框下,选择 J

8、TAG 。这就告诉 IAR Embedded Workbench 在真实硬件 (而不是在软件仿真器 上调试应用程序。同时,确定 Device Description File 所选的是 $TOOLKIT_DIR$Configmaxq200 x.ddf。 图 6 所示为该对话框窗口的正确配置。4 / 14图 6. MAXQ2000时的调试器选项工作所需的最后一个项目选项在条目 JTAG 中,它是 CATEGORY 列表下的 C-SPY DEBUGGER 子条目。在标有 COM Port: 的编辑框中,输 入将与 MAXQ2000 评估板进行通信的 PC COM 端口。通常为 COM1 或者 CO

9、M2 ,许多带有 USB 串口适配器的用户将使用 COM4 或者 序号更高的端口。现在,已经正确的配置了 IAR 工具,使其能够与 MAXQ2000 评估板一起工作。单击项目选项窗口中的 OK 按钮。下一步,将需要为项目 建立源代码。首先,开始一个能够触发 LED 的简单的 HelloWorld 型应用程序。单击工具条上的新文件按钮 (工具条最左侧的空白页 ,或者选择 FILE 菜单下的 NEW 。选择 SOURCE/TEXT ,单击 OK 按钮。标有 Untitled1 的新窗口将出现。在新窗口中输入以下代码:#includevoid main(unsigned int counter1un

10、signed int counter2 PD0 = 0 xff 。 while (1for (counter1 = 0for (counter2 = 0。 counter1 0 xffff。 counter2 。 counter2+/ 14PO0 = PO0 0 xff 。单击 Save 按钮( 工具条上的磁盘图标 ,或者从菜单上选择 FILE SAVE ,保存文件。在出现的文件对话框中,输入 demo.c 作为文件 名称,单击 save 。注意,文件 demo.c 并不出现在项目窗口中。在能够构建该项目之前,需要为该项目加入源文件。右键单击项目窗口 中的helloproject - Debu

11、g行,选择菜单中的 Add Files. 。当文件对话框出现后,选择文件 demo.c ,单击 OPEN。现在,已经加入源文件,可以进行构建了。在 PROJECT 菜单下,选择选项 REBUILD ALL 。屏幕下方的消息窗口中将输出大量数据,其结尾是:Total number of errors: 0Total number of warnings: 0如果出现任何错误或者警告信息,请确定输入代码是否正确,是否按照项目设置说明进行操作。此处常出现的警告信息是last line of fileends without a new line。如果出现该错误,则找到源代码的最后一行,多次敲击 EN

12、TER ,在最后的右括号 ( 之后,建立几个新行。成功构建项目后,准备运行。确定 JTAG 板和 MAXQ2000 板已经按照本文第一部分所述已经连接并上电。同样,对于第一次演示,需要 打开能使 LED 段点亮的一个开关。找到标有 SW6 的开关,将第 8 个开关打到 on (上部位置。运行本项目,选择 PROJECT 菜单,然后 选择 DEBUG 选项。将出现一个窗口通知应用程序正在下载。点击执行代码第一行的第一个断点 PD0 = 0 xff 。 ,启动项目。我们将在以后研究 IAR Embedded Workbench 的调试选项。现在,只 需点击工具条的 GO按钮(三个蓝色箭头 ,或者选

13、择 DEBUG 菜单下的 GO。将看到大部分 LED 以每秒一次的频率闪烁。我们已经采用 IAR Embedded Workbench编译、下载、运行了首个为 MAXQ2000 评估板编写的应用。下一步,该实例程序将变得复杂一些。然后,将讨论 MAXQ2000 评估板的一些特性,以及 IAR Embedded Workbench 的某些调试特性。一个简单应用:在 LCD 上显示一个计数器现在已经成功触发了 LED ,下一步继续处理更加复杂的 LCD 应用程序。 MAXQ2000 微控制器具有一个集成的 132 段 LCD 控制器,以及 一个片内电阻分压器用于对比度控制。它还可以直接对 LCD

14、屏供电。 MAXQ2000 评估板带有一个简单的静态 LCD 屏,其上有 4 个数字 和一些简单的标点符号 (一对冒号和点号,参见 图7 。对于初次使用者,我们将编写一个能够在 LCD 上实现计数器的应用程序。然后, 深入讨论控制 LCD 的代码,演示更复杂的实例。按照前面所述的步骤,建立一个新的工作区和项目 (注意,需要为该新项目重新输入所有的 XLINK 、C-SPY和 JTAG 选项。 为该工作区 起名为 LCDDemo ,项目名为 SimpleLCD 。下载该实例的 源代码 。将文件 lcdcounter.c 放在刚刚建立的 LCDDemo 项目目录下。在 IAR 项目窗口中,右键单击

15、标有 SimpleLCD - Debug 的一行,选择 Add Files. 。选择刚刚加入的文件 lcdcounter.c ,然后单击 OPEN。在运行项目前,我们来查看一些比较重要的代码段。首先,下拉至文件底部的 void main( 一行,此处是应用程序的起始点。您将看到对 LCD 的初始化 (函数 initLCD ,然后进入无限循环 while (1 。主循环调用的函数在 LCD 屏幕上显示一个数字。每执行一次循环,数值 计数增 1 ,如果超过 LCD 能够显示的最大值 19999 ,则重新计数。现在继续运行程序。单击 DEBUG 按钮(工具条的最右侧 ,或者选择菜单中的 PROJEC

16、T DEBUG 。注意, IAR EmbeddedWorkbench 在将应用程序装入到评估板之前,自动进行构建。我们将看到 IAR 显示变为调试模式,在 void main( 代码的第一行停止运 行。点击 GO 按钮(三个蓝色箭头 ,查看显示屏,它应快速向上计数。如果观察的时间足够长,接近20000 时,显示将从头开始。现在可以展示 MAXQ2000 评估板上非常有用的一个特性 RESET 按钮。评估板左下侧是标有 SW2 和 RESET 的开关。按下按键,观 察 LCD 屏幕,它将立刻从 0 开始显示。该按钮连接在微控制器的复位引脚上 如果需要重新启动应用程序,则按该按钮。MAXQ2000

17、 评估板特性现在已经建立了使用 MAXQ2000 评估板 LCD 子板的应用程序,让我们仔细研究一下评估板的各个部分。我们不在此处涉及到评估板的所 有器件,在评估板附带的 CD 中的 MAXQ2000 评估板原理图和 MAXQ2000 Evaluate Kit Getting Started Guide 中有更详细的信 息。LCD 子板现在, LCD 板已经能够运转。显示段和公共极信号的产生受控于 MAXQ 微控制器的几个寄存器。 LCD 子板的连接方式简化了对于 LCD 屏 的操作,向 4 个显示位置中的任何一个写入数码非常容易。因为每个 7 段 LCD 数字的映射相同,因此,在代码中包括了

18、下表,以帮助写 入正确的 LCD 寄存器数值:/ 14#define LCD_PATTERN_0 0 x03F #define LCD_PATTERN_1 0 x006 #define LCD_PATTERN_2 0 x05B #define LCD_PATTERN_3 0 x04F #define LCD_PATTERN_4 0 x066 #define LCD_PATTERN_5 0 x06D #define LCD_PATTERN_6 0 x07D #define LCD_PATTERN_7 0 x007 #define LCD_PATTERN_8 0 x07F #define LCD_

19、PATTERN_9 0 x067int PATTERNS = LCD_PATTERN_0, LCD_PATTERN_1, LCD_PATTERN_2, LCD_PATTERN_3,LCD_PATTERN_4, LCD_PATTERN_5, LCD_PATTERN_6, LCD_PATTERN_7,LCD_PATTERN_8, LCD_PATTERN_9 int getLCDDigit(int digitreturn PATTERNSdigit利 用 getLCDDigit 函数,可由以下代码向控制器写入数值:/* write the value 612 to the LCD screen */

20、LCD2 = getLCDDigit(6 。LCD1 = getLCDDigit(1 。LCD0 = getLCDDigit(2 。该 LCD 板还可以显示小数点和冒号,适用于时钟、温度显示以及任何其他简单的数字显示等。图 7 是 LCD 子板各段的完整显示以及用于 控制各段 LCD 显示的寄存器位。图 7. LCD 段至MAXQ2000 寄存器位的映射 按键MAXQ2000 评估板上有三个按键,两个连接至外部中断,一个连接至微控制器的复位信号。复位按钮用于重新运行应用程序,如同前面 演示的 LCD 计数器所示。经开关使能后,其他两个按键可连接至外部中断。每个按键可连接至一对外部中断。按键 1

21、在评估板上标记为 SW4 ,可连接至端口 5 引 脚2 (外部中断#10 或者端口 5 引脚3 (外部中断#11 。按键 2在评估板上标记为 SW5 ,可连接至端口 7引脚0 (外部中断#14 或 者端口 7引脚 1 ( 外部中断#15 。下表说明了用于将按键连接至外部中断引脚的开关的使用。Switch (set to ON Connect push button To port pin. External Interrupt #SW6, switch 2Push Button 1 (SW4Port 5 Pin 210SW6, switch 3Push Button 1 (SW4Port 5

22、Pin 311SW6, switch 4Push Button 2 (SW5Port 7 Pin 014SW6, switch 5Push Button 2 (SW5Port 7 Pin 115/ 14注意,这些引脚还有其他功能,这就是为什么要对按键连接到哪个部中断进行选择的原因。例如,端口7 引脚0和1 用于UART 0 串口发送和接收。如果将按键连接至这些引脚之一,则不利于使用 UART 0 的功能。请注意, MAXQ2000 含有两个 UART ,因此,决定如何配 置 MAXQ2000 评估板时,可以有多个选择。串行连接器MAXQ2000 评估板含有一个 9 针连接器和一个 RS-232

23、 电平转换器。因此,可以采用一条标准的直通串行电缆连接评估板和PC。这与连接串口至 JTAG 板的串行电缆相同。为能够通过该串口读取到达数据, SW1 上的 3 号开关必须置于 ON 的位置。注意,如果 P7.1 被用于外部中断 ( 如果 SW6.5 置于 ON , 将产生冲突。要在该串口写数据, SW1 上的第 7 个开关必须置于 ON 的位置。同样,如果 P7.0 被用于外部中断 (如果 SW6.4 置于 ON ,也将产生冲突。LED 面板在简单的 HelloWorld 式应用程序中我们已经使用了 LED 面板,现在仔细观察一下面板的实际显示。 图 8 显示了 LED 面板的每个亮条和 与

24、其相关的输出引脚。图 8.LED 至 MAXQ2000 寄存器位的映射/ 输出方向控制。在第一个应用程序为能够向 I/O 端口写入数值,首先需要将端口 0 引脚方向设置为输出。每个引脚具有一个独立的输入 中,由以下代码来设置端口 0 所有的引脚为输出:PD0 = 0 xff 。当适当的 I/O 端口设置为输出后, PO0 寄存器相应位设置为 1 时,该引脚对应的 LED 被点亮。注意,组合开关 SW6 上的 8 号开关必须 置于 ON 的位置,才能对 LED 阵列供电。MAX1407MAXQ2000 评估板带有一个 MAX1407 ,它含有一个 4 通道 16 位模数转换器,以及两个 10 位

25、数模转换器。 MAXQ2000 通过其片内 SPI? 主机与之通信。这样, MAX1407 就成为连接 MAXQ2000 与外部真实世界信号的理想桥梁。网上 2 有一个使用热敏电阻以及 MAXQ2000 评估板来实时显示当前温度的实例程序。请查看该实例程序的源代码,了解运行该程序所需的硬件连接和配置。参见: MAX1407 QuickView 数据资料使用 IAR 编译器来调试应用程序现在,转向一个新的应用程序,通过它我们来熟悉一下 IAR 调试工具。同前面一样,建立一个新的工作区和项目,将工作区命名为 lcdtime ,项目名为 rtc_demo 。从本应用笔记的下载源 3 添加源代码文件

26、lcd_trc.c 。构建该程序,点击 DEBUG 按钮将其装入到 MAXQ2000 评估板。该程序实际是前面编写的 LCD 计数器程序的扩展。开始运行后,其 LCD 显示与以前相似,快速显示计数递增。但是,按下 SW4 按键, 程序将显示实时时钟的当前值。这看起来实用性较差,因为时间显示几乎都不正确。按下 SW5 按钮几次后,将看到分钟递增。如果同样 需要增加小时,不停的按该按钮将使人疲倦。在这种情况下,可以按住 SW5 按钮,然后按下 SW4 按钮来增加小时。如果再次单独按下 SW4 按钮,将切换回计数器显示。点击 GO 按钮(三个蓝色箭头 ,继续运行程序。反复操作几次,熟悉该程序。一旦掌

27、握该程序后,我们将利用它来介绍一些IAR 调试工/ 14具。IAR 调试:暂停一个应用程序程序正在运行时,按下工具条左侧的红色手形按钮,或者选择 DEBUG 菜单下的 BREAK ,这将使处理器停止运行, IAR 将显示你在应用 程序中的当前位置。程序暂停后,可以有几种选择。如果将鼠标放在调试工具条的其他按钮 (带有蓝色箭头 上,保持一段时间,将弹出提示窗口,显示该按钮 的功能。较为常用的一些按钮为:Step Over: 走过下一指令。如果下一指令是函数调用,按下此按钮将不会进入该函数。Step Into: 走入下一指令。如果下一指令是函数调用,按下该按钮将进入被调用的函数。Run to Cu

28、rsor: 运行程序至光标所在代码的位置。这要比使用断点功能来运行至代码的特定位置方便一些。Go: 使程序正常运行。按下 pause 按钮或者到达断点后,程序停止运行。IAR 调试:断点 断点功能使我们在程序运行到特定位置后,能够停止程序运行。下面以实例说明。如果程序仍在运行,先停止它。找到代码中的函数 pushButtonInterrupt ,找到下面一行:IF (EIF1 & 0 x04右键单击此行,从弹出菜单中选择选项 TOGGLE BREAKPOINT ( 不是选项Toggle Bookmark! 。该行左侧空白位置将出现一个红色的 X 。现在,再次点击 DEBUG 按钮,按下 GO按

29、钮,运行程序。将看到 LCD 计数器运行。按下 SW5 按键,计数器程序似乎停止了。如果回过头来注意一下 IAR Embedded Workbench ,将看到程序已经停止运行,加入断点的 一行被高亮显示,如 图 9 所示。/ 14断点图 9. 在 IAR Embedded Workbench中达到调试应用程序时,断点是非常有用的工具。开发人员通常希望了解代码是否按要求执行,或未被执行。例如,如果按键中断例程没有正常 工作,我们将会考虑两种可能 1 按键中断例程代码不正确,因此,得不到预期结果, 2 按键中断代码根本就没有执行。采用断点 后,可以知道第 2 种情况是否发生,帮助我们决定应在哪方

30、面花时间调试。IAR 调试:局部变量程序还停止在断点上时,打开 LOCALS 窗口(如果还没有打开 。可通过选择 VIEW 菜单下的 LOCALS 选项来打开窗口。如果还停止在前 面所设置的断点行上,则 locals 窗口应如下所示:/ 1410. IAR Embedded Workbench的局部变量窗口注意到有两个条目: temp 和 time 。 temp 变量用于显示 PI7 寄存器的数值。注意另一条目 time 的表达。这意味着该变量不在当前视野 之内它或者没有赋值,或者其数值不会再被函数使用。可以检查变量中不正确的数LOCALS 窗口显示了应用中止处所在函数中所声明且使用的变量。这

31、是了解程序当前状态的强有力工具 值,还可以根据变量值判断程序下一步的去向。LOCALS 窗口的功能不仅这些 在程序执行期间,还可以修改变量值。单击 temp 值(可能是 1 ,输入一个新的整数值,则修改了运行 程序的状态。这可以帮助开发人员查看其程序对不同输入的反应,而不必重新构建和装载程序。IAR 调试: Watch 窗口程序暂停时,打开 WATCH 窗口(VIEW WATCH 。在 expression 下,输入 pbcount 。WATCH 窗口中应出现数值 1 ( 除非按下了其 他键,使程序再次运行 。 Watch 窗口使我们能够随意输入任意表达式,并显示该表达式的计算数值。在本例中,

32、我们输入了一个全局变 量名,它告诉我们按键中断代码被执行了几次。 Watch 窗口的作用还不仅如此 在 WATCH 窗口中,再次单击 pbcount ,输入 pbcount 0 x05 。IAR Embedded Workbench将计算该表达式 (pbcount 值与 5 异或 ,显示结果为 (4 。图 11. IAR Embedded Workbench 中表达式的 Watch 窗口IAR 调试: Call Stack打开 call Stack (VIEWCALL STACK 。 Call Stack 显示代码执行到当前位置已调用过的函数。此时,因为正在响应一个中断,只显示 pushBut

33、tonInterrupt( (以及一些调试信息 。单步调试该程序,查看该窗口的反应。向下找到标有中断 15 的代码段下面的showTime( 行。可以按下 STEP OVER 几次,或者右键单击该行,选择 RUN TO CURSOR 。此时, showTime( 行被高亮显示。按下 STEP INTO 按钮,将看到 showTime( 函数的第一行代码被高亮显示。再次查看 Call Stack 现在, showTime( 函数显示在第一 行,其后是 pushButtonInterrupt( 。因为这是一个堆栈,现在执行的函数被首先列出,其后是调用该函数的函数,再后是更上一层的 调用函数,等等。

34、/ 14图12. IAR Embedded Workbench中的 Call stack 窗口图 13. IAR Embedded Workbench 显示的 Memory 内容IAR 调试: Memory 窗口IAR Embedded Workbench 允许我们察看正在执行应用程序的器件的内部存储器。选择 VIEW MEMORY 来查看 Memory 窗口。窗 口首次打开时,可能会显示代码段的存储器内容。单击下拉框,你会看到用于显示的存储器类型选项。选择 Data 选项来查看 MAXQ2000 片内 RAM 的内容。与 LOCALS 窗口相似,我们也可以直接在这里修改 RAM 的数值。加亮

35、某个位置,输入你所希望的新 16 进制数值。与 LOCALS 窗口一 样,这是个非常有用的工具,便于开发人员修改程序状态而无须重新构建和装入应用程序。IAR 调试: Register 窗口Register 窗口(VIEW REGISTER 与 Memory 窗口相似。该窗口显示 MAXQ2000 的寄存器映射。出现的第一个寄存器是 MAXQ 平 台的核心寄存器,例如累加器、数据指针和循环计数器等。单击下拉框,可以看到其他几个选项。例如,如果选择 Port I/O 寄存器,你就 可以看到并编辑与 MAXQ2000 输入 / 输出端口相关的所有寄存器。/ 1414. IAR Embedded Workbench显示的 Register 内容开发支援对于 MAXQ 平台的开发者,我们提供了多种资源予以支持。其中之一是由 Dallas Semiconductor 开发人员管理的在线论坛,解答用户 提交的问题,同时也是开发人员发布消息的窗口,提供最新的工具信息和相关的其他问题。请访问主页,进行注

温馨提示

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

评论

0/150

提交评论