DSP的C語言程序設(shè)計_第1頁
DSP的C語言程序設(shè)計_第2頁
DSP的C語言程序設(shè)計_第3頁
DSP的C語言程序設(shè)計_第4頁
DSP的C語言程序設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、dsp的c語言程序設(shè)計一、 為什么要使用c語言對dsp編程?c語言是高級語言,易學(xué)易用。c語言的編程效率極高,易于調(diào)試。c語言的可移植性好。二、 c程序的結(jié)構(gòu)及組成完整的c程序是由一個主函數(shù)main()和其它的子函數(shù)組成的,每一個子函數(shù)完成特定的功能。dsp的c語言的入口地址固定為c_int00,在rts.lib中定義。c語言支持豐富的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),在ccs集成開發(fā)環(huán)境中,為c語言提供了完整的支持硬件的底層函數(shù)庫和支持算法的dsp函數(shù)庫。在使用c語言的庫函數(shù)時,在工程中必須包括相應(yīng)的函數(shù)庫和rts.lib運(yùn)行時支持庫。下面是一般c語言程序的結(jié)構(gòu)和組成框架。一般c程序的結(jié)構(gòu)如下:/ #in

2、clude包含語句定義程序中使用的函數(shù)庫對應(yīng)的. h頭文件#include “函數(shù)庫1”#include #include “函數(shù)庫3”/ #define 定義程序中所有的宏替換#define 宏替換名替換內(nèi)容/本程序的內(nèi)部函數(shù)聲明,這些函數(shù)一般放在main()函數(shù)的后面函數(shù)類型 函數(shù)名(函數(shù)參數(shù)列表);/中斷服務(wù)程序(函數(shù))的聲明interrupt void function_name (void);/全局變量聲明變量類型全局變量名;/主函數(shù)main()void main(void)/局部變量定義for(;)/調(diào)用子函數(shù)來處理數(shù)據(jù)/完成數(shù)據(jù)的輸入和輸出功能/本程序的內(nèi)部函數(shù)函數(shù)類型 函數(shù)名(

3、函數(shù)參數(shù)列表)/本函數(shù)的局部變量定義/本函數(shù)中的算法/程序結(jié)束三、 數(shù)據(jù)類型c語言支持的數(shù)據(jù)類型很豐富,包括字符型、短整型、整型、長整型、枚舉型、浮點(diǎn)型、雙精度浮點(diǎn)型、長雙精度浮點(diǎn)型、數(shù)據(jù)指針及程序指針,要注意的是由于54x dsp是16位的處理器,它的字符型數(shù)據(jù)的長度是16位的,另外注意比較各種數(shù)據(jù)類型的長度、內(nèi)容以及所表示的值的范圍大小,可以發(fā)現(xiàn)短整型和整型數(shù)據(jù)類型是一致的,浮點(diǎn)型、雙精度浮點(diǎn)型和長雙精度浮點(diǎn)型是一致的,這是因?yàn)?4x dsp的c語言編譯器為了適應(yīng)不同的編程習(xí)慣而這樣定義的,所以實(shí)際使用中可以將常用的數(shù)據(jù)類型進(jìn)行適當(dāng)簡化,即將短整型、整型統(tǒng)一為整型(int),將各種浮點(diǎn)類型

4、統(tǒng)一為浮點(diǎn)型(float)。另外,為了簡化書寫,用戶可以自定義數(shù)據(jù)類型,例如在type.h中的定義:typedef float f32; /浮點(diǎn)型typedef long s32; /有符號的長整型typedef int s16; /有符號的整型typedef unsigned char u8; /無符號的字符型typedef unsigned int u16; /無符號的整型typedef unsigned long u32; /無符號的長整型詳細(xì)內(nèi)容請參考頭文件type.h。四、 頭文件中存儲器映射寄存器(mmr)的定義和訪問對于dsp的軟件設(shè)計,首先必須明了dsp的可用片內(nèi)資源及其訪問方

5、法,包括dsp的片上存儲器映射寄存器、程序存儲器、數(shù)據(jù)存儲器、i/o空間的尋址范圍、尋址方式,片上外設(shè)的寄存器定義、工作流程以及編程控制方法。54x dsp的片內(nèi)寄存器資源是通過兩個頭文件regs.h 和regs54x.h進(jìn)行定義的,這些頭文件位于 c:tic5400dsk5402include目錄下,在這兩個文件中定義了c54x dsp中涉及到的所有寄存器及其所包含的控制和狀態(tài)比特,這些定義是使用宏替換定義#define進(jìn)行的,例如:串口控制寄存器中接收移位寄存器滿標(biāo)志位的比特域定義:# define rsrfull 13 /rsrfull標(biāo)志比特位于寄存器的bit13位置#define r

6、srfull_sz 1 /此標(biāo)志的長度為1個比特我們只需要了解這些寄存器定義,在編程過程中直接使用而不需要自己來重新定義。reg54xx.h是對regs.h的擴(kuò)展和補(bǔ)充,并且reg54xx.h頭文件包含regs.h。注意#define的語句中“”是續(xù)行符。在regs.h和regs54xx.h中還定義了寄存器的訪問方式宏定義,如: reg_read(addr); /寄存器讀 reg_write(addr,val); /寄存器寫 reset_bit(addr,bit); /bit位清零 get_bit(addr,bit); /取得bit位的值 set-bit(addr,bit); /bit位置1詳

7、細(xì)內(nèi)容請參考c:tic5400dsk5402include目錄下的頭文件regs.h 和regs54x.h。在頭文件中,采用了以下幾種方法對dsp內(nèi)部的存儲器映射寄存器(mmr)進(jìn)行定義和訪問: 使用#define宏定義語句定義mmr的地址,有兩種定義方法:統(tǒng)一定義法:如mcbsp串口接收寄存器的定義:#define drr2_addr(port)(port? 0x40:0x20)#define drr1_addr(port)(port?0x41:0x21)它把mcbsp0和mcbsp1的串口接收寄存器合在一起進(jìn)行了定義,通過port參數(shù)進(jìn)行區(qū)分。單獨(dú)定義法:#define drr20_add

8、r 0x20#define drr10_addr 0x21#define drr21_addr 0x40#define drr11_addr 0x41分別將mcbsp0和mcbsp1的串口接收寄存器進(jìn)行了定義。統(tǒng)一定義法定義的寄存器用于對二者同時進(jìn)行訪問時比較方便,單獨(dú)定義法定義的寄存器用于單獨(dú)訪問某個外設(shè)時比較方便。訪問時使用“指針前綴+地址”的方式,例如:* (volatile unsigned int *) dxr1_addr(port)=value;/寫dxr1寄存器variable=* (volatile unsigned int *) drr1_addr(port);/讀drr1寄

9、存器使用宏定義函數(shù)進(jìn)行訪問。在regs.h和reg54xx.h頭文件中,定義了如下的宏函數(shù),可以使用它們對寄存器或存儲器進(jìn)行訪問。 reg_read(addr);/寄存器讀,addr為寄存器地址 reg_write(addr,value);/寄存器寫,addr為寄存器地址,value為要寫入的值例如:reg_read(ddr1_addr (port));/讀drr1寄存器reg_write(dxr1_addr (port),value);/寫dxr1寄存器,value為要寫入的值 直接使用* (volatile unsigned int *) +地址的指針方式定義寄存器,其中“volutile

10、”關(guān)鍵字用來防止c編譯器對本條語句進(jìn)行優(yōu)化。 例如:#define drr20 * (volatile unsigned int *)0x200x20是寄存器的地址,相當(dāng)于&p,(volatile unsigned int *)0x20相當(dāng)于一個地址變量p,* (volatile unsigned int *)0x20相當(dāng)于指針數(shù)據(jù)類型。訪問時直接使用即可,例如:dxr20=value;/寫寄存器dxr20variable=drr20;/讀寄存器drr20在頭文件中,習(xí)慣上使用 “寄存器名+_+ addr”表示寄存器的地址宏定義,而是用寄存器名表示寄存器指針方式的宏定義,請注意區(qū)分,并在實(shí)際編

11、程時遵守這一習(xí)慣。由于54x dsp的存儲器映像寄存器在頭文件regs.h 和regs54x.h中已經(jīng)按方式進(jìn)行了定義,所以推薦使用方式訪問dsp的存儲器映像寄存器,不需要自己重新進(jìn)行宏替換定義。對于ram存貯器可使用變量、數(shù)據(jù)指針、結(jié)構(gòu)、聯(lián)合、枚舉等方式進(jìn)行訪問。其它等效的定義和訪問方式除了的定義和訪問方法之外,還有一些等效的定義和訪問方法,這些方法不建議大家使用,只需要進(jìn)行了解。定義:#define bspc0 (volatile unsigned int*)0x22使用: *bspc0=value;/寫寄存器 reg_value=*bspc0;/讀寄存器五、 dsp i/o空間的訪問方式

12、1:在c語言中訪問dsp的i/o空間借助于關(guān)鍵字ioport來進(jìn)行,注意,此關(guān)鍵字只為dsp 54xx的編譯器所識別和使用。在54xx中其定義格式為: ioport unsigned int porthex_num其中的import和port均為關(guān)鍵字,unsigned int 是i/o數(shù)據(jù)類型,在54xx中,i/o空間共有64k字,所以數(shù)據(jù)類型只能是char 、short、 int等16位的類型。一般使用格式如下:volatile ioport unsigned int portxx;/xx為16進(jìn)制(hex)格式地址portxx=value;/寫i/o端口variable=portxx;/

13、讀i/o端口例如:當(dāng)訪問i/o空間在200h地址時,可以采取以下定義形式:ioport unsigned int port200;unsigned int test;test=port200; /讀i/o端口,port200作為一個變量使用port200=test; /寫i/o端口,port200作為一個變量使用更進(jìn)一步地,可以使用ioport關(guān)鍵字和宏替換來定義i/o地址。例如:volatile ioport unsigned int portxx;/xx為16進(jìn)制(hex)格式地址#define porta portxx/使用宏替換對portxx端口進(jìn)行進(jìn)一步定義porta=value;/

14、寫i/o端口varich=porta;/讀i/o端口例如,在board.h中對cpld擴(kuò)展i/o寄存器的定義如下:/port declarations used to access cpld registersvolatile ioport u16 port0;volatile ioport u16 port1;volatile ioport u16 port2;volatile ioport u16 port3;volatile ioport u16 port4;volatile ioport u16 port5;volatile ioport u16 port6;volatile iopo

15、rt u16 port7;#define cpld_ctrl1_reg port0#define cpld_stat_reg port1#define cpld_dmctrl_reg port2#define cpld_dbio_reg port3#define cpld_ctrl2_reg port4#define cpld_sem0_reg port5#define cpld_sem1_reg port6#define cpld_slic_reg port7方式2:借助于庫函數(shù)portread(port)和portwrite(port)對一段連續(xù)i/o端口進(jìn)行讀寫在portio.h頭中定義

16、了portread()、portwrite()函數(shù)。/*/* copyright (c) texas instruments, incorporated 2000 */*/*/*/* portio.h - header file for portio_.asm */* */* */* functions: */* */* portread() */* portwrite() */* */* */* static functions: */* none */* */* */* global variables defined */* */* */ /*/#ifndef _portio_h#def

17、ine _portio_h#include /*/* s16 portread(u16 port) */* */ /* this routine reads a word from the specified port. */* */* parameters: */* - port - port address (hex) */* */* return: */* - returns value read from port. */* */* notes: */* */ /*/s16 portread(u16 port);/*/* portwrite(u16 port, s16 value) *

18、/* */ /* this routine writes a word to the specified port. */* */* parameters: */* - port - port address (hex) */* - value - 16 bit word to write. */* */* return: */* - none */* */* notes: */* */ /*/void portwrite(u16 port, s16 value);#endif /* end of #ifndef _portio_h */使用時,先使用宏替換或枚舉定義i/o端口的地址,然后使用

19、portread()和portwrite()函數(shù)訪問i/o端口例如:#include portio.h /所需要的函數(shù)包含在portio.h中#define porta 0x00/使用宏替換定義i/o端口的地址#define portb 0x01或typedef enum/使用枚舉定義i/o端口的地址porta=0x00;portb=0x01; cpldreg, *pcpldreg. variable=portread(porta);/讀i/o端口 portwrite (portb)=value;/寫i/o端口四、ccs中與c54xx相關(guān)的頭文件ccs中與c54xx相關(guān)的所有頭文件位于c:ti

20、c5400dsk5402include目錄下,可以分為兩類:一類頭文件對dsp本身及外部接口電路所擁有的硬件資源進(jìn)行描述定義,如regs.h 、regs54xx.h。另一類頭文件對這些資源的設(shè)置和使用的接口函數(shù)庫進(jìn)行了描述,使用戶可以不關(guān)心底層的驅(qū)動程序,直接調(diào)用庫函數(shù)即可實(shí)現(xiàn)對硬件的控制,這些往往都是硬件開發(fā)人員所完成的,如ccs中的board.h 和mcbsp54.h.c5400cgtoolsinclude目錄與c5400dsk5402include目錄中的頭文件類型不同。c5400cgtoolsinclude目錄下是5000系列dsp的通用頭文件,與硬件無關(guān)。c5400dsk5402in

21、clude目錄下是硬件專用頭文件,包括dsp芯片和dsk板。頭文件和特定的庫文件相關(guān)聯(lián),c5400cgtoolsinclude目錄下的頭文件與運(yùn)行時支持庫rts.lib相關(guān)聯(lián),c5400dsk5402include目錄中的部分頭文件與dsk板庫文件drv5402.lib和dsk5402.lib相關(guān)聯(lián)。drv5402.lib和dsk5402.lib函數(shù)庫在c5400dsk5402lib目錄下,dsk5402.lib是一個主要的庫函數(shù),內(nèi)部使用了drv5402.lib。五、關(guān)于dsp程序中段的定義一個程序中到底有哪些段定義?一般地,對于固定的硬件應(yīng)用系統(tǒng),其存儲器的配置也較為固定,存儲器的配置需要

22、設(shè)計者自己定義,但理解了基本的段如:.text 、.data、 .stack 、.bss之外,用c語言編程時,對程序中所使用的段并不十分清楚,可以在寫 .cmd文件時,只將memory部分寫出,而暫時省略掉sections定義,ccs集成開發(fā)環(huán)境會自動生成 .map文件,其中詳細(xì)記錄了存儲器和段的配置和使用情況、各個段的絕對地址和重新分配后的全局符號,根據(jù)其中的段的描述,我們反過來再重新修改 .cmd文件,進(jìn)行合理地段到存儲器的分配。dsp c語言開發(fā)環(huán)境所必有的段定義: cinit;c語言初始化段,包括初始化變量和常量表text;代碼段,包括可執(zhí)行代碼、字符串和常量vectors;中斷向量段

23、stack;堆棧段,為c的系統(tǒng)堆棧分配存儲空間,用于變量的傳遞trapconst ;包括字符串常量和以const關(guān)鍵字定義的常量data;數(shù)據(jù)段bss;保留全局和靜態(tài)變量空間cioswitch;為 .const語句建立的表格system;為動態(tài)存儲器函數(shù)malloc、calloc、realloc分配存儲空間dsp的c語言程序設(shè)計實(shí)驗(yàn)一、 分析工程blink.pjt中的程序blink.c,了解c語言程序的一般結(jié)構(gòu)以及頭文件和函數(shù)庫的關(guān)系,并解讀頭文件的內(nèi)容二、 修改程序blink.c,使三個發(fā)光二極管指示燈依次流水點(diǎn)亮熄滅例:編寫程序blink.c主要說明:dsp c程序編制的流程函數(shù)庫中函數(shù)的

24、使用(例如board.h)project的建立、編譯、調(diào)試、執(zhí)行cmd文件的編寫試重新定義 .cmd文件,重新對project進(jìn)行編譯運(yùn)行。自編寫codec程序,.h頭文件在c5400dsk5402include目錄下,頭文件對應(yīng)的函數(shù)在c5400dsk5402libdrv5402.lib和dsk5402.lib 中。 dsk5402是一個主要的庫函數(shù),內(nèi)部使用了drv5402.lib。5402上有兩個多通道緩沖串行口(mcbsp0和mcbsp1),其寄存器定義位于頭文件regs.h和reg54xx.h當(dāng)中。 如果在file菜單中頭“l(fā)oad program”項(xiàng)說明目標(biāo)報未正常連接,注意觀察

25、條提示:vecs:0080h length=0080h /*internetpram:orgin=7600h,length=8000h program ran */scratch ran5402 dsp 程序寄存儲藏256k 如同加載執(zhí)行 dsp 5402 64k(更多)程序存儲器空間 64k(更多)數(shù)據(jù)存儲器空間 64k i/o存儲器空間可以由:片上rom,片上ran,片外floah,片外ran構(gòu)成取決定于:mp/mc ovly flashenb,當(dāng)map在外部存儲器時,由于flashe決定訪問flah=1還是外部ran=0,ovly flash 可以由片上ram、ran,片外flash r

26、am構(gòu)成取決于drom dmsel,當(dāng)map外部存儲器空間時,由dmsel決定是訪問flash/ram(dmsel=0)還是子報存儲器,flash14個等待周期;ram1個等待周期。 c5402 device simulater; mp/mc=1 ovly=1 dram=05402 dsk load program 后:mp/mc=1 ovly=1 drom=0運(yùn)行程序后:mp/mc=0 ovly=1 drom=0與管腳一致,suwsr等待狀態(tài)寄存器d844 1 1 0 1 1 0 0 0 01 00 0 100 i/o空間 高32k 低32k 高32k 低32k 5 4 1 0 4mcbsp

27、串口以及ad50的初始化,ad50初始化包括以下步驟:1 打開codec 獲取句柄(指針)2 設(shè)置ad轉(zhuǎn)換的工作方式3 設(shè)置da轉(zhuǎn)換的工作方式4 設(shè)置模擬輸入增益5 設(shè)置模輸出增益6 設(shè)置取樣率 board init flagcade init flag code_setup_serial_port 設(shè)置串口 code_reset codee復(fù)位 cline_reset code_disable_tx_isr code_disable_vx_isr code_write_regs code_setup_serical_port serial_reset d:dsptest、dtkfftdee5

28、416.c 把project中所用到的所有頭文件、庫文件、包含文件均方向在project目錄下,解析此工程,了解庫函數(shù)的定義與源程序,code 的操作 串口(mcbsp)的操作mcbsp:tms320c5000系統(tǒng)dsp系統(tǒng)設(shè)計與開發(fā)實(shí)例,熟悉多通道緩沖串口的結(jié)構(gòu)組成以及各個寄存器的內(nèi)容工作方式,編程方法:mcbsp的初始化串口復(fù)位(發(fā)送復(fù)位、接收復(fù)位)設(shè)置所有寄存器的值spcr1、spcr2、rcr1、rcr2、xcr1、xcr2、spgr1、spgr2、pcrcode (ad50)的初始化 codec 復(fù)位 設(shè)置線路輸入通道增益 設(shè)置輸出增益 設(shè)置模擬工作方式輸入選擇line 設(shè)置數(shù)據(jù)部分

29、的運(yùn)行模式 設(shè)置電源模式 設(shè)置數(shù)據(jù)格式,codec工作于主方式 設(shè)置波樣率 啟動codec另外:mcbsp的初始化及使用參考csl_mcbsp.h頭文件的有關(guān)函數(shù)。mcbsp的初始化:接收器復(fù)位,spcr1的d0=0發(fā)送器復(fù)位,spcr2的d0=0設(shè)置spcr1寄存器:(0x007)(d15禁止數(shù)字環(huán)回:dlb=0(d14d13)接收數(shù)據(jù)符號擴(kuò)展和調(diào)整方式:=00右對齊mcbs零填充(d12d11)時鐘停止模式: =00時鐘停止模式營業(yè)(d10d08)保留 (d7)dx31腳延遲功能 =0 關(guān)閉dx3腳延時功能(d6)保留(d5d4)接收中斷模式 =00 當(dāng)rrdy有效時,產(chǎn)生接收中斷(d3)

30、接收幀同步錯誤標(biāo)志 =0 不檢測同步錯誤(d2)接收移位寄存滿過速錯誤標(biāo)志 =1接收移位寄存器滿(d1)接收就緒標(biāo)志 =1接收器就緒(d0)接收器復(fù)位 =1串口接收使能(接收器停止復(fù)位)設(shè)置rcr1寄存器(接收控制寄存器官)=0x0040ad50 寄存器的初始化:(按enter功能)codec 復(fù)位:control reg:ster1的設(shè)置adc工作模式為15bit模式 control register 2的 d4=0設(shè)置dac的工作模式為15bit模式 control register 1的 d0=0 設(shè)置dodec的模擬輸入增益6db: control register 4的 d3d2=0

31、1設(shè)置dodec的模擬輸入增益-6db: control register 4的 d1d0=01設(shè)置dodec的取樣率為8000hz: control register 4的 d604=n=mclk 1288000ad50按寄存器初始化ad50按功能進(jìn)行初始化 在code.h頭文件中,定義了與codec(ad50)功能相關(guān)的枚舉變量,除了可以調(diào)用code.h中提供的函數(shù)之外,我們可以利用這些枚舉變量重新編寫自己的函數(shù),用枚舉變量相或產(chǎn)生所需要的寄存器初始化值。片上外設(shè)寄存器的初始化方法:有兩種,一是按要求填表,然后將結(jié)果直接寫入寄存器;二是用寄存器各部分的宏定義相或,如mcbsp54.h各寄存

32、器比特的宏定義。報卡初始化brdinit(100);初始化的內(nèi)容;#8806h29單元 ohxpc #0a0hpmstc1knd1=0 設(shè)置cpu的工作頻率c1k2=0 c1k3=1 設(shè)置等待周期swr=d844h 設(shè)置報卡初始化標(biāo)志 sxm=1 intm=1 *zch=*zch or ox2c 對i/o端口0、4、2、3、5、6進(jìn)行初始化dsp技術(shù)及其應(yīng)用常見問題.cmd文件的格式及編寫.cmd文件的編寫?硬件確定存貯器配置就基本確定了嗎?5402 dsp存儲器配置如何?是64k ram 、256k flash嗎?boot loader 過程如何察看函數(shù)庫內(nèi)容,如board.h頭文件中的函數(shù)

33、?在程序調(diào)試中,打開匯編窗口,使用斷點(diǎn)、單步方式進(jìn)行調(diào)試。dsp從復(fù)位到運(yùn)行,mp/mc、 ovly 、drom位的變化?如何知道c程序中有哪些段定義?編譯時生成并察看.map文件。ad50的一次通信二次通信如何用軟件實(shí)現(xiàn)?ad50、aic23兩種codec的操作是否一致?是否可調(diào)用一個庫函數(shù)?不一致。dsk板的初始化包含哪些內(nèi)容?csl庫是否只能用于dsp_bios編程模式?否,可以在非dsp_bios環(huán)境下調(diào)用csl庫。ad50的primary、second通信對應(yīng)于mcbsp串口,是如何實(shí)現(xiàn)的分兩次寫,使用了宏函數(shù)mcbsp_dxr12.write().嗎?5402dsk板上集成了一個并口仿真器,它仿真時裝載程序是使用的jtag接口,還是hpi接口?使用dsk并口仿真器調(diào)試dsp時,各控制比特的設(shè)置以及memory的map如何?此時是否為hpi boot loader方式?并口仿真與hpi引導(dǎo)是否為一回事?不是,通過jtag下載調(diào)試程序,程序運(yùn)行后暫停,此時mp/mc=0,ovly=1,drom=0。i/o空間cpld寄存器如何觀察?ram中數(shù)據(jù)可讀可改,ro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論