版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
EmbeddedSystemDevelopment聊城大學(xué)理工學(xué)院曹銀杰caoyinjie@
嵌入式系統(tǒng)與應(yīng)用
第7章CMSIS架構(gòu)與STM32庫開發(fā)方式7.1STM32庫簡介7.2STM32結(jié)構(gòu)及庫層次關(guān)系7.3庫文件及使用簡介7.4GPIO7.5stm32f10x.h中GPIO代碼剖析7.6GPIO控制LED燈實驗7.7時鐘設(shè)置與開啟外設(shè)時鐘7.1STM32庫簡介STM32外設(shè)資源豐富,寄存器的數(shù)量多、設(shè)置復(fù)雜度高,直接配置寄存器方式開發(fā)程序效率低。STM32庫是由ST公司針對STM32提供的函數(shù)接口,即API(ApplicationProgramInterface),庫是架設(shè)在寄存器與用戶驅(qū)動層之間的代碼,向下處理與寄存器直接相關(guān)的配置,向上為用戶提供配置寄存器的接口。STM32庫簡介開發(fā)者可調(diào)用這些函數(shù)接口來配置STM32的寄存器,開發(fā)快速,易于閱讀,維護(hù)成本低等優(yōu)點。事實上,庫函數(shù)的底層實現(xiàn)恰恰是直接配置寄存器方式的最佳例子,想深入了解芯片是如何工作的話,只要追蹤到庫的最底層實現(xiàn)就能理解。想修煉C語言,就從ST的庫開始。7.2STM32結(jié)構(gòu)及庫層次關(guān)系解決不同的芯片廠商生產(chǎn)的Cortex微控制器軟件的兼容性問題,ARM與芯片廠商建立了一個軟件抽象層。CMSIS標(biāo)準(zhǔn):CortexMicroControllerSoftwareInterfaceStandard。CMSIS架構(gòu)STM32結(jié)構(gòu)及庫層次關(guān)系CMSIS標(biāo)準(zhǔn)中最主要的為CMSIS核心層,它包括了:
內(nèi)核函數(shù)層:其中包含用于訪問內(nèi)核寄存器的名稱、地址定義,主要由ARM公司提供。
設(shè)備外設(shè)訪問層:提供了片上的核外外設(shè)的地址和中斷定義,主要由芯片生產(chǎn)商提供可見CMSIS層位于硬件層與操作系統(tǒng)或用戶層之間,提供了與芯片生產(chǎn)商無關(guān)的硬件抽象層,可以為接口外設(shè)、實時操作系統(tǒng)提供簡單的處理器軟件接口,屏蔽了硬件差異,這對軟件的移植是有極大的好處的。STM32的庫,就是按照CMSIS標(biāo)準(zhǔn)建立的。7.3庫文件及使用簡介新建工程---選擇芯片后—選擇運(yùn)行環(huán)境、用的庫、驅(qū)動文件、RTX等—編譯時自動添加其他用的庫文件庫文件及使用簡介ARM公司提供的:如
core_cm3.h、及core_前綴的頭文件,核內(nèi)設(shè)備函數(shù)層,進(jìn)入M3內(nèi)核的接口。
stdin.h頭文件,這是一個ANSIC文件,是獨立于處理器之外的,就像我們熟知的C語言頭文件stdio.h文件一樣。misc.h和misc.c是和CM3內(nèi)核有關(guān)的NVIC和SysTick的驅(qū)動代碼。自行添加到工程。ST公司提供的:stm32f10x.h重要文件,定義寄存器地址、寄存器數(shù)據(jù)結(jié)構(gòu)、中斷向量表。stm32f10x_adc.c、stm32f10x_adc.h,針對模數(shù)轉(zhuǎn)換(ADC)外設(shè),還有很多其他設(shè)備外設(shè)的驅(qū)動程序。每個外設(shè)對應(yīng)一個.c和.h后綴的文件。庫文件及使用簡介startup_stm32f10x_xx.s
啟動文件,作用是:1.初始化堆棧指針SP;2.初始化程序計數(shù)器指針PC;3.設(shè)置堆、棧的大小;4.設(shè)置異常向量表的入口地址;5.配置外部SRAM作為數(shù)據(jù)存儲器(這個由用戶配置,一般的開發(fā)板可沒有外部SRAM);6.設(shè)置C庫的分支入口__main(最終調(diào)用main函數(shù));7.啟動文件還調(diào)用了在system_stm32f10x.c文件中的SystemIni()函數(shù)配置系統(tǒng)時鐘。system_stm32f10x.c文件提供了兩個函數(shù)和一個全局變量庫文件及使用簡介stm32f10x.h頭文件中重要的內(nèi)容就是把STM32的所有寄存器進(jìn)行地址映射。如同51單片機(jī)的<reg52.h>頭文件一樣,stm32f10x.h像一個大表格,我們在使用的時候就是通過宏定義進(jìn)行類似查表的操作。沒有這個文件的話,怎樣訪問STM32的寄存器,有什么缺點?1、需要查手冊來確定哪個地址對應(yīng)哪個寄存器。2、地址易寫錯、可讀性差、易出錯、開發(fā)效率低。庫文件及使用簡介庫函數(shù),就是STM32的庫文件中為我們編寫好的函數(shù)接口,調(diào)用這些庫函數(shù),就可以對STM32進(jìn)行配置。我們可以不知道庫函數(shù)是如何實現(xiàn)的,但必須要知道函數(shù)的功能、可傳入的參數(shù)及其意義、和函數(shù)的返回值。庫函數(shù)很多,學(xué)會查閱庫幫助文檔就行!庫幫助文檔:stm32f10x_stdperiph_lib_um.chm層層打開文檔的目錄標(biāo)簽即可。在用庫函數(shù)的地方,直接從庫幫助文檔復(fù)制即可。思考題:1、沒有stm32f10x.h頭文件的話,怎樣訪問STM32的寄存器,有什么缺點?2、從STM32庫的實現(xiàn)原理上解答庫到底是什么?為什么要用庫?用庫函數(shù)與直接配置寄存器的區(qū)別等問題。7.4GPIOGPIO(GeneralPurposeI/O)通用型輸入/輸出,主要用于需要用到數(shù)字量輸入/輸出的場合。如:繼電器、LED、蜂鳴器等的控制;傳感器狀態(tài)、高低電平等信息的輸入等。1、GPIO簡介大部分GPIO為推挽輸出,具有完整I2C功能的是開漏結(jié)構(gòu);正常拉出灌入電流為4mA,短時間極限值40mA;管腳可承受最大5V的輸入電壓。GPIO寄存器位于AHB總線上,可以進(jìn)行高性能的CPU快速訪問,支持Cortex-M3位帶操作。GPIO允許進(jìn)行DMA數(shù)據(jù)操作。GPIO簡介GPIO引腳又被分為GPIOA、GPIOB…GPIOG不同的組,每組端口分為0~15,共16個不同的引腳,不同芯片的端口組數(shù)不同。GPIO結(jié)構(gòu)圖:端口配置寄存器GPIO簡介I/O引腳可通過端口配置寄存器設(shè)置成不同的功能。四種輸入模式(結(jié)構(gòu)圖上半部分):上拉輸入與下拉輸入:與VDD相連的為上拉電阻,與VSS相連的為下拉電阻。再經(jīng)施密特觸發(fā)器就把信號轉(zhuǎn)化為0、1存儲在輸入數(shù)據(jù)寄存器。浮空輸入:不接上拉與下拉電阻,直接由觸發(fā)器輸入,由于其輸入阻抗較大,一般把這種模式用于標(biāo)準(zhǔn)的通訊協(xié)議如I2C、USART的接收端。模擬輸入:把電壓信號直接傳送到片上外設(shè)模塊,如ADC。GPIO簡介結(jié)構(gòu)圖下半部分為輸出模式結(jié)構(gòu):推挽輸出模式:在輸出高電平時,P-MOS導(dǎo)通,低電平時,N-MOS管導(dǎo)通。開漏輸出模式:輸出0時為低電平,1為高阻狀態(tài)。在使用任何一種開漏模式,都需要接上拉電阻。GPIO簡介
STM32P0.xP2.xGPIO都可配置為中斷功能,并可設(shè)置為上升沿、下降沿或邊沿觸發(fā)。上升沿中斷下降沿中斷
邊沿中斷
GPIO中斷還具有掉電喚醒功能2、GPIO端口配置寄存器端口配置低寄存器GPIOx_CRL(配置0~7引腳),端口配置高寄存器GPIOx_CRH(配置8~15引腳)
(x=A…G)。可將I/O口配置為輸入、輸出或模擬模式;PIOx_CRL復(fù)位值:44444444h,偏移地址:00h。每個引腳的模式由寄存器的4個位控制,又分引腳配置(CNFy[1:0]),引腳的模式(MODEy[1:0]),其中y表示第y個引腳。GPIOx_CRLGPIO端口配置寄存器例:CRH高寄存器的配置PIOx_CRH復(fù)位值:44444444h,偏移地址:04h。例:GPIOx_CRH寄存器的第28至29位設(shè)置為11,并在第30至31位設(shè)置為00答:則把x端口第15個引腳的模式配置成了:輸出的最大速度為50MHz的通用推挽輸出模式。3、端口輸入數(shù)據(jù)寄存器GPIOx_IDR端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)(x=A..E)復(fù)位值:44444444h,地址偏移:08h高位31:16保留,始終讀為0。IDRx[15:0]:端口輸入數(shù)據(jù)(x=0…15)這些位為只讀并只能以字的形式讀出。讀出的值為對應(yīng)I/O口的狀態(tài)。4、端口輸出數(shù)據(jù)寄存器GPIOx_ODR端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)(x=A..E)設(shè)置I/O口的方向輸入還是輸出。復(fù)位值:44444444h,地址偏移:0Ch高位31:16保留,始終為0。ODRx[15:0]:端口輸出數(shù)據(jù)方向(x=0…15)這些位可讀可寫并只能以字的形式操作。通過GPIOx_BSRR(x=A…E),可以分別地對各個ODR位進(jìn)行獨立的置位/清零。5、端口置位/清零寄存器GPIOx_BSRR端口置位/清零寄存器(GPIOx_BSRR)(x=A..E)復(fù)位值:44444444h,地址偏移:10h6、端口位復(fù)位寄存器(GPIOx_BRR)端口位復(fù)位寄存器(GPIOx_BRR)(x=A..E)復(fù)位值:44444444h,地址偏移:14h7、端口配置鎖定寄存器GPIOx_LCKR端口配置鎖定寄存器(GPIOx_LCKR)(x=A..E)復(fù)位值:44444444h,地址偏移:14h當(dāng)執(zhí)行正確的寫序列設(shè)置了位16(LCKK)時,該寄存器用來鎖定端口位的配置。位[15:0]用于鎖定GPIO端口的配置。在規(guī)定的寫入操作期間,不能改變LCKP[15:0]。當(dāng)對相應(yīng)的端口位執(zhí)行了LOCK序列后,在下次系統(tǒng)復(fù)位之前將不能再更改端口位的配置。每個鎖定位鎖定控制寄存器(CRL,CRH)中相應(yīng)的4個位。例:要控制引腳電平高低,需要對寄存器進(jìn)行什么操作?一個引腳y的輸出數(shù)據(jù)由GPIOx_BSRR寄存器位的2個位來控制分別為BRy(BitResety)和BSy(BitSety),BRy位用于寫1清零,使引腳輸出低電平;BSy位用來寫1置1,使引腳輸出高電平。8、GPIO輸入輸出演示GPIOx_IDR10BRy寫1Bsy寫1INOUT10GPIOx_ODRGPIOx_PUPDRvccGPIOGPIOx_CRL
設(shè)置引腳為GPIO功能
1
配置引腳模式
2
設(shè)置GPIO的方向
3
設(shè)置GPIO輸出電平4
GPIO輸入GPIO輸出1高電平1輸出操作流程輸入操作流程1
讀取GPIO引腳電平
4
GPIOx_BSRR7.5stm32f10x.h庫中GPIO代碼剖析以外設(shè)GPIOC為例,文件中包含如下宏定義:#defineGPIOC_BASE(APB2PERIPH_BASE+0x1000)#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)#definePERIPH_BASE((uint32_t)0x40000000)首先看外設(shè)基地址PERIPH_BASE這個宏,宏展開為0x40000000,并把它強(qiáng)制轉(zhuǎn)換為uint32_t類型數(shù)據(jù);總線基地址宏APB2PERIPH_BASE指向地址0x40010000;最后到了宏GPIOC_BASE為APB2PERIPH_BASE加上偏移量0x1000得到了GPIOC端口的寄存器組的基地址。stm32f10x.h中GPIO代碼剖析stm32f10x.h文件,還可以發(fā)現(xiàn)以下類似的宏:#defineGPIOA_BASE(APB2PERIPH_BASE+0x0800)#defineGPIOB_BASE(APB2PERIPH_BASE+0x0C00)#defineGPIOC_BASE(APB2PERIPH_BASE+0x1000)#defineGPIOD_BASE(APB2PERIPH_BASE+0x1400)GPIOA、GPIOB、GPIOC、GPIOD寄存器組的起始地址,都對應(yīng)著獨立的一組寄存器。typedefstruct{__IOuint32_tCRL;__IOuint32_tCRH;__IOuint32_tIDR;__IOuint32_tODR;__IOuint32_tBSRR;__IOuint32_tBRR;__IOuint32_tLCKR;}GPIO_TypeDef;#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)#defineGPIOB((GPIO_TypeDef*)GPIOB_BASE)……(GPIO_TypeDef*)把GPIOA_BASE地址轉(zhuǎn)換為GPIO_TypeDef結(jié)構(gòu)體指針類型。對每個GPIOx是用結(jié)構(gòu)封裝了寄存器組,stm32f10x.h中代碼:GPIO_TypeDef,這個結(jié)構(gòu)體的首地址(變量CRL的地址)若為0x40011000,那么結(jié)構(gòu)體中第二個變量(CRH)地址為0x40011000+0x04,加上的這個0x04,正是4字節(jié)地址偏移量。stm32f10x.h中GPIO代碼剖析有了這樣的宏,就可用以下方式來修改GPIO寄存器:GPIO_TypeDef*GPIOx;//定義一個GPIO_TypeDef型結(jié)構(gòu)體指針GPIOxGPIOx=GPIOA;
//把指針地址設(shè)置為宏GPIOA地址GPIOx->CRL=0xffffffff;
//通過指針訪問并修改GPIOA_CRL寄存器通過類似的方式,我們就可以給具體的寄存器寫上適當(dāng)?shù)膮?shù),控制STM32了。這只是庫開發(fā)的皮毛,庫提供了更簡單的開發(fā)方式。GPIO1.配置寄存器:選定GPIO的特定功能,最基本的如:選擇作為輸入還是輸出端口。2.數(shù)據(jù)寄存器:保存了GPIO的輸入電平或?qū)⒁敵龅碾娖健?.位控制寄存器:設(shè)置某引腳的數(shù)據(jù)為1或0,控制輸出的電平。4.鎖定寄存器:設(shè)置某鎖定引腳后,就不能修改其配置。C語言程序舉例:TESTc.C#defineuint32 unsignedint#defineN 10uint32sum;//使用加法運(yùn)算來計算1+2+3+...+(N-1)+N的值。(N>0)intmain(void){uint32i;sum=0;for(i=0;i<=N;i++){ sum+=i;}}GPIO庫函數(shù)7.6LED流水燈實驗想要控制LED燈,當(dāng)然是通過控制STM32芯片的I/O引腳電平的高低來實現(xiàn)。LED流水燈實驗LED流水燈實驗1.GPIO端口引腳多-->就要選定需要控制的特定引腳2.GPIO功能如此豐富-->配置需要的特定功能3.控制LED的亮和滅-->設(shè)置GPIO輸出電壓的高低與GPIO相關(guān)的寄存器了,可以通過《STM32參考手冊》來查看LED流水燈實驗LED實驗中用到了RCC跟GPIO這兩個外設(shè)。環(huán)境配置如圖:main.cled.cled.hLed流水燈主程序:main.c#include"led.h"voidDelay(__IOuint32_tnCount)//簡單延時函數(shù){ for(;nCount!=0;nCount--);}intmain(void){LED_GPIO_Config(); while(1) {LED1(ON); Delay(0x0FFFFF); LED1(OFF); LED2(ON); Delay(0x0FFFFF); LED2(OFF); LED3(ON); Delay(0x0FFFFF); LED3(OFF); } }初始化LED函數(shù)led.c#include"led.h"#include"stm32f10x_gpio.h"#include"stm32f10x_rcc.h"voidLED_GPIO_Config(void){/*利用庫定義一個GPIO_InitTypeDef類型的結(jié)構(gòu)體*/GPIO_InitTypeDefGPIO_InitStructure;/*開啟GPIOC的外設(shè)時鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);/*選擇要控制的GPIOC引腳GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; /*設(shè)置引腳模式為通用推挽輸出*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;初始化LED函數(shù)led.c/*設(shè)置引腳速率為50MHz*/GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/*調(diào)用庫函數(shù),初始化GPIOC*/GPIO_Init(GPIOC,&GPIO_InitStructure);//關(guān)閉led燈GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);}個函數(shù)LED_GPIO_Config()實現(xiàn)了所有為點亮led的配置led.h#ifndef__LED_H#define__LED_H#include"stm32f10x.h"/**themacrodefinitiontotriggertheledonoroff*1-off*0-on*/#defineON0#defineOFF1/*帶參宏,可像內(nèi)聯(lián)函數(shù)一樣使用*/#defineLED1(a) if(a)\ GPIO_SetBits(GPIOC,GPIO_Pin_3);\ else \ GPIO_ResetBits(GPIOC,GPIO_Pin_3)led.h續(xù)#defineLED2(a) if(a)\ GPIO_SetBits(GPIOC,GPIO_Pin_4);\ else \ GPIO_ResetBits(GPIOC,GPIO_Pin_4)#defineLED3(a) if(a)\ GPIO_SetBits(GPIOC,GPIO_Pin_5);\ else \ GPIO_ResetBits(GPIOC,GPIO_Pin_5)voidLED_GPIO_Config(void);#endif/*__LED_H*/在編譯過程,編譯器會把帶參宏展開,在相應(yīng)的位置替換為宏展開代碼。其中的反斜杠符號“\”叫做續(xù)行符,后面不能有空格、注釋等led用到stm32f10x_gpio.h庫的結(jié)構(gòu)、宏定義1、GPIO_InitTypeDef結(jié)構(gòu),引腳初始化的結(jié)構(gòu)2、GPIO_Pin_x引腳為uint16_t類型,宏定義:1.#defineGPIO_Pin_0((uint16_t)0x0001)/*!<Pin0selected*/2.#defineGPIO_Pin_1((uint16_t)0x0002)/*!<Pin1selected*/3.#defineGPIO_Pin_2((uint16_t)0x0004)/*!<Pin2selected*/4.#defineGPIO_Pin_3((uint16_t)0x0008)/*!<Pin3selected*/例:GPIO_Pin_0(0000000000000001)BGPIO_Pin_1(0000000000000010)B
led用到stm32f10x_gpio.h庫的結(jié)構(gòu)、宏定義3、GPIOSpeed_TypeDef定義GPIO的輸出速率:typedefenum{GPIO_Speed_10MHz=1,//枚舉常量值1,對應(yīng)10MHzGPIO_Speed_2MHz,//常量值為2,對應(yīng)2MHzGPIO_Speed_50MHz//常量值為3,對應(yīng)50MHz}GPIOSpeed_TypeDef;GPIO_Speed_10MHz對應(yīng)(0001)BGPIO_Speed_2MHz對應(yīng)(0010)BGPIO_Speed_50MHz對應(yīng)(0011)BSpeed控制參數(shù),它的宏展開低2位的值,正好符合寄存器MODEy中2位的控制值。直接把這個參數(shù)寫入CRL、CRH配置寄存器的MODEy位,其中y由GPIO_Pin參數(shù)確定第幾引腳。
led用到stm32f10x_gpio.h庫的結(jié)構(gòu)、宏定義4、GPIOMode_TypeDef結(jié)構(gòu)定義GPIO引腳的功能:typedefenum{GPIO_Mode_AIN=0x0,//模擬輸入模式GPIO_Mode_IN_FLOATING=0x04,//浮空輸入模式GPIO_Mode_IPD=0x28,//下拉輸入模式GPIO_Mode_IPU=0x48,//上拉輸入模式
GPIO_Mode_Out_OD=0x14,//開漏輸出模式GPIO_Mode_Out_PP=0x10,//通用推挽輸出模式GPIO_Mode_AF_OD=0x1C,//復(fù)用功能開漏輸出GPIO_Mode_AF_PP=0x18//復(fù)用功能推挽輸出}GPIOMode_TypeDef;用于初始化的庫函數(shù)GPIO_Init()通過查找?guī)鞄椭臋n獲得Error:L6218E:Error:L6218E:Undefinedsymbolassert_param(referredfromstm32f10x_gpio.o).斷言機(jī)制函數(shù)assert_param,STM32的函數(shù):assert_param(IS_GPIO_ALL_PERIPH(GPIOx));剛開始學(xué)習(xí)的時候都遇到編譯不過去的問題,通過在文件中添加USE_STDPERIPH_DRIVER來解決的:error65:創(chuàng)建一個STM32F103VE核的項目error65:accessviolationat0x40021000:no'read'permission是Debug里面的設(shè)置有缺陷,不會自動匹配:DialogDLL:DCM3.DLLParameter:-pCM3應(yīng)手動改為:DialogDLL:DARMSTM.DLLParameter:-pSTM32F103VE邏輯分析窗口使用再點擊Setup,輸入LED燈對應(yīng)的三個信號PORTB.0、PORTF.7、PORTF.8;DisplayType選擇bit,然后單擊Close關(guān)閉該對話框;邏輯分析窗口使用點擊運(yùn)行按鈕。運(yùn)行一段時間之后,點擊停止按鈕,暫停仿真回到邏輯分析窗口,可通過Zoom里面的In按鈕來放大波形,通過Out按鈕來縮小波形,或者按All顯示全部波形。7.7時鐘設(shè)置與開啟外設(shè)時鐘外設(shè)初始化后,必須要開啟外設(shè)時鐘。開啟外設(shè)時鐘之前,首先要配置好系統(tǒng)時鐘SYSCLK。在startup_stm32f10x_hd.s啟動文件中,調(diào)用main函數(shù)之前就先調(diào)用了SystemInit()函數(shù),就是設(shè)置系統(tǒng)時鐘SYSCLK:時鐘來源、倍頻、分頻等控制參數(shù)。這個函數(shù)的定義在system_stm32f10x.c文件之中。時鐘設(shè)置與開啟外設(shè)時鐘voidSystemInit(void)函數(shù)的執(zhí)行流程是先將與配置時鐘相關(guān)的寄存器都復(fù)位為默認(rèn)值,復(fù)位寄存器后,調(diào)用了另外一個函數(shù)SetSysClock(),其代碼:在system_stm32f10x.c文件的開頭,有條件編譯定義。選擇相應(yīng)的時鐘。時鐘設(shè)置與開啟外設(shè)時鐘GPIO所用的時鐘PCLK2我們采用默認(rèn)值,也為72MHz。開啟和關(guān)閉外設(shè)時鐘也有封裝好的庫函數(shù)RCC_APB2PeriphClockCmd()。在led.c文件中調(diào)用了這個函數(shù)。
/*開啟GPIOC外設(shè)時鐘,參數(shù)DISABLE為關(guān)閉*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);如用到I/O引腳復(fù)用功能,還要開
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年消防給水工程智能化施工及維護(hù)服務(wù)合同3篇
- 2025變頻器代理商銷售合同:產(chǎn)品價格調(diào)整與結(jié)算協(xié)議3篇
- 2025年度紡織行業(yè)新材料研發(fā)與應(yīng)用采購合同2篇
- 2025年度工業(yè)倉儲租賃及倉儲設(shè)施維護(hù)保養(yǎng)合同范本3篇
- 二零二五年房地產(chǎn)項目工程造價咨詢合同模板3篇
- 二零二四年員工自愿放棄社保及轉(zhuǎn)移待遇合同3篇
- 2025年度藝術(shù)展布展藝術(shù)品保護(hù)與搬運(yùn)合同3篇
- 二零二五版二手房交易中介服務(wù)合同模板2篇
- 2024虛擬現(xiàn)實內(nèi)容開發(fā)制作合同
- 2025年消防噴淋系統(tǒng)安裝及消防設(shè)施檢測與維保服務(wù)合同3篇
- 《FANUC-Oi數(shù)控銑床加工中心編程技巧與實例》教學(xué)課件(全)
- 微信小程序運(yùn)營方案課件
- 抖音品牌視覺識別手冊
- 陳皮水溶性總生物堿的升血壓作用量-效關(guān)系及藥動學(xué)研究
- 安全施工專項方案報審表
- 學(xué)習(xí)解讀2022年新制定的《市場主體登記管理條例實施細(xì)則》PPT匯報演示
- 好氧廢水系統(tǒng)調(diào)試、驗收、運(yùn)行、維護(hù)手冊
- 中石化ERP系統(tǒng)操作手冊
- 五年級上冊口算+脫式計算+豎式計算+方程
- 氣體管道安全管理規(guī)程
- 《眼科學(xué)》題庫
評論
0/150
提交評論