单片机课程实验指导书
更新时间:2024-06-05 06:59:01 阅读量: 综合文库 文档下载
嵌入式课程实验指导书
实验一、开发环境构建和GPIO控制实验
一、硬件环境 1.1 STM32芯片介绍
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。
STM32的特点:
内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。
存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。
时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。
低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。 调试模式:串行调试(SWD)和JTAG接口。
DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。 2个12位的us级的A/D转换器(16通道):A/D测量范围:0-3.6 V。双采样和保持能力。片上集成一个温度传感器。
2通道12位D/A转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。
最多高达112个的快速I/O端口:根据型号的不同,有26,37,51,80,和112的I/O端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。
最多多达11个定时器:4个16位定时器,每个定时器有4个IC/OC/PWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。2个看门狗定时器(独立看门狗和窗口看门狗)。Systick定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。
最多多达13个通信接口:2个IIC接口(SMBus/PMBus)。5个USART接口(ISO7816接
口,LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbit/s),两个和IIS复用。CAN接口(2.0B)。USB 2.0全速接口。SDIO接口。
ECOPACK封装:STM32F103xx系列微控制器采用ECOPACK封装形式。
二、软件开发环境介绍及安装 2.1 STM32固件库
STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application
programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。
ST公司2007年10月发布了V1.0版本的固件库,MDK ARM3.22之前的版本均支持该库。2008年6月发布了V2.0版的固件库,从2008年9月推出的MDK ARM3.23版本至今均使用V2.0版本的固件库。V3.0以后的版本相对之前的版本改动较大,本书使用目前较新的V3.4版本。
2.2 Keil
A. 打开Keil MDK4.21的安装包,双击安装程序后,起始页面如下图所示,依次单击
“Next”按钮完成安装;
B. 安装完成后,以管理员身份打开uVision4,点击File ? License Management 打开
License Management窗口,复制右上角的CID;
C. 打开Keillic.exe注册机,在CID窗口里填上复制的CID,点击Generate生成许可
号,复制许可号;
D. 将许可号复制到License Management窗口下部的New License ID Code,点击右侧
的Add LIC,若上方的Product显示RealView MDK-ARM即表示注册成功
到此为止,表示MDK安装并注册完成。
2.3 J-Link
J-link用于开发过程中的调试与仿真,是开发过程中必不可少的器件,使用J-link需要
安装其驱动程序,具体安装步骤如下所示,首先打开光盘下的Keil MDK4.21的安装包,双击安装程序,逐步往下,直至完成。
在完成驱动的安装以后,将J-link的一端接至开发板的JTAG口,另一端接至PC,此时打开PC的设备管理器,如能找到J-link表示正常安装,此时J-link已经安装完成。
在后面的内容中,将详细介绍J-link的使用方法。
2.4 FlashLoader
FlashLoader用于STM32可执行文件的下载,支持ISP的方式,把文件下载到指定的地址。在安装Keil MDK4.21时已经按照了FlashLoader。
三、工程模板构建
UE-STM32F103的所有开发调试都在MDK4.21中完成的,为了后面更好的使用此环境,请熟悉以下MDK的窗口的示意图。
Select Folder for Objects:选择编译之后的目标文件存储在哪个目录里,默认位置为工程文件的目录里。此处选在目标文件存放在uetest/run中。
Name of Executable:生成的目标文件的名字,缺省是工程的名字。
Create Executable:生成OMF以及HEX文件。OMF文件名同工程文件名但没有带扩展名。
Debug Information:用于Debug版本,生成调试信息,否则的话无法进行单步调试。 Create Batch File:生成用于实现整个编译过程的批处理文件,使用这个文件可以脱离IDE对省程序进行编译。
Create Hex File:这个选项默认情况下未被选中,如果要写片做硬件实验就必须选中该项。这一点是初学者易疏忽的,在此特别提醒注意一定要要选中,否则编译之不生成Hex文件。
Big Endian:编码格式,与CPU相关,如果CPU采用的是Big Endian编码则勾选上。 Browse Information:产生用于在源文件快速定位的信息。
Create Library:生成lib库文件,默认不选。 4) C/C++设置
在Define宏中添加宏定义:STM32F10X_HD,USE_STDPERIPH_DRIVER
Include Paths:指定头文件的查找路径,可以添加多个,这里我们将工程文件中的路径全部加入。如下所示:
5) Debug设置
左边是对应uVision4的模拟环境,右边是针对仿真器,这里选择右边的Cortex-M/R J-LINK/J-Trace,同时勾选Run to main,这样在调试的时候,会从main函数开始。
如果已经将J-LINK仿真器连接到你的电脑,点击“Settings”你将进入ARM Target Driver Setup 界面;
J-Link/J-Trace Adapter:
--Serial No:列出了当前连接到主机的所有J-LINK适配器的串号,你可以通过列表选
择要使用的J-LINK适配器。
--J-LINK Version,Device Family以及Firmware Version分别列出了当前选择的J-LINK
适配器的版本,设备家族和固件版本。
-- Port:根据和开发板接口的类型选择端口,有JTAG和SW两种,勾选SWJ表示支持
两种方式。
--Max Clock:指定和开发板的最高通信时钟。
--JTAG Device Chain:显示当前通过适配器连接上的开发板。
--Automatic Detection:自动监测,选择系统将自动检测连接上的开发板,建议使用。 --Manual Configuration:手动配置,通过手动设置ID CODE,Device Name和IR len等
属性来查找设备。 Debug:
--Cache Code:通知调试器已经下载的程序代码不会改变,选中的话uVision将不会从目标系统读取程序代码。
--Cache Memory:决定调试程序期间程序停止运行的时候,是否更新存储器显示。 --Verify Code Download:比较目标存储器和调试器上的应用程序的内容。
--Download to Flash:将代码下载到所有的存储器区域,如果不选中,调试器不会把代码下载到Flash Download Setup中制定的存储器地址范围。 6) Utilities标签页的设置
Configure Flash Menu Command
Use Target Driver for Flash Programming:列表选择和调试接口一致的驱动。点击Settings按钮。出现如下界面:
Download Function:定义了Flash烧写的时候进行的操作。
Erase Full Chip:前面三项要选一,烧写程序之前擦除整个Flash存储器。 Erase Sectors:烧写程序之前擦除程序要使用的扇区。 Do not Erase:不进行擦除操作
Program:使用当前uVision工程的程序烧写ROM。 Verify:验证Flash ROM的内容和当前工程中的程序一致。 Reset and Run:在烧写和验证完成之后复位开发板并且运行程序。
RAM for Algorithm:指定用于烧写程序的RAM区域,通常是微控制器上的一段片上空间。
Start:起始地址。 Size:大小。
此处可以通过点击Add添加,点击Add你将看到如下的选择列表,可以根据你选用的芯片选择合适的,也可以自己手动添加。
到此为止工程设置就结束了,接下来需要对工程进行编译。 单击编译所有文件的按钮,完成对软件工程的编译。
编译单个文件编译修改文件编译所有文件编译完成
3.3调试程序
编译通过只是说明我们的代码没有语法错误,至于源程序中存在的其他错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部分的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发接下来我们需要运行我们的程序来验证是否达
点击NEXT,开始ISP下载程序。下载结束后点击Finish完成下载
断电并拔下BOOT0的短接帽。重新上电即可运行下载的程序。
3.4.2 J-link下载说明
安装JLink ARM_V400a程序将JLINK的连接线的凸起对准盘古UE-STM32F103开发板上的JTAG插座(1XS11)的凹进部分插好,运行安装好的“J-Flash ARM V4.00a”
点击“OPTIONS”下的“Project settings”
点击CPU,如图选择芯片型号,然后点击确定返回到主菜单环境:
点击File下的Open菜单键,选择需要烧写的合适的文件路径后,如图
点击Target下的Connect,如果JLINK与开发板连接正确,在底部的窗口将会显示Connected successfully;
点击Target下的Erase Chip,删除芯片的程序空间,成功后将提示相关信息;
点击Target下的Auto,自动将需要烧写的程序写入到芯片内,成功后将提示相关信息。中间如有提示信心,直接选择是。
断电并拔下JLINK连接线。重新上电即可运行下载的程序。
四、GPIO控制实验 一、实验目的
实现开发板上的LED等按照一定规律“亮、灭”,掌握STM32基本GPIO口的使用。
二、硬件原理
实现跑马灯仅需要对STM32的GPIO进行配置与读写。GPIO是STM32最常用的设备
之一,STM32可以提供多达80个双向GPIO口,它们分别分布在A~E等5个端口中。每个端口有16个引脚,每个引脚可以承受最大为5V的压降。
STM32的每个I/O端口都由7个寄存器控制,分别是: 2个32位端口配置寄存器GPIOx_CRL和GPIOx_CRH;2个32位的数据寄存器GPIOx_IDR和GPIOx_ODR;1个32位的置位/复位寄存器GPIOx_BSRR;1个16位的复位寄存器GPIOx_BRR;1个32位的锁存寄存器GPIOx_LCKR。
1) 端口配置寄存器
STM32端口由端口配置寄存器进行配置,由于每个端口有16个I/O口(即引脚),而每个I/O口需要4位配置,因此每个端口需要64位配置,这也是每个端口有2个32位端口配置寄存器的原因。如A端口配置寄存器GPIOA_CRL与GPIOA_CRH,其中GPIOA_CRL配置低8位I/O口,GPIOA_CRH配置高8位I/O口,图中是GPIO_CRL寄存器。
31 30CNF7[1:0]rw rw15 14CNF3[1:0]rw rw29 28MODE7[1:0]rw rw13 12MODE3[1:0]rw rw27 26CNF6[1:0]rw rw11 10CNF2[1:0]rw rw25 24MODE6[1:0]rw rw 9 8MODE2[1:0]rw rw23 22CNF5[1:0]rw rw 7 6CNF1[1:0]rw rw21 20MODE5[1:0]rw rw5 4MODE1[1:0]rw rw19 18CNF4[1:0]rw rw 3 2CNF0[1:0]rw rw17 16MODE4[1:0]rw rw1 0MODE0[1:0]rw rw
每个I/O口可以由软件配置成8种模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽输出、推挽式复用功能、开漏复用功能,以后根据不同的功能配置不同的模式。
表3.1 STM32的I/O口位配置表
配置模式 通用输出 复用功能输出 推挽式(Push-Pull) 开漏(Open-Drain) 推挽式(Push-Pull) 开漏(Open-Drain) 模拟输入 输入 输入浮空 输入下拉 输入上拉
表3.2 STM32输出模式配置表 MODE[1:0] 含义 CNF1 CNF0 0 0 1 0 1 0 1 0 00 MODE[1:0] 01 10 11 参见表 PxODR寄存器 0或1 0或1 任意 任意 任意 任意 0 1 1 0 1 00 01 10 11
保留 最大输出速率10MHz 最大输出速率2MHz 最大输出速率50MHz 在固件库开发中,操作寄存器CRH和CRL来配置I/O口的模式和速度是通过GPIO初
始化函数完成:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
这个函数有两个参数,第一个参数用来指定GPIO,取值范围GPIOA~GPIOG。第二个
参数为初始化参数结构体指针,结构体类型为GPIO_InitTypeDef,在此可以详细了解该结构体定义,该定义在stm32f10x_gpio.h中。
typedef struct {
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; } GPIO_InitTypeDef; 配置GPIO的代码如下:
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
// 配置端口中引脚5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 速度50MHz GPIO_Init(GPIOB, &GPIO_InitStrucure);
上述代码设置GPIOB的第5个端口为推挽输出模式,同时速度为50Mbit/s。 首
先
GPIOB是端口GPIOB的配置寄存器编址,该编址可以在 中查到。结构体GPIO_InitStructure的第一个成员变量GPIO_Pin实际指出了需要配置的引脚在GPIOB配置寄存器中的偏移量。成员变量GPIO_Mode用来设置引脚的输入输出模式,这是通过一个枚举类型定义:
typedef enum {
GPIO_Mode_AIN = 0x0;
GPIO_Mode_FLOATING = 0 }
2) 数据输入/输出寄存器
31 3029 2827 2625 2423 2221 2019 1817 16保留15 1413 1211 10 9 8IDR9IDR8 7 6IDR7IDR65 4IDR5IDR4 3 2IDR3IDR21 0IDR1IDR0IDR15IDR14IDR13IDR12IDR11IDR10r rr r位31:16位15:0r rr rr rr rr rr r保留,始终读为0IDRy[15:0]:端口输入数据(y=0...15)(Port Input Data)这些位为只读并能以字(16位)的形式读出,读出的值为对应I/O口的状态
17 16图3.2 GPIO_IDR寄存器
31 3029 2827 2625 2423 2221 2019 18保留15 14ODR15ODR1413 12ODR13ODR1211 10ODR11ODR10 9 8 7 65 4 3 21 0ODR9ODR8ODR7ODR6ODR5ODR4ODR3ODR2ODR1ODR0r rr rr rr rr rr rr r位31:16位15:0r r保留,始终读为0ODRy[15:0]:端口输入数据(y=0...15)(Port Input Data)这些位为可读并只能以字(16位)的形式操作。
图3.3 GPIO_ODR寄存器
GPIOx_IDR是端口的输入数据寄存器,GPIOx_ODR是端口的输出寄存器。当配置引脚的输入输出模式是通过GPIOx_CRL和GPIOx_CRH两个寄存器来配置的,但是每个端口的16个引脚它们有的可能是输出模式,有的是输入模式,甚至一会输出一会输入,而GPIOx_IDR和GPIOx_ODR两个寄存器是以word模式访问而不能以bit模式访问,GPIOx_IDR只能读,而GPIOx_ODR可以读写。因此,如果输入输出公用一个寄存器,将不知道读出的数据到底应该是输入还是输出。
如果是模拟输入或者浮空输入模式,那么与GPIOx_ODR无关,如果配置成下拉输入模式,则应将GPIOx_ODR各位都设置0,如果是上拉输入模式,则GPIOx_ODR各位设置成1。在开漏输出模式下,通过读GPIOx_IDR来获取IO状态。
3)置位/复位寄存器
31 30BR15BR1429 28BR13BR1227 26BR11BR1025 24BR9BR823 22BR7BR621 20BR5BR419 18BR3BR217 16BR1BR0w w15 14BS15BS14w w13 12BS13BS12w w11 10BS11BS10w w 9 8BS9BS8w w 7 6BS7BS6w w5 4BS5BS4w w 3 2BS3BS2w w1 0BS1BS0w ww ww ww ww ww ww ww w位31:16Bry:清除端口x的 位y(y=0...15)(Port x Reset bit y) 这些位只能写入并只能以字(16位)的形式操作0:对对应的ODRy位不产生影响1:清除对应的ODRy为为0Bry:清除端口x的 位y(y=0...15)(Port x Set bit y) 这些位只能写入并只能以字(16位)的形式操作0:对对应的ODRy位不产生影响1:清除对应的ODRy为为1位15:0
图3.4 GPIO_ODR寄存器
GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。
简单地说GPIOx_BSRR的高16位称作清除寄存器,而GPIOx_BSRR的低16位称作设置寄存器。另一个寄存器GPIOx_BRR只有低16位有效,与GPIOx_BSRR的高16位具有相同功能。
使用BRR和BSRR寄存器可以方便地快速地实现对端口某些特定位的操作,而不影响其它位的状态。
比如希望快速地对GPIOE的位7进行翻转,则可以: GPIOE->BSRR = 0x80; GPIOE->BRR = 0x80;
// 置'1' // 置'0'
如果使用常规'读-改-写'的方法: GPIOE->ODR = GPIOE->ODR | 0x80;
// 置'1' // 置'0'
GPIOE->ODR = GPIOE->ODR & 0xFF7F;
BSRR的高16位并不是多余,假如在一个操作中对GPIOE的位7置'1',位6置'0',则使用BSRR非常方便:
GPIOE->BSRR = 0x400080;
如果没有BSRR的高16位,则要分2次操作,结果造成位7和位6的变化不同步! GPIOE->BSRR = 0x80; GPIOE->BRR = 0x40;
三、固件库函数
1)初始化函数
在固件库开发中,操作寄存器CRH和CRL来配置I/O口的模式和速度是通过GPIO初始化函数完成:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
这个函数有两个参数,第一个参数用来指定GPIO,取值范围GPIOA~GPIOG。第二个参数为初始化参数结构体指针,结构体类型为GPIO_InitTypeDef,在此可以详细了解该结构体定义,该定义在stm32f10x_gpio.h中。
typedef struct {
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; } GPIO_InitTypeDef; 配置GPIO的代码如下:
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
// 配置端口中引脚5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 速度50MHz GPIO_Init(GPIOB, &GPIO_InitStrucure);
上述代码设置GPIOB的第5个端口为推挽输出模式,同时速度为50Mbit/s。 首
先
GPIOB是端口GPIOB的配置寄存器编址,该编址可以在 中查到。结构体GPIO_InitStructure的第一个成员变量GPIO_Pin实际指出了需要配置的引脚在GPIOB配置寄存器中的偏移量。成员变量GPIO_Mode用来设置引脚的输入输出模式,这是通过一个枚举类型定义:
typedef enum {
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, GPIO_Mode_AF_PP = 0x18
} GPIOMode_TypeDef;
2)数据输入/输出函数
A.. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 返回输入端口某个引脚的状态.GPIOx: x (A~G). GPIO_Pin: 端口的哪个bit位需要读取 (0~15).
如GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); 读A0的状态,返回值可能0 或 1 B.
uint16_t
GPIO_ReadInputData(GPIO_TypeDef*
GPIOx);
如GPIO_ReadInputData(GPIOA); 返回A0~A15的状态 其中 typedef struct {
__IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef;
C. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 读GPIO某一位的输出
D. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); //读GPIO的输出
3)位设置函数
将GPIO的某个位置位
A. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 将GPIO的某个位复位
B. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
四、实验设计
本实验是STM32开发最基础的实验,如图3.4所示,3个LED灯分别接GPIOD的引脚PD5、PD6、PD7,实现LED灯的闪烁功能。
图3.4 LED灯硬件连接图
完成上述功能的步骤为:
(1)使能I/O口时钟,调用函数为RCC_APB2PeriphClockCmd( ); (2)初始化I/O参数,调用函数GPIO_Init( );
(3)操作I/O,调用函数GPIO_SetBits( )和GPIO_ResetBits。
五、例程
/*
********************************************************************** * 文件:main.c
* 编辑:武汉理工大学计算机学院 * 日期:2013/12/04 * 修改: * 版本:V1.0
* 描述:UE-STM32F103开发板板载了3个LED,分别为LED1、LED和LED3 本实验将通过教你如何控制STM32的IO口配置实现这三个灯的交替闪烁 ********************************************************************** */
#include \
/*宏定义*/
#define LED_PORT GPIOD #define LED1 GPIO_Pin_5 #define LED2 GPIO_Pin_6 #define LED3 GPIO_Pin_7 /*函数声明*/
void LED_Init(void);
void delayms(int loop_times); /*
****************************************************************** * 函 数:main * 入口参数:无
正在阅读:
单片机课程实验指导书06-05
新北京版小学数学一年级上册《连加、连减和加减混合运算》教案精03-18
湖北省生物制药生产企业名录2018版302家 - 图文04-26
2019年中国IT分销市场前景研究与投资战略研究报告(定制版)目录09-20
20180318畜牧业司制定的畜禽规模养殖场粪污资源化建设规范、试行03-27
那只小鸟的勇敢滋润我的心田作文550字07-14
微机原理与汇编语言复习题09-16
《@氏祠堂》文物保护方案07-06
08.新部编人教版二年级语文上册登鹳雀楼03-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 指导书
- 单片机
- 课程
- 实验
- 中国民间故事阅读过程指导课教案
- 我国主要产煤区铁含量的分布
- 高中会考考试分析
- 塔里木大学人文学院学生综合测评办法 (1)
- 广东省建设项目环境监理资格行业评定管理办法(试行)
- 初二英语寒假作业(一)
- 2014年快速提分阶段民法(M)卷 试卷
- 金相检验二级人员考核复习题一.是非题1明场照明时应用环形光栏
- 九年级语文上册 专题08 致女儿的信(讲)(基础版,学
- 07-11年高考真题分课汇编:2-3 伟大的抗日战争(必修一)
- 未送出的康乃馨
- 很全的钢结构知识点学习
- 项目管理十大知识领域之间的关系
- 《反家庭暴力法》知识测试
- 1万吨年邻苯二甲酸酐合成工艺设计
- 包塑件项目可行性研究报告(目录) - 图文
- 月山湖清淤施工组织设计
- 安徽2017年水利施工招标示范文本 - 图文
- 土木工程施工指导书
- 上海海事大学考研管理学真题题完美打印版(2003-2006)