版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一个精确的1秒LED闪烁程序i程序特点本程序使用F2812硬件,控制GPI0F14管脚上的一个LED做精确的1秒间隔 闪烁,并且程序从Flash启动。2建立工程2.1 文件该工程包含以下文件:r. lyFitstP jt. pjt (Debug)_ dependent Projeels_ Documents二j DSP/BIOS Config_Fries-pj Inc lude圍 rSP2Slx_Adc.hg PSP281 x_Cpu7inters.hE LSP281sDefaultISR.k呈DSP231 s_DEv£jm4. h圍 rSP281xDevice< h
2、7; rSP281KlECan. h3 LSP281sEv.h言DSP231 K_E:3nples, h.司 rSP28! k GlobalProt ctypsE. h§ rSP281KlGpio-h3 LSP2SlKMcbsp.harSF231K_FiCtrl.h5P5P2SlK_PicV&Gt.h圍 LSP28iK_Sci_hUIjSP2SizSpi_h哥 USF231 sSWrivtit iEIs.hg rSF281K_SysCtrli hg LSF281K_Xintf.hgj LSP281u_XIntrupt.KI Librariesl L3 Source去1 LSF
3、281 k_CodeStartBraiich. asm.酉 LSP281D efaultIs r. c回 DSP2SlK_GlobalVariableDrfs.c枣 rSF261x_Gpio.c頼 LiSF281x_MemCopy. c酉 LSP281x_PieCtrl.c自 DSP231x_FieVect.c希 rSF2Slx_Sy3Ctrl.c目 £SF281s_u£DeIay. amH1SS3Qjj DSP28 lx_Header s_nonELOS. emd蛊 F2312.cmd注:除了 Ma in .c为自己写的之外,其他均为 F2812DEMO自带的文件。其中部
4、 分文件做了小小的修改,下文会详述2.2 建立工程打开CCS3.1,选择Project New,输入工程名,这里是 MyFirstPjt,选择工 程目录后点击确定,然后在左侧的工程管理窗口中选中 MyFirstPjt.pjt,右键一 添力卩 文件,将下列文件加入工程:LSP2a 1 k CodjeS七337七£)工anuh. asm.PSP281k Defultlsrx cP5F2S1XIjSP231kDSF281KD5F2BliP5F2S1KHSP281XIjSP281u(J 1 ob al?ar i ab 1 eD ef s 11 Gpio- cMemCopy cPieCtrL
5、aFieVactp cSysCtrl cusDelay. asumain c孟| D5P 2 31 x_H&ad e r s_ronE LO 5. end -E F2312.cmd然后再次选中 MyFirstPjt.pjt,右键一Scan All File Dependencies CCS 系统会自 动搜索关联的文件,特别是.h头文件,并将所有.h头文件显示出来,如下图所示:2J吕 i=i 二jDependant Ftcijorrtu DuCluiejit i DSP/BIOS Ccntig G cltv£ al ad. F丄二匕3 IrrluriaDSPSeix Adc.
6、hrSP231EDSF?RlxDSP2®lwDSP?61DSF2E ixDSP2SlxDSP2£ gDSPeiDSP261KDSP2J; gDSP2eistDSP2«ImD5T?eixDSP2S tw DETSeiaLxDSP2S1Ku司三兰=|=1=1兰I首i=JCputTimr hDef aul"tISR» hDevEmu-hD导wi匚自亀hEC an. liEm hEKam-plea- hG1 ob a IPr 口七 cit ypes. liGpio 11Mcbsp,hPxaCt r丄丄dV匕匸七hScl. h.Spx, hSWPricr
7、ltlTedlsrLew SysCt iJL. hXintf.hXInt r-upt. hkiTDS尸26i« DSF?E lx DSP?E g rsppfiixCSP2SIkDSP2B inDL;P21i lit DSP朋 LxDSP2HUq de St art Br ajnictiB 口孑血EiRf an 1± Jr,. cG X ob alVa i ab 1 eD erf « u Gpio cMemC opy- c FxeCt rl. c Pxe V ec±- c?Sys-Ct r 1. c usLie 1 ay. asmL ibrarias畫S当
8、A塞1D3P2B1x_Headers_aonB 10S, endF2812, emd但注意此时并没有完成,还需要设置编译环境:在左侧的工程管理窗口中选中MyFirstPjt.pjt,右键一Bulid Options 做如下设置:Build Opti ons for MyF i retFjt- f?I"nrnpil匸i rJrai- I Li OrI 砒 瞰消 I 轉肋 I很关键的一个设置是必须设置头文件的搜索路径, CCS在编译时先搜索安装目 录下的头文件,然后再搜索用户指定的路径,如果再找不到,就报错。 头文件的搜 索路径设置如下:其中$(Proj_dir)表示工程所在的目录,这里
9、设置为“ $(Proj_dir)DSP281x_headersinclude, $(Proj_dir)DSP281x_commoninelude 多个 路径中间用逗号隔开。当然也可以设置绝对路径,但这样设置方便一些,便于在工 程拷贝中不用再更改设置然后设置库和库的搜索路径:这里使用了 CCS3.1自带的库rts2800_ml.lib,该库位于CCS安装目录的 C2000cgtoolslib下,此库中带有bootloader的obj文件,以便于与用户的应用程序 连接,大信号模式下用rts2800_ml.lib,小信号模式下用rts2800.lib。2.3编译略,与众多IDE相似。2.4下载首先确
10、保安装了 F2812的Flash烧写插件和仿真器的驱动,硬件连接好后,按 CTRL+ALT+R以RESET仿真器,按ALT+C连接DSP和PC,点击CCS上的Tools 下的 F28xx On-Chip Flash Programmer即可下载。具体步骤从略。2.5运行断开仿真器,上电即可运行。具体从略。3 程序详解3.1 Main.c#i nclude "DSP281x_Device.h" #in elude "DSP281x_Examples.h"#i nclude "DSP281x_Gpio.h"#include "D
11、SP281x_XIntrupt.h"/ DSP281x Headerfile In clude File / DSP281x Examples In clude File /extern void DSP28x_usDelay(Ui nt32 time);void ma in (void)In itSysCtrl();DisableDog();MemCopy(&Ramfu ncsLoadStart, &Ramfu ncsLoadE nd, & Ramfu ncsR un Start); InitGpio();/初始化 pio, gpiof14 为输出DINT;
12、IER = 0x0000;IFR = 0x0000;In itPieCtrl();In itPieVectTable();/初始化中断向量表for(;)GpioDataRegs.GPFTOGGLE.bit.GPIOF14 = 1; /gpiof14 输出值翻转 DELAY_US(0xF4240); / Delay One sec ond _其中:InitSysCtrl()主要用来配置DSP的时钟频率,该函数在 DSP281x_SysCtrl.c文件 中;DisableDog ()关闭看门狗,函数也在 DSP281x_SysCtrl.c 中;MemCopy(&Ramfu ncsLoadS
13、tart, &Ramf un csLoadE nd, & Ramfu ncsRun Start)这一 句用来将将Flash中的DSP28x_usDelay()函数调入RAM中运行,下面将详解。 3.2闪烁LED的实现本工程的LED接到GPIOF14的管脚上,使用GPIO来控制LED的亮灭。InitGpio()用来初始化GPIO,函数原型在 Gpio.c中:void Ini tGpio(void)/ Set GPIO A port pin s,AL(Bits 7:0)(i nput)-AH(Bits 15:8) (output) 8bits /In put Qualifier =
14、0, noneEALLOW;GpioMuxRegs.GPFMUX.bit.XF_GPIOF14 = 0;/将/XPLLDIS 配置为I/OGpioMuxRegs.GPFDIR.bit.GPIOF14 = 1;/配置为 outputEDIS;其它的语句:DINT;IER = 0x0000; IFR = 0x0000; In itPieCtrl();In itPieVectTable();/初始化中断向量表可要可不要,作用从略GpioDataRegs.GPFTOGGLE.bit.GPIOF14 = 1; gpiof14 输出值翻转 语句的作用是将gpiof14的管脚电平取反,达到控制 LED闪烁的
15、目的。3.3将Flash中的程序DSP28x_usDelay()调入RAM中运行本程序为了实现精确的定时,使用了一个用汇编编写的延时函数DSP28x_usDelay(),该函数在文件DSP281x_usDelay.asm中,细节请阅读该文件。为了调用该函数,在Ma in .c中做了如下声明:extern void DSP28x_usDelay(Ui nt32 time);该函数的定时仍然不够精确,因此在文件DSP281x_Examples.h中做了如下的宏定义修正:#define DELAY_US(A)DSP28x_usDelay(lo ng double) A *1000.0L)/ (lon
16、gdouble)CPU_RATE) - 9.0L) / 5.0L)函数DSP28x_usDelay(Uint32 time)要想非常精确,必须在SARAM 中运行,因此需要在运行时将其调入SARAM中。为此,需要做如下工作:首先,在 DSP281x_usDelay.asm 中使用.sect "ramfu ncs"将该段代码定义到段"ramfuncs中,段ramfuncs的位置在编译时指定, 实际上由F2812.cmd文件中的如下语句来指定:ramfu ncs LOAD = FLASHD, PAGE = 0,RUN = RAML0, PAGE = 1,LOAD_ST
17、ART(_Ramfu ncsLoadStart), LOAD_END(_Ramfu ncsLoadE nd), RUN_START(_Ramfu ncsRu nStart)第1行表示该段的装载在 PAGA0的"FLASHD中(PAGA0和FLASHD的分段请见F2812.cmd 文件,后文将有详解);第2行表示该段的运行地址在PAGE1的RAML0中(PAGA1和RAML0 的分段请见F2812.cmd文件,后文将有详解);LOAD_ START(_RamfuncsLoadStart)令编译器创建了一个变量RamfuncsLoadStart,该变量指向段ramfuncs的装载地址的首
18、地址(LOAD_ START为编译伪指令,请见CCS的帮助文档);LOAD_ START(_RamfuncsLoadEnd)令编译器创建了一个变量RamfuncsLoadEnd,该变量指向段ramfuncs的装载地址的末地址(LOAD_ END为编译伪指令,请见 CCS的帮助文档);LOAD_ START(_RamfuncsRunStart)令编译器创建了一个变量RamfuncsRunStart,该变量指向段ramfuncs的运行地址的首地址(LOAD_ START为编译伪指令,请见 CCS的帮助文档);从第1和2行可以看出,段ramfuncs中的函数DSP28x_usDelay()的装载地址
19、和运行地址是 不同的,本程序中装载在 Flash的块FLASHD中,而在SARAM L0中运行,这只是目标,实际 运行时DSP并会自动将Flash中的代码拷贝到 SARAM中,因此需要手动添加代码来完成。在 C 函数中,为了使用变量RamfuncsLoadStart、RamfuncsLoadEnd 和 RamfuncsRunStart,必须先声明,本工程在文件DSP281x_GlobalPrototypes.h中做了如下声明:extern Ui nt16 Ramfu ncsLoadStart;extern Uin t16 Ramfu ncsLoadE nd;extern Ui nt16 Ram
20、fu ncsRu nStart;然后就可以使用了。在 Ma in .c中,使用 MemCopy()函数将段ramfu ncs中的函数 DSP28x_usDelay()的代码从装载地址 RamfuncsLoadStart RamfuncsLoadEnd 拷贝到 RamfuncsRunStart开始的SARAM 空间中。之后在程序运行时,只要调用DSP28x_usDelay()函数,都会自动地指向 SARAM中相应的函数入口地址,这一点是自动完成的。MemCopy()函数原型在 MemCopy.c 中,在 DSP281x_GlobalPrototypes.h 声明。注意:即使这样,定时仍然可能不精
21、确,因为可能有中断打断DSP28x_usDelay()的运行,所以在调用之前要关中断。4 如何从Flash启动4.1 F2812 的 BootLoader 工作原理要让程序从Flash中启动,必须用到DSP的BootLoader。那么什么是 BootLoader 呢?F2812内部有一块ROM称为On-Chip ROM其结构如图所示:On-thip boot ROMSection startDaia spaceProg spaceMF FOOD(644h0x3F F502inverse(528 16)N诃们旳胡坤rooi0x3 F F712Main tables and(274 Dt IS)f
22、uture陀萨阂韬、5K x 16NorngLan0x3F F834(452X !6)0m3F F9ESRourHdtfw and satui Jtion(360X 16)Reserved0x3 F F8500x3F FC00EJootioacier JunctionsROM version1KX 16 <ROM check wmReset sector0归匚匚匸coCPU vector 惦bfe(64X 160x3F FFFF从地址0X3FF000到0X3FFB50固化的是集中数学运算表(F2812内部地址是统 一编址,寄存器、外设、ROM、RAM地址不重叠),包括正弦和余弦表,可以通
23、 过CCS的View >Graph >Image绘制出一个漂亮的1.25个正弦波形。从0x3FFC00到0x3FFFC0固化的有BootLoader的程序,以及版本号、校验等 信息。详情请参考 TI 的“TMS320x281x DSP Boot ROM Referenee Guide(SPRU095B)”。从0x3FFFC0到0x3F FFFF装载的是复位向量和 CPU中断向量。这些向量的映 射在Debug模式下会映射到不同的位置,详情请参考TI的“ TMS320x281x DSP Boot ROM Referenee Guide( SPRU095B)”。那么DSP F2812从上
24、电到启动过程中到底做了哪些工作?1. 上电复位时,上电运行 BootLoader根据MP/MC引脚的状态决定是从片外 的3fffe0处(XINTF Zone7)读取复位向量或者是从片内的 On Chip rom的 3fffe0处读取复位向量。MC方式下从片内读取,MP方式下从片外读取。复位向量位置见文件 F2812.cmd中的PAGE0:RESET:origin = 0x3FFFC0, length = 0x000002以及:.reset> RESET,PAGE = 0, TYPE = DSECT2. 一般我们用的是MC方式,即从片内读取复位向量,在片内的rom 3fffe0处有一个向量
25、指向了一个程序InitBoot o实际上该函数就从地址3fffe0开始。复位后处理器从3fffe0处读取3ffe00这个地址,所以InitBoot程序从3ffe00 处开始执行。3. 3ffe00处开始的就是initboot过程。首先根据IO管脚的状态判断该进入那 一种引导方式,引导方式有:GPIQF4GPIOF12GPI0F3GPIOF2tSCUKpA)(irtCWM(SHlSTCA)(SP1CLK)PUNqPUNopyWoPyMode SelecEedXXxJump Finish ilddrW»DM3F 了FFEYiu niu-bl h 购令 pf甲 enirngd 吕 bran
26、ch insiFucttnn 110(0 i)r;v:A 10 re-diKlexaoutnn mdesiredc1XX£ EPROM0011Call SCIJKXM1O 2 価til SCl-A0010JUlim IoHOSARaM0k3F 60000001unip to OTP adcinKg 0x30 7800Q00DCaH PmM B4Gt1»knd fromGPfO Port B4. 然后根据不同的引导方式来引导程序:在SCITXA引脚为高电平时就是flash boot方式。其它的方式还需要用户编写引导代码,详情见TI的“TMS320x281x DSP Boot
27、ROM Referenee Guide (SPRU095B)”。5. 然后调用ExitBoot函数,来配置硬件,设置寄存器等的初始值,设置运行 环境等。随后,此时置PC=3F7FF6 (内部Flash引导模式时)。因此地址 0x3F7FF6是用户程序的入口,见 F2812.cmd中:BEGIN:origin = 0x3F7FF6, le ngth = 0x000002和eodestart:> BEGINPAGE = 06.在片内flash的3F7FF6和3F7FF7处一般会放有一个跳转指令。本工程中, 由一段代码来完成,见文件 DSP281x_CodeStartBranch.asm作用是
28、先关闭 看门狗,然后跳转到c_int00,即LB _c_int00。更具根据上文,DSP281x_CodeStartBranch.asm的代码必须从0x3F7FF6开始,所以程序中 有这么一句:.sect "codestart"7. 执行这个跳转指令后程序就开始运行 c_int00这个函数了,这个函数在rts 的库中。见CCS的安装目录下的C2000cgtoolslibrts.src。实际上c_int00 执行的是boot.asm,8. 这个函数就是建立一个c程序的运行环境,等建立完c运行环境后c_int00 调用 main 函数,详情见 TI 的“TMS320x281x
29、DSP Boot ROM Referenee Guide(SPRU095B)”中的BootLoader的源代码。Cnt00可以看作是c程 序的Main函数入口。9. main函数开始就是我们自己编写的应用程序了。实际上,如果想让程序从Flash中启动,只要硬件配置正确,软件上只要将代码 段.text定位到Flash中即可,剩下的全部由编译器自动完成。关键是撰写正确的.cmd 文件。5 CMD文件详解5.1 DSP281x_Headers_n on BIOS.cmd该文件是为硬件的各种寄存器映射存储器地址分页和分配空间地址,一般是固 定的,用户无权改动也不必改动, 该文件适合在没有使用操作系统
30、BIOS时使用。 使用时不必改动。MEMORY1PAGE 0:/* Program Memory */PAGE 1:/* Data Memory */DEV_EMU:origin = 0x000880, length = 0x000180/* device emulation registers */PIE_VECT:origin = 0x000D00, length = 0x000100/* PIE Vector Table */FLASH_REGS : origin = 0x000A80, length = 0x000060/* FLASH registers */CSM:origin =
31、 0x000AE0, length = 0x000010/* code security module registers */XINTF:origin = 0x000B20, length = 0x000020/* external interface registers */CPU_TIMER0 :origin = 0x000C00, length = 0x000008/* CPU Timer0 registers (CPU Timer1 and Timer2 arereserved for BIOS)*/PIE_CTRL:origin = 0x000CE0, length = 0x000
32、020/* PIE control registers */ECANA:origin = 0x006000, length = 0x000040/* eCAN control and status registers */ECANA_LAM:origin = 0x006040, length = 0x000040/* eCAN local acceptance masks */ECANA_MOTS:origin = 0x006080, length = 0x000040/* eCAN message object time stamps */ECANA_MOTO:origin = 0x0060
33、C0, length = 0x000040/* eCAN object time-out registers */ECANA_MBOX:origin = 0x006100, length = 0x000100/* eCAN mailboxes */SYSTEM:origin = 0x007010, length = 0x000020/* System control registers */SPIAorigin = 0x007040, length = 0x000010/* SPI registers */SCIA:origin = 0x007050, length = 0x000010/*
34、SCI-A registers */XINTRUPT:origin = 0x007070, length = 0x000010/* external interrupt registers */GPIOMUX:origin = 0x0070C0, length = 0x000020/* GPIO mux registers */GPIODAT:origin = 0x0070E0, length = 0x000020/* GPIO data registers */ADC:origin = 0x007100, length = 0x000020/* ADC registers */EVA:ori
35、gin = 0x007400, length = 0x000040/* Event Manager A registers */EVB:origin = 0x007500, length = 0x000040/* Event Manager B registers */SCIB:origin = 0x007750, length = 0x000010/* SCI-B registers */MCBSPA:origin = 0x007800, length = 0x000040/* McBSP registers */CSM_PWL:origin = 0x3F7FF8, length = 0x0
36、00008/* Part of FLASHA. CSM password locations. */SECTIONSPieVectTableFile : > PIE_VECT,PAGE = 1/* Peripheral Frame 0 Register Structures */FlashRegsFileCsmRegsFileXintfRegsFile:> FLASH_REGS, PAGE = 1:> CSM,PAGE = 1:> XINTF,PAGE = 1PieCtrlRegsFile : > PIE_CTRL, PAGE = 1 /* Peripheral
37、Frame 1 Register Structures */:> SYSTEM,:> SPI A,:> SCIA,SysCtrlRegsFile SpiaRegsFile SciaRegsFile XIntruptRegsFile : > XINTRUPT,GpioMuxRegsFile : > GPIOMUX, GpioDataRegsFile : > GPIODAT AdcRegsFile EvaRegsFile EvbRegsFile ScibRegsFile McbspaRegsFile:> ADC,:> EVA,:> EVB,:&
38、gt; SCIB,:> MCBSPA,PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1CpuTimerORegsFile : > CPU_TIMERO, PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1PAGE = 1/* Peripheral Frame 2 Register Structures */ ECanaRegsFile : > ECANA, ECanaLAMRegsFile : > ECANA_LA
39、M ECanaMboxesFile : > ECANA_MBOX ECanaMOTSRegsFile : > ECANA_MOTS ECanaMOTORegsFile : > ECANA_MOTO/* Code Security Module Register Structures */CsmPwlFile: > CSM_PWL,PAGE = 15.2 F2812.cmd:origin = 0x002000, length = 0x002000:origin = 0x004000, length = 0x002000:origin = 0x008000, length
40、= 0x001000:origin = 0x080000, length = 0x080000:origin = 0x100000, length = 0x080000:origin = 0x3D7800, length = 0x000800:origin = 0x3D8000, length = 0x002000:origin = 0x3DA000, length = 0x002000:origin = 0x3DC000, length = 0x004000:origin = 0x3E0000, length = 0x004000:origin = 0x3E4000, length = 0x
41、004000:origin = 0x3E8000, length = 0x004000:origin = 0x3EC000, length = 0x004000:origin = 0x3F0000, length = 0x004000:origin = 0x3F6000, length = 0x001F80:origin = 0x3F7F80, length = 0x000076ZONE0ZONE1RAML0ZONE2ZONE6OTPFLASHJFLASHIFLASHHFLASHGFLASHFFLASHEFLASHDFLASHCFLASHACSM_RSVDwhen CSM is in use.
42、 */BEGIN: origin = 0x3F7FF6, length = 0x000002/* ZONE7ROMRESETzone 7 (MP/MCn=1) */VECTORSzone 7 (MP/MCn=1) */PAGE 1 :origin = 0x3FC000, length = 0x003FC0:origin = 0x3FF000, length = 0x000FC0:origin = 0x3FFFC0, length = 0x000002:origin = 0x3FFFC2, length = 0x00003E/* XINTF zone 7 available if MP/MCn=
43、1 */* Boot ROM available if MP/MCn=0 */* part of boot ROM (MP/MCn=0) or XINTF/* part of boot ROM (MP/MCn=0) or XINTFRAMM0RAMM1RAML0RAML1FLASHBRAMH0/* Data Memory */* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */ /* Registers remain on PAGE1:origin = 0x000000, length =
44、 0x000400:origin = 0x000400, length = 0x000400:origin = 0x008000, length = 0x001000:origin = 0x009000, length = 0x001000:origin = 0x3F4000, length = 0x002000:origin = 0x3F8000, length = 0x002000/* on-chip RAM block M0 */* on-chip RAM block M1 */* on-chip SARAM block L0 */ /* on-chip SARAM block L1 *
45、/ /* on-chip FLASH */* on-chip RAM block H0 */*/MEMORYPAGE 0:/* Program Memory */* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */* XINTF zone 0 */* XINTF zone 1 */* on-chip RAM block L0 */* XINTF zone 2 */* XINTF zone 6 */* on-chip OTP */* on-chip FLASH */* on-chip FLASH
46、*/* on-chip FLASH */* on-chip FLASH */* on-chip FLASH */ /* on-chip FLASH */* on-chip FLASH */* on-chip FLASH */* on-chip FLASH */* Part of FLASHA. Program with all 0x0000/* Part of FLASHA. Used for "boot to Flash" bootloader mode.On this mode,when boot is filished,it turns to address 0x3F
47、7FF6 to run */:origin = 0x3F7FF8, length = 0x000008/* Part of FLASHA. CSM password locations inCSM_PWLFLASHA */* Allocate sections to memory blocks.Note:codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code execution when booting to flashramfuncs user defined section to s
48、tore functions that will be copied from Flash into RAM*/SECTIONS/* Allocate program areas: */.cinit:> FLASHAPAGE = 0.pinit:> FLASHA,PAGE = 0.text:> FLASHAPAGE = 0codestart:> BEGINPAGE = 0ramfuncs:LOAD = FLASHD, PAGE = 0,RUN = RAML0, PAGE = 1,LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_Ramfu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建省福州市三校联考2025届高二物理第一学期期末达标测试试题含解析
- 云南省红河州二中2025届物理高二上期中教学质量检测试题含解析
- 2025届北京市西城区161中学高三物理第一学期期末监测模拟试题含解析
- 多语种翻译合同
- 办公室室内装修合同
- 2024股东借款合同协议书
- 建筑消防设施维护保养合同样本
- 农机销售合同农机销售合同
- 购房合同保护购房者利益
- 南京酒店员工劳动合同样本
- 规范诊疗服务行为专项整治行动自查表
- (新平台)国家开放大学《建设法规》形考任务1-4参考答案
- 精益工厂布局及精益物流规划课件
- 统编版高中语文选择性必修上册 百年孤独 公开课教学课件
- 注射液无菌检查的方法学验证方案
- 2023年口腔医学期末复习-牙周病学(口腔医学)考试历年真题荟萃带答案
- 复合风管制作工艺
- 多元智能测试题及多元智能测试量表
- 完整版平安基础性向测试智商测试题及问题详解
- (完整版)基层版创伤中心建设指南(试行)
- 无公害生姜生产基地项目可行性研究报告
评论
0/150
提交评论