ARM专业课程设计.doc
《ARM专业课程设计.doc》由会员分享,可在线阅读,更多相关《ARM专业课程设计.doc(26页珍藏版)》请在咨信网上搜索。
Arm课程实践 参考文件 1. 张蛤.32位嵌入式系统硬件设计和调试【M].北京:机械工业出版社,. 2.孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发设计——基于ARM9处理器[M].北京:电子工业出版社。. 3.Corbet J,Rubini A,et a1.Linux设备驱动程序(第二版)[M].魏永明,骆刚,等译.北京:中国电力出版社,. 4. 唐泽圣,周嘉玉,李新友.计算机图形学基础[M].北京:清华大学出版社,1995 设计目标 1. 学习4X4键盘和CPU接口原理; 2. 掌握键盘芯片HD7279使用,及8位数码管显示方法; 一. 设计思绪 本试验为模拟输入输出接口试验,其基础原理就是使用一片缓冲芯片74LS244来把CPU外面输入数据写入CPU并行总线上,以后,并行总线上数据被一片数据锁存芯片74LS273保留,CPU经过选中锁存芯片,并读取预先设给锁存器地址内内容,就能够把数据读出,来确定外面数据高低。本试验输入是用8个带锁按键按下和未按下两种工作状态来表示输入接口高低状态,然后,再经过8个LED灯亮和灭两种工作状态,和LCD上用数据值来清楚反应各状态输出显示,从而完成模拟输入输出接口实现。 二. 关键技术 1.ARM9处理器: EL-ARM-830型教学试验系统属于一个综合教学试验系统,该系统采取了现在在中国普遍认同ARM920T核,32位微处理器,实现了多模块应用试验。它是集学习、应用编程、开发研究于一体ARM试验教学系统。用户可依据自己需求选择不一样类型CPU适配板,兼容ARM7和ARM9,而不需要改变任何配置,同时,试验系统上Tech_V总线能够拓展较为丰富试验接口板。用户在了解Tech_V标准后,更能研发出不一样用途试验接口板。除此之外,在试验板上有丰富外围扩展资源(数字、模拟信号发生器,数字量IO输入输出,语音编解码、人机接口等单元),能够完成ARM基础试验、算法试验和数据通信试验、以太网试验。 图1-1-1 EL-ARM-830试验教学系统功效框图 2.ARM C语言程序基础规则 在ARM程序开发中,需要大量读写硬件寄存器,而且尽可能缩短程序实施时间代码通常使用汇编语言来编写,比如ARM开启代码,ARM操作系统移植代码等,除此之外,绝大多数代码能够使用C语言来完成。 C语言使用是标准C语言,ARM开发环境实际上就是嵌入了一个C语言集成开发环境,只不过这个开发环境和ARM硬件紧密相关。 在使用C语言时,要用到和汇编语言混合编程。当汇编代码较为简练,则可使用直接内嵌汇编方法,不然,使用将汇编文件以文件形式加入项目当中,经过ATPCS要求和C程序相互调用和访问。 ATPCS,就是ARM、Thumb过程调用标准(ARM/Thumb Procedure Call Standard),它要求了部分子程序间调用基础规则。如寄存器使用规则,堆栈使用规则,参数传输规则等。 在C程序和ARM汇编程序之间相互调用必需遵守ATPCS。而使用ADSC语言编译器编译C语言子程序满足用户指定ATPCS规则。不过,对于汇编语言来说,完全要依靠用户确保各个子程序遵照ATPCS规则。具体来说,汇编语言子程序应满足下面3个条件: ● 在子程序编写时,必需遵守对应ATPCS规则; ● 堆栈使用要遵守对应ATPCS规则; ● 在汇编编译器中使用-atpcs选项。 汇编程序调用C程序 汇编程序设置要遵照ATPCS规则,确保程序调用时参数正确传输。 在汇编程序中使用IMPORT伪指令申明将要调用C程序函数。 在调用C程序时,要正确设置入口参数,然后使用BL调用。 C程序调用汇编程序 汇编程序设置要遵照ATPCS规则,确保程序调用时参数正确传输。 在汇编程序中使用EXPORT伪指令申明本子程序,使其它程序能够调用此子程序。 在C语言中使用extern关键字申明外部函数(申明要调用汇编子程序)。 在C语言环境内开发应用程序,通常需要一个汇编开启程序,从汇编开启程序,跳到C语言下主程序,然后,实施C程序,在C环境下读写硬件寄存器,通常是经过宏调用,在每个项目文件Startup2410/INC目录下全部有一个2410addr.h头文件,那里面定义了 全部相关2410硬件寄存器宏,对宏读写,就能操作2410硬件。具体编程规则同标准C语言。 3.ADS1.2开发环境: a.ADS1.2下建立工程 1.运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARM Executable Image是ARM通用模板。选中它即可生成ARM实施文件。同时,图2-1-1 图2-1-1 还要在,Project name栏中输入项目标名称,和在Location中输入其存放位置。按确定保留项目。 2.在新建工程中,选择Debug版本,图2-1-2,使用Edit|Debug Settings菜单对Debug版本进行参数设置。 图2-1-2 3.在图2-1-3中,点击Debug Setting 按钮,弹出2-1-4图,选中Target Setting项,在Post-linker栏中选中ARM fromELF项。按OK确定。这是为生成可实施代码初始开关。 图2-1-3 图2-1-4 4. 在图2-1-5中,点击ARM Assembler ,在Architecture or Processer栏中选ARM920T。这是要编译CPU核。 图2-1-5 5.在图2-1-6中,点击ARM C Compliler ,在Architecture or Processer栏中选ARM920T。这是要编译CPU核。 图2-1-6 6. 在图2-1-7中,点击ARM linker ,在outpur栏中设定程序代码段地址,和数据使用地址。图中RO Base栏中填写程序代码存放起始地址,RW Base栏中填写程序数据存放起始地址。该地址是属于SDRAM地址。 图2-1-7 图2-1-8 在options栏中,图2-1-8,Image entry point要填写程序代码入口地址,其它保持不变,假如是在SDRAM中运行,则可在0x30000000—0x33ffffff中选值,这是64M SDRAM地址,不过这里用是起始地址,所以必需把你程序空间给留出来,而且还要留出足够程序使用数据空间,而且还必需是4字节对齐地址(ARM状态)。通常入口点Image entry point 为0x30000000,ro_base也为0x30000000。 在Layout栏中,图2-1-9,在Place at beginning of image框内,需要填写项目标入口程序目标文件名,如,整个工程项目标入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口起始段标号。它作用是通知编译器,整个项目标开始运行,是从该段开始。 图2-1-9 7. 在图2-1-10中,即在Debug Setting对话框中点击左栏ARM fromELF项,在Output file name栏中设置输出文件名*.bin,前缀名能够自己取,在Output format 栏中选择Plain binary,这是设置要下载到flash中二进制文件。图2-1-10中使用是test.bin. 图2-1-10 8. 到此,在ADS1.2中基础设置已经完成,能够将该新建空项目文件作为模板保留起来。首先,要将该项目工程文件改一个适宜名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安装目录下Stationary 目录下新建一个适宜模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完S3c2410 ARM.mcp项目文件存放到该目录下即可。这么,就能在图2-1-10中看到该模板。 9.新建项目工程后,就能够实施菜单Project|Add Files把和工程全部相关文件加入,ADS1.2不能自动进行文件分类,用户必需经过Project|Create Group来创建文件夹,然后把加入文件选中,移入文件夹。或鼠标放在文件填加区,右键点击,即出!图2-1-11 图2-1-11 先选Add Files,加入文件,再选Create Group,创建文件夹,然后把文件移入文件夹内。读者可依据自己习惯,更改Edit|Preference窗口内相关文本编辑颜色、字体大小,形状,变量、函数颜色等等设置。图2-1-12。 图2-1-12 2. ADS1.2下仿真、调试 在ADS1.2下进行仿真调试,首先需要一根仿真调试电缆。其驱动程序安装和使用在光盘中\试验软件\ARM9_RDI中,里面有相关文档。在连上调试电缆后,给试验箱上电,打开调试软件AXD Debugger。点击File|load image 加载文件ADS.axf(\试验程序\HARDWARE\ADS\试验一\ADS\ADS_data目录下)。打开超级终端,设置其参数为:波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。点击全速运行,出现图2-1-13界面: 图2-1-13 在最终介绍调试按钮 上图,左起第一个是全速运行,第二个是停止运行,第三个跳入函数内部,第四个单步实施,第五个跳出函数。 4.模拟输入输出接口单元 8bit数字量输入(由八个带自锁开关产生),经过74LS244缓冲;8bit数字量输出(经过八个LED灯显示),经过74LS273锁存。数字量输入输出全部映射到CPUIO空间。数字值显示经过八个LED灯和LCD屏,按下一个键,表示输入一个十进制“0”值,8个键全部不按下,则数字量十进制数值为255,8个键全部按下,则数字量十进制数值为0,经过LED灯,和LCD显示能够清楚看到试验结果。 三. 程序步骤 1.本试验使用试验教学系统CPU板,LCD单元。在进行本试验时,音频左右声道开关、触摸屏中止选择开关、AD通道选择开关等均应处于关闭状态。2.在PC机并口和试验箱CPU板上JTAG接口之间,连接仿真调试电缆,和串口间连接公/母接头串口线。3.检验连接是否可靠,可靠后,接入电源线,系统上电。按下LCD电源开关。4.打开ADS1.2开发环境,从里面打开\试验程序\HARDWARE\ADS\试验十\IO_SIM.mcp项目文件,进行编译。5.编译经过后,进入ADS1.2调试界面,加载试验程序\HARDWARE\ADS\试验十\IO_SIM_Data\Debug中映象文件程序映像IO_SIM.axf。6.在ADS调试环境下全速运行映象文件。LCD上有图形显示后,按下试验箱下部一排中任一模拟输入带锁键值,观察8位数码管上方8个LED灯亮灭情况,和LCD上显示情况。每个按键代表1个数字位,按键均不按下,代表数字量为255,全按下为0,每个按键全部是2权值,在不按下时,最靠近键盘按键代表1,以后依次是2;4;8;16;32;64;128。按下时均代表0。该试验是从数据总线上把检测到数据改变,锁存到锁存器中,然后又从总线上读出数据,显示到LCD上,来模拟I/O实现。 四. 关键源代码 #include <string.h> #include "2410addr.h" #include "2410lib.h" #include "def.h" #include "..\inc\lcdlib.h" U32 (*frameBuffer16BitTft640480)[SCR_XSIZE_TFT_640480/2]; unsigned long Lcd_Init(int type) { switch(type) { case MODE_TFT_16BIT_640480: //frameBuffer16BitTft640480=(U32 (*)[SCR_XSIZE_TFT_640480/2])LCDFRAMEBUFFER; rLCDCON1=(CLKVAL_TFT_640480<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0; // TFT LCD panel,16bpp TFT,ENVID=off rLCDCON2=(VBPD_640480<<24)|(LINEVAL_TFT_640480<<14)|(VFPD_640480<<6)|(VSPW_640480); rLCDCON3=(HBPD_640480<<19)|(HOZVAL_TFT_640480<<8)|(HFPD_640480); rLCDCON4=(MVAL<<8)|(HSPW_640480); rLCDCON5=(1<<11)|(1<<9)|(1<<8)|(1); //FRM5:6:5,HSYNC and VSYNC are inverted //rLCDSADDR1=(((U32)frameBuffer16BitTft640480>>22)<<21)|M5D((U32)frameBuffer16BitTft640480>>1); rLCDSADDR1=((LCDFRAMEBUFFER>>22)<<21)|M5D(LCDFRAMEBUFFER>>1); //rLCDSADDR2=M5D( ((U32)frameBuffer16BitTft640480+(SCR_XSIZE_TFT_640480*LCD_YSIZE_TFT_640480*2))>>1 ); rLCDSADDR2=M5D( ((U8)LCDFRAMEBUFFER+(640*480*2))>>1 ); //rLCDSADDR3=((0)<<11)|(480); rLCDSADDR3= 0x0; rLCDINTMSK|=(3); // MASK LCD Sub Interrupt rLPCSEL&=(~7); // Disable LPC3600 rTPAL=0; // Disable Temp Palette break; default: break; } return 0; } void Lcd_CstnOnOff(int onoff) { // 1:CSTN Panel on 0:CSTN Panel off // if(onoff==1) rLCDCON1|=1; // ENVID=ON else rLCDCON1 =rLCDCON1 & 0x3fffe; // ENVID Off rGPBUP=rGPBUP|(1<<5); // Pull-up disable rGPBDAT=rGPBDAT&(~(1<<5))|(onoff<<5); // GPB5=On or Off rGPBCON=rGPBCON&(~(3<<10))|(1<<10); //GPD9=output } void Lcd_EnvidOnOff(int onoff) { if(onoff==1) rLCDCON1|=1; // ENVID=ON else rLCDCON1 =rLCDCON1 & 0x3fffe; // ENVID Off } void Lcd_Lpc3600Enable(void) { rLPCSEL&=~(7); // rLPCSEL|=(7); // 240320,Enable LPC3600 : LTS350Q1-PD1 rLPCSEL =(0); // 240320,disable LPC3600 : LTS350Q1-PE2 } void Lcd_PowerEnable(int invpwren,int pwren) { //GPG4 is setted as LCD_PWREN rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable rGPGCON=rGPGCON&(~(3<<8))|(3<<8); //GPG4=LCD_PWREN //Enable LCD POWER ENABLE Function rLCDCON5=rLCDCON5&(~(1<<3))|(pwren<<3); // PWREN rLCDCON5=rLCDCON5&(~(1<<5))|(invpwren<<5); // INVPWREN } #include "..\..\Startup2410\inc\2410addr.h" #include "..\..\Startup2410\inc\2410lib.h" #include "..\..\Startup2410\inc\option.h" #include "..\inc\Uart_driver.h" #include "..\..\Startup2410\inc\def.h" #include <stdarg.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <ctype.h> static int whichUart=0; void Uart_Init(int pclk,int baud) { int i; if(pclk == 0) pclk = PCLK; rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable rUFCON1 = 0x0; //UART channel 1 FIFO control register, FIFO disable rUFCON2 = 0x0; //UART channel 2 FIFO control register, FIFO disable rUMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disable rUMCON1 = 0x0; //UART chaneel 1 MODEM control register, AFC disable //UART0 rULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bits // [10] [9] [8] [7] [6] [5] [4] [3:2] [1:0] // Clock Sel, Tx Int, Rx Int, Rx Time Out, Rx err, Loop-back, Send break, Transmit Mode, Receive Mode // 0 1 0 , 0 1 0 0 , 01 01 // PCLK Level Pulse Disable Generate Normal Normal Interrupt or Polling rUCON0 = 0x245; // Control register // rUBRDIV0=( (int)(pclk/16./baud) -1 ); //Baud rate divisior register 0 rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 ); //Baud rate divisior register 0 //UART1 rULCON1 = 0x3; rUCON1 = 0x245; rUBRDIV1=( (int)(pclk/16./baud) -1 ); //UART2 rULCON2 = 0x3; rUCON2 = 0x245; rUBRDIV2=( (int)(pclk/16./baud) -1 ); for(i=0;i<100;i++); } void Uart_Select(int ch) { whichUart = ch; } void Uart_TxEmpty(int ch) { if(ch==0) while(!(rUTRSTAT0 & 0x4)); //Wait until tx shifter is empty. else if(ch==1) while(!(rUTRSTAT1 & 0x4)); //Wait until tx shifter is empty. else if(ch==2) while(!(rUTRSTAT2 & 0x4)); //Wait until tx shifter is empty. } char Uart_Getch(void) { if(whichUart==0) { while(!(rUTRSTAT0 & 0x1)); //Receive data ready return RdURXH0(); } else if(whichUart==1) { while(!(rUTRSTAT1 & 0x1)); //Receive data ready return RdURXH1(); } else if(whichUart==2) { while(!(rUTRSTAT2 & 0x1)); //Receive data ready return RdURXH2(); } else return 0; } char Uart_GetKey(void) { if(whichUart==0) { if(rUTRSTAT0 & 0x1) //Receive data ready return RdURXH0(); else return 0; } else if(whichUart==1) { if(rUTRSTAT1 & 0x1) //Receive data ready return RdURXH1(); else return 0; } else if(whichUart==2) { if(rUTRSTAT2 & 0x1) //Receive data ready return RdURXH2(); else return 0; }else return 0; } void Uart_GetString(char *string) { char *string2 = string; char c; while((c = Uart_Getch())!='\r') { if(c=='\b') { if( (int)string2 < (int)string ) { Uart_Printf("\b \b"); string--; } } else { *string++ = c; Uart_SendByte(c); } } *string='\0'; Uart_SendByte('\n'); } int Uart_GetIntNum(void) { char str[30]; char *string = str; int base = 10; int minus = 0; int result = 0; int lastIndex; int i; Uart_GetString(string); if(string[0]=='-') { minus = 1; string++; } if(string[0]=='0' && (string[1]=='x' || string[1]=='X')) { base = 16; string += 2; } lastIndex = strlen(string) - 1; if(lastIndex<0) return -1; if(string[lastIndex]=='h' || string[lastIndex]=='H' ) { base = 16; string[lastIndex] = 0; lastIndex--; } if(base==10) { result = atoi(string); result = minus ? (-1*result):result; } else { for(i=0;i<=lastIndex;i++) { if(isalpha(string[i])) { if(isupper(string[i])) result = (result<<4) + string[i] - 'A' + 10; else result = (result<<4) + string[i] - 'a' + 10; } else result = (result<<4) + string[i] - '0'; } result = minus ? (-1*result):result; } return result; } void Uart_SendByte(int data) { if(whichUart==0) { if(data=='\n') { while(!(rUTRSTAT0 & 0x2)); Delay(10); //because the slow response of hyper_terminal WrUTXH0('\r'); } while(!(rUTRSTAT0 & 0x2)); //Wait until THR is empty. Delay(10); WrUTXH0(data); } else if(whichUart==1) { if(data=='\n') { while(!(rUTRSTAT1 & 0x2)); Delay(10); //because the slow response of hyper_terminal rUTXH1 = '\r'; } while(!(rUTRSTAT1 & 0x2)); //Wait until THR is empty. Delay(10); rUTXH1 = data; } else if(whichUart==2) { if(data=='\n') { while(!(rUTRSTAT2 & 0x2)); Delay(10); //because the slow response of hyper_terminal rUTXH2 = '\r'; } while(!(rUTRSTAT2 & 0x2)); //Wait until THR is empty. Delay(10); rUTXH2 = data; } } void Uart_SendString(char *pt) { while(*pt) Uart_SendByte(*pt++); } //If you don't use vsprintf(), the code size is reduced very much. void Uart_Printf(char *fmt,...) { va_list ap; char string[256]; va_start(ap,fmt); vsprintf(string,fmt,ap); Uart_SendString(string); va_end(ap); } #include <stdlib.h> #include <string.h> #include "2410addr.h" #include "2410lib.h" #include "mmu.h" //#include "touch2410.h" void HaltUndef(void) { Uart_Printf("Undefined instruction exception.\n"); while(1); } void HaltSwi(void) { Uart_Printf("SWI exception.\n"); while(1); } void HaltPabort(void) { Uart_Printf("Pabort exception.\n"); while(1); } void HaltDabort(void) { Uart_Printf("Dabort exception.\n"); while(1); } void Isr_Init(void) { pISR_UNDEF = (unsigned)HaltUndef; pISR_SWI = (unsigned)HaltSwi; pISR_PABORT = (unsigned)HaltPabort; pISR_DABORT = (unsigned)HaltDabort; rINTMOD = 0x0; //All=IRQ mode rINTMSK = BIT_ALLMSK; //All interrupt is masked. rINTSUBMSK = BIT_SUB_ALLMSK; //All sub-interrupt is masked. <- April 01, SOP } void Target_Init(void) { MMU_Init(); //ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz ChangeMPllValue(0x52,0x1,0x1); // FCLK=180.0MHz // ChangeMPllValue(0x70,0x2,0x2); // FCLK=90.0MHz ChangeClockDivider(1,1); // 1:2:4 Port_Init(); Isr_Init(); Uart_Init(0,19200); //Uart_Init(0,115200); //Uart_Init(0,230400); Uart_Select(0); //Touch_Init(); //TouchINT_Init(); } void Main() { Target_Init(); GUI_Init(); Delay(0); Delay(10000); Set_Color(GUI_MAGENTA); Fill_Rect(0,0,639,50); Set_Col- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 专业课程 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文