ARM硬件结构应用课件_第1页
ARM硬件结构应用课件_第2页
ARM硬件结构应用课件_第3页
ARM硬件结构应用课件_第4页
ARM硬件结构应用课件_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.LPC和STM32简介2.STM32固件库3.系统控制模块4.引脚连接模块5.GPIO操作6.向量中断控制器7.外中断输入LPC和STM32系列ARM硬件结构与应用8.定时器原理及应用9.SPI接口及应用10.UART接口及应用11.A/D转换器及应用12.看门狗13.PWM原理与应用14.实时时钟1.LPC和STM32简介LPC和STM32系列ARM硬件14引脚连接模块概述LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。引脚P0.0GPIOTXD0PWM1输出保留PINSELx引脚连接寄存器PINSELx1:000011011P0.0默认为GPIO功能P0.0选择TXD0功能,配置对应位为01P0.0选择PWM1功能,配置对应位为10P0.0选择保留功能,配置对应位为114引脚连接模块概述LPC2000系列微24引脚连接模块LPC2000系列微控制器具有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同。寄存器描述寄存器LPC2100LPC2200PINSEL0P0[0:15]PINSEL1P0[16:31]PINSEL2P1[16:31]P1[0:1]、P1[16:31]、P2[0:31]、P3[0:31]4引脚连接模块LPC2000系列微控制器34引脚连接模块应用示例PINSEL0=0x05<<16;要求将P0.8、P0.9设置为TxD1、RxD1通过查阅PINSE0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL0[19:16],当该域设置为[0101](0x05)时选择RxD1和TxD1。

为了不影响别的管脚连接设置,通常选择下面的设置方法。PINSEL0=(PINSEL0&0xFFF0FFFF)|(0x05<<16);4引脚连接模块应用示例PINSEL0=0x05<<45GPIO引脚描述LPC2114/2124微控制器具有两个端口——P0和P1,可以作为GPIO使用的引脚数为46个。LPC2210/2212/2214微控制器还包含另外两个端口——P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个。GPIO与控制寄存器的关系PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10引脚5GPIO引脚描述LPC2114/2125PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10通用名称描述访问类型复位值IOPINGPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出只读NAIOSETGPIO输出置位寄存器。该寄存器控制引脚输出高电平读/置位0x00000000IOCLRGPIO输出置位寄存器。该寄存器控制引脚输出低电平只清零0x00000000IODIRGPIO方向控制寄存器。该寄存器单独控制每个IO口的方向读/写0x00000000GPIO相关寄存器描述PINSELxIOxDIRIOxCLRIOxPINIOxSE6PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxPINIOxPIN描述复位值31:0GPIO引脚值。IOxPIN[0]对应于Px.0…IOxPIN[31]对应于Px.31引脚未定义该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,如P1口对应于IO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。PINSELxIOxDIRIOxCLRIOxPINIOxSE7PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxDIRIOxDIR描述复位值31:0方向控制位。IOxDIR[0]对应于Px.0…IOxDIR[31]对应于Px.31引脚0当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。作为输入功能时,引脚处于高阻态。PINSELxIOxDIRIOxCLRIOxPINIOxSE8PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxSETIOxSET描述复位值31:0输出置位。IOxSET[0]对应于Px.0…IOxPIN[31]对应于Px.31引脚0当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。PINSELxIOxDIRIOxCLRIOxPINIOxSE9PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxCLRIOxCLR描述复位值31:0输出清零。IOxCLR[0]对应于Px.0…IOxCLR[31]对应于Px.31引脚0当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。注意:读取该寄存器无效,不能读回输出寄存器的值。PINSELxIOxDIRIOxCLRIOxPINIOxSE105GPIO使用GPIO注意要点引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);复位后默认所有GPIO为输入模式。5GPIO使用GPIO注意要点引脚设置为输出方式时,输出11...PINSEL0&=0xFFFFFFFC;IO0DIR|=0x00000001;IO0SET=0x00000001;...C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例——设置P0.0输出高电平P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)设置P0.0口状态,输出高电平1...C代码:PINSEL0IO0DIRIO0CLR12...uint32PinStat;PINSEL0&=0xFFFFFFFC;IO0DIR&=0xFFFFFFFE;PinStat=IO0PIN;...C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例——读取P0.0引脚状态P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输入(3)从IO0PIN读取引脚状态IO0PIN...C代码:PINSEL0IO0DIRIO0CLR13#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0CLR=DataBus;IO0SET=Data;...使用IOxSET和IOxCLR实现:GPIO应用示例——输出多位数据至IO口(1)设置引脚连接模块,P0.0~7为GPIO(2)设置P0.0口方向,设置为输出(3)清零8位IO口的输出状态在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。

本例将8位无符号整形变量Data的值输出到P0.0~P0.7。(4)Data变量中为1的位将输出高电平0x??0x00Data数据输出线:#defineDataBus0xFF使用IOxSET14#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0PIN=(IO0SET&0xFFFFFF00)|Data;...GPIO应用示例——输出多位数据至IO口(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)写IO0PIN,输出数据

在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。

本例将8位无符号整数变量Data的值输出到P0.0~P0.7。使用IOxPIN实现:0x??Data数据输出线:0x??0x00Data与前者对比:#defineDataBus0xFFGPIO应用示例15STM32GPIO操作主要功能:通用I/O(GPIO)用,输入输出;单独的位设置或位清除;外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;复用功能(AF),并且软件能重新映射I/O复用功能;GPIO锁定机制:主要针对复位设定的,当某端口位lock后,复位后将不改变的此端口的位配置。

STM32GPIO操作主要功能:16STM32GPIO操作强大的GPIO功能,可设置:

GPIOMode_TypeDefGPIOmode定义及偏移地址

GPIOmode:GPIO_Mode_AIN0x00模拟输入

GPIO_Mode_IN_FLOATING0x04悬空输入

GPIO_Mode_IPD0x28下拉输入

GPIO_Mode_IPU0x48上拉输入

GPIO_Mode_Out_OD0x14开漏输出

GPIO_Mode_Out_PP0x10推挽输出

GPIO_Mode_AF_OD0x1c开漏复用

GPIO_Mode_AF_PP0x18推挽复用

STM32GPIO操作强大的GPIO功能,可设置:

G17STM32GPIO操作输出速度通过GPIOSpeed_TypeDef结构体可选择:

2MHz,10MHz,50MHz。

typedefenum

{

GPIO_Speed_10MHz,

GPIO_Speed_2MHz,

GPIO_Speed_50MHz}GPIOSpeed_TypeDef;

STM32GPIO操作输出速度通过GPIOSpeed_T18固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。

1.GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct):根据GPIO_InitTypeDef里面的值,初始化某排里面的某些引脚的模式跟速度

2.GPIO_StructInit(GPIO_InitTypeDef*GPIO_InitStruct):给GPIO_InitTypeDef里面的项目赋默认值

3.GPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin):某排引脚某个引脚输出1

固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,19固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。

4.GPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin):某排引脚某个引脚输出0

5.GPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal):设置某排引脚输出值

6.GPIO_ReadInputData(GPIO_TypeDef*GPIOx):读整排引脚的值

7.GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin):读某排引脚里面的输出寄存器的某个引脚值……固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,20操作实例做个跑马灯程序,PA.11—PA.14口分别4个LED灯,当I/O为高电平时LED灯点亮。操作实例做个跑马灯程序,PA.11—PA.14口分别4个LE21#include“stm32f10x.h”

#include“stm32f10x_conf.h”

GPIO_InitTypeDefPAInit;

voidLED_Init(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开GPIOC时钟

PAInit.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;

PAInit.GPIO_Mode=GPIO_Mode_Out_PP;

PAInit.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_Init(GPIOA,&PAInit);

}

#include“stm32f10x.h”

#includ22main()

{

LED_Init();

while(1)

{GPIO_SetBits(GPIOA,GPIO_Pin_11);//GPIOA.11=1

Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_11);//GPIOA.11=0

Delay(0x8ffff);

GPIO_SetBits(GPIOA,GPIO_Pin_12);Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_12);

Delay(0x8ffff);

GPIO_SetBits(GPIOA,GPIO_Pin_13);Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_13);

Delay(0x8ffff);

GPIO_SetBits(GPIOA,GPIO_Pin_14);

Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_14);

Delay(0x8ffff);

}

}

main()

{

LED_Init();

236向量中断控制器概述ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。CPU内核ARM7TDMI-S6向量中断控制器概述ARM7TDMI内核246.向量中断控制器程序状态寄存器CPSR与VIC的关系ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)6.向量中断控制器程序状态寄存器CPSR与VIC的关系256.向量中断控制器程序状态寄存器CPSR与VIC的关系当I=1时,禁止IRQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)当I=0时,使能IRQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)6.向量中断控制器程序状态寄存器CPSR与VIC的关系266.向量中断控制器程序状态寄存器CPSR与VIC的关系当F=1时,禁止FIQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)当F=0时,使能FIQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)6.向量中断控制器程序状态寄存器CPSR与VIC的关系276.向量中断控制器中断分类中断输入请求可以在VIC中被设置为以下三类:

FIQ中断:具有最高优先级;

向量IRQ中断:具有中等优先级;

非向量IRQ中断:具有最低优先级;6.向量中断控制器中断分类中断输入请求可以在VIC中被设286.向量中断控制器FIQ中断硬件处理流程将当前的程序状态寄存器的内容备份即,SPSR_fiq=CPSR处理器切换到FIQ模式禁止IRQ和FIQ中断,即,I=F=1保存返回地址LR_fiq=PC设置FIQ异常入口地址PC=0x1C发生FIQ异常事件说明:ARM7不支持FIQ中断嵌套6.向量中断控制器FIQ中断硬件处理流程将当前的程序状态296.向量中断控制器IRQ中断相应流程将当前的程序状态寄存器的内容备份即,SPSR_irq=CPSR处理器切换到IRQ模式禁止IRQ中断,即,I=1保存返回地址LR_irq=PC设置IRQ异常入口地址PC=0x18发生IRQ异常事件说明:ARM7不支持IRQ中断嵌套6.向量中断控制器IRQ中断相应流程将当前的程序状态寄存30向量IRQ0使能中断源向量IRQ0控制寄存器VICVectCntl0向量地址0寄存器VICVectAddr0默认向量地址寄存器VICDefVectAddr向量IRQ15使能中断源向量IRQ15控制寄存器VICVectCntl15向量地址15寄存器VICVectAddr15DefIRQIRQ0IRQ15VectAddr0VectAddr15DefVectAddr硬件优先级选择向量地址选择向量地址寄存器VICVectAddrIRQ0IRQ15DefIRQIRQ中断信号向量IRQ0向量IRQ15非向量IRQ高低优先级IRQ中断状态寄存器VICIRQStatusFIQ中断信号中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源[31:0]软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClearFIQ中断状态寄存器VICFIQStatus中断状态寄存器VICRawIntrIRQFIQ向量IRQ0使能中断源向量IRQ0控制寄存器向量地址0寄存器31中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源[31:0]软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClear中断状态寄存器VICRawIntrIRQFIQ名称描述访问复位值地址VICIntEnable中断使能寄存器

控制32个中断请求(包括软件中断)的使能R/W00xFFFFF010VICIntEnClr中断使能清零寄存器将中断使能寄存器中的一个或多个位清零W00xFFFFF014VICIntSelect中断选择寄存器将32个中断请求的每个中断分配为FIQ或IRQR/W00xFFFFF00CVICSoftInt软件中断寄存器

控制对应通道产生软件中断R/W00xFFFFF018VICSoftIntClear软件中断清零寄存器

禁止对应通道的软件中断W00xFFFFF01C寄存器描述-控制寄存器中断选择寄存器中断使能寄存器中断使能清零寄存器中断源软件中断32控制寄存器功能描述6.向量中断控制器控制寄存器功能描述VICIntEnable使能(禁止)中断源产生中断VICIntEnClrVICIntSelect中断类型选择:FIQ&IRQVICSoftInt软件中断设置寄存器VICSoftIntClearFIQ中断向量IRQ中断非向量IRQ中断中断源0中断源1……中断源31VIC将32个中断输入进行分配控制寄存器功能描述6.向量中断控制器控制寄存器功能描述V33向量IRQ0使能中断源向量IRQ0控制寄存器VICVectCntl0向量地址0寄存器VICVectAddr0默认向量地址寄存器VICDefVectAddr向量IRQ15使能中断源向量IRQ15控制寄存器VICVectCntl15向量地址15寄存器VICVectAddr15向量地址寄存器VICVectAddr寄存器描述-参数设置寄存器名称描述复位置地址VICVectCntl0~VICVectCntl15向量控制0寄存器~向量控制15寄存器00xFFFFF200~0xFFFFF23CVICVectAddr0~VICVectAddr15向量地址0寄存器~向量地址15寄存器00xFFFFF100~0xFFFFF13CVICDefVectAddr默认向量地址寄存器00xFFFFF034VICVectAddr向量地址寄存器00xFFFFF030向量IRQ0使能中断源向量IRQ0控制寄存器向量地址0寄存器34IRQ中断特点6.向量中断控制器特点区别向量IRQ支持16个向量IRQ中断;16个优先级;每个优先级指定一个服务程序入口地址。能为每个向量IRQ中断源设置服务程序地址。非向量IRQ支持1个非向量IRQ中断;所有非向量IRQ的入口地址都相同。所有的非向量IRQ中断都共用一个相同的服务程序入口地址。IRQ中断特点6.向量中断控制器特点区别向量支持16个向35IRQ中断相关寄存器6.向量中断控制器寄存器名称功能VICVectCntl0~15为中断源分配向量IRQ中断的优先级。VICVectAddr0~15为该中断优先级设置服务程序入口地址。VICDefVectAddr设置非向量中断服务程序的入口地址。注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。IRQ中断相关寄存器6.向量中断控制器寄存器名称功能VI36产生中断后的服务程序地址6.向量中断控制器向量IRQ中断发生向量IRQ中断后,VIC将对应的向量地址寄存器中的数据存入VICVectAddr寄存器中。非向量IRQ中断发生非向量IRQ中断后,VIC将默认向量地址寄存器中的数据存入VICVectAddr寄存器中产生中断后的服务程序地址6.向量中断控制器向量IRQ中断37IRQ中断状态寄存器VICIRQStatus中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源[31:0]软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClearFIQ中断状态寄存器VICFIQStatus中断状态寄存器VICRawIntrIRQFIQ寄存器描述-状态寄存器名称描述访问复位值地址VICIRQStatusIRQ状态寄存器该寄存器读出定义为IRQ并使能的中断的状态RO00xFFFFF000VICFIQStatusFIQ状态请求该寄存器读出定义为FIQ并使能的中断的状态RO00xFFFFF004VICRawIntr所有中断的状态寄存器该寄存器读出32个中断请求/软件中断的状态,不管中断是否使能或分类RO00xFFFFF008注意:读取VICRawIntr寄存器将得到所有32个中断请求和软件中断的状态,它不管中断是否使能或分类。IRQ中断状态寄存器中断选择寄存器中断使能寄存器中断使能清零38保护使能寄存器6.向量中断控制器保护使能寄存器(VICProtection):位[31:1]0功能—当该位为1时,只能在特权模式下访问VIC寄存器。

在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。保护使能寄存器6.向量中断控制器保护使能寄存器(VICP39FIQ中断处理6.向量中断控制器SPSR_fiq=CPSR12CPSR=nzcvqIFt_fiq3LR_fiq=PC4PC=0x1C硬件处理软件处理中断服务程序1设置返回地址2恢复程序状态寄存器CPSR3SUBSPC,LR,#4FIQ中断处理6.向量中断控制器SPSR_fiq=C40IRQ中断处理6.向量中断控制器硬件处理SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr=VICVectAddrn4LR_irq=PC5PC=0x18软件处理执行中断服务程序2设置返回地址3恢复程序状态寄存器CPSR4获取中断服务程序地址1IRQ中断处理6.向量中断控制器硬件处理SPSR_irq41IRQ中断处理6.向量中断控制器SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr=VICVectAddrn4LR_irq=PC硬件处理5PC=0x18软件处理执行中断服务程序2设置返回地址3恢复程序状态寄存器CPSR4PC[VICVectAddr]1IRQ中断处理6.向量中断控制器SPSR_irq=C42IRQ中断处理6.向量中断控制器SUBSPC,LR,#4SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr=VICVectAddrn4LR_irq=PC硬件处理5PC=0x18软件处理执行中断服务程序2设置返回地址3恢复程序状态寄存器CPSR4LDRPC,[PC,#-0xff0]1IRQ中断处理6.向量中断控制器SUBSPC,43IRQ中断的设计实例将定时器0中断分配为向量IRQ通道0,中断服务程序地址设置为Timer0_ISR。C代码:步骤:IRQ通道0控制寄存器VICVectCntl031:654:0010x04向量IRQ通道0控制寄存器位分配位数值IRQ通道0向量地址寄存器VICVectAddr0定时器0中断服务程序地址Timer0_ISR中断使能寄存器VICIntEnable中断通道#4对应位,置“1”中断选择寄存器VICIntSelect中断通道4分配为IRQ中断(定时器0位于中断通道#4)VICIntSelect=0x00000000;VICVectAddr0=(int)Timer0_ISR;VICVectCntl0=(0x20|4);VICIntEnable=(1<<4);IRQ中断的设计实例将定时器0中断分配为向量44③IRQ_Eint0???VICVectAddr0VICVectAddrIRQ_Eint0图示IRQ中断的发生过程0x000000000xFFFFFFFF用户程序中断服务程序异常向量表1.正在执行用户程序;①2.外部中断0发生中断;②3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器;④4.程序跳转至异常向量表中IRQ入口0x0018处;5.执行指令跳转至VICVectAddr寄存器中的中断服务地址;⑤⑥6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。⑤LDRPC,[PC,#-0xff0]③IRQ_Eint0???VICVectAddr0VICVe45图示IRQ中断的发生过程0x000000000xFFFFFFFF用户程序中断服务程序异常向量表①②④⑤⑥③IRQ_Eint0???VICVectAddr0VICVectAddrIRQ_Eint0⑤LDRPC,[PC,#-0xff0]注意:任何IRQ中断产生之后,微控制器跳转到地址0x18执行代码,该地址处的指令为:

LDRPC,[PC,#-0xff0]在执行该指令时,PC指向当前指令后的第2条指令,即地址0x20。该指令将内存地址:

0x20-0xFF0=0xFFFFF030处的内容存入PC,该地址正是VICVectAddr寄存器的地址。所以一条ARM指令即可实现程序向中断服务程序的跳转。图示IRQ中断的发生过程0x000000000xFFFF46STM32目前支持的中断共为:84个其中(16个内核+68个外部),和16级可编程中断优先级的设置(仅使用中断优先级设置8bit中的高4位,见后面解释)。6.STM32中断控制STM32目前支持的中断共为:84个6.ST47STM32可以支持的68个外部中断通道,已经固定的分配给相应的外部设备。每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但在STM32中只使用4位,高4位有效)对于这4bit的中断优先级控制位还必须分成2组看:从高位开始,前面是定义抢先式优先级的位,后面用于定义子优先级。6.STM32中断控制STM32可以支持的68个外部中断通道,已经固定的分配484bit的分组组合可以有以下几种形式:

第0组:所有4bit用于指定响应优先级;第1组:最高1位用于指定抢占式优先级,后面3位用于指定响应优先级;第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级;第3组:最高3位用于指定抢占式优先级,后面1位用于指定响应优先级;第4组:所有4位用于指定抢占式优先级。

具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。

6.STM32中断控制4bit的分组组合可以有以下几种形式:6.STM32496.STM32中断控制6.STM32中断控制50设置相应的中断实际上就是设置NVIC,在STM32的固件库中有一个结构体NVIC_InitTypeDef,里面有相应的标志位设置,然后再用NVIC_Init()函数进行初始化。详细代码如下:

6.STM32中断设置实例设置相应的中断实际上就是设置NVIC,在ST51voidNVIC_cfg(){ NVIC_InitTypeDefNVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //选择中断分组2NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQChannel; //选择中断通道2NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//抢占式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; //响应式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能中断 NVIC_Init(&NVIC_InitStructure);

} 第4章ARM硬件结构应用课件52第4章ARM硬件结构应用课件53

写中断响应函数STM32不像C51单片机那样,可以用过interrupt关键字来定义中断响应函数,STM32的中断响应函数接口存在中断向量表中,是由启动代码给出的。默认的中断响应函数在stm32f10x_it.c中。因此我们需要把这个文件加入到工程中来。

54voidEXTI2_IRQHandler(void){ //点亮LED灯 GPIO_SetBits(GPIOD,GPIO_Pin_6); //清空中断标志位,防止持续进入中断 EXTI_ClearITPendingBit(EXTI_Line2);}

voidEXTI3_IRQHandler(void){ GPIO_SetBits(GPIOD,GPIO_Pin_3); EXTI_ClearITPendingBit(EXTI_Line3);}voidEXTI2_IRQHandler(void)551.LPC和STM32简介2.STM32固件库3.系统控制模块4.引脚连接模块5.GPIO操作6.向量中断控制器7.外中断输入LPC和STM32系列ARM硬件结构与应用8.定时器原理及应用9.SPI接口及应用10.UART接口及应用11.A/D转换器及应用12.看门狗13.PWM原理与应用14.实时时钟1.LPC和STM32简介LPC和STM32系列ARM硬件564引脚连接模块概述LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。引脚P0.0GPIOTXD0PWM1输出保留PINSELx引脚连接寄存器PINSELx1:000011011P0.0默认为GPIO功能P0.0选择TXD0功能,配置对应位为01P0.0选择PWM1功能,配置对应位为10P0.0选择保留功能,配置对应位为114引脚连接模块概述LPC2000系列微574引脚连接模块LPC2000系列微控制器具有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同。寄存器描述寄存器LPC2100LPC2200PINSEL0P0[0:15]PINSEL1P0[16:31]PINSEL2P1[16:31]P1[0:1]、P1[16:31]、P2[0:31]、P3[0:31]4引脚连接模块LPC2000系列微控制器584引脚连接模块应用示例PINSEL0=0x05<<16;要求将P0.8、P0.9设置为TxD1、RxD1通过查阅PINSE0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL0[19:16],当该域设置为[0101](0x05)时选择RxD1和TxD1。

为了不影响别的管脚连接设置,通常选择下面的设置方法。PINSEL0=(PINSEL0&0xFFF0FFFF)|(0x05<<16);4引脚连接模块应用示例PINSEL0=0x05<<595GPIO引脚描述LPC2114/2124微控制器具有两个端口——P0和P1,可以作为GPIO使用的引脚数为46个。LPC2210/2212/2214微控制器还包含另外两个端口——P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个。GPIO与控制寄存器的关系PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10引脚5GPIO引脚描述LPC2114/21260PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10通用名称描述访问类型复位值IOPINGPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出只读NAIOSETGPIO输出置位寄存器。该寄存器控制引脚输出高电平读/置位0x00000000IOCLRGPIO输出置位寄存器。该寄存器控制引脚输出低电平只清零0x00000000IODIRGPIO方向控制寄存器。该寄存器单独控制每个IO口的方向读/写0x00000000GPIO相关寄存器描述PINSELxIOxDIRIOxCLRIOxPINIOxSE61PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxPINIOxPIN描述复位值31:0GPIO引脚值。IOxPIN[0]对应于Px.0…IOxPIN[31]对应于Px.31引脚未定义该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,如P1口对应于IO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。PINSELxIOxDIRIOxCLRIOxPINIOxSE62PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxDIRIOxDIR描述复位值31:0方向控制位。IOxDIR[0]对应于Px.0…IOxDIR[31]对应于Px.31引脚0当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。作为输入功能时,引脚处于高阻态。PINSELxIOxDIRIOxCLRIOxPINIOxSE63PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxSETIOxSET描述复位值31:0输出置位。IOxSET[0]对应于Px.0…IOxPIN[31]对应于Px.31引脚0当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。PINSELxIOxDIRIOxCLRIOxPINIOxSE64PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述——IOxCLRIOxCLR描述复位值31:0输出清零。IOxCLR[0]对应于Px.0…IOxCLR[31]对应于Px.31引脚0当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。注意:读取该寄存器无效,不能读回输出寄存器的值。PINSELxIOxDIRIOxCLRIOxPINIOxSE655GPIO使用GPIO注意要点引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);复位后默认所有GPIO为输入模式。5GPIO使用GPIO注意要点引脚设置为输出方式时,输出66...PINSEL0&=0xFFFFFFFC;IO0DIR|=0x00000001;IO0SET=0x00000001;...C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例——设置P0.0输出高电平P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)设置P0.0口状态,输出高电平1...C代码:PINSEL0IO0DIRIO0CLR67...uint32PinStat;PINSEL0&=0xFFFFFFFC;IO0DIR&=0xFFFFFFFE;PinStat=IO0PIN;...C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例——读取P0.0引脚状态P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输入(3)从IO0PIN读取引脚状态IO0PIN...C代码:PINSEL0IO0DIRIO0CLR68#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0CLR=DataBus;IO0SET=Data;...使用IOxSET和IOxCLR实现:GPIO应用示例——输出多位数据至IO口(1)设置引脚连接模块,P0.0~7为GPIO(2)设置P0.0口方向,设置为输出(3)清零8位IO口的输出状态在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。

本例将8位无符号整形变量Data的值输出到P0.0~P0.7。(4)Data变量中为1的位将输出高电平0x??0x00Data数据输出线:#defineDataBus0xFF使用IOxSET69#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0PIN=(IO0SET&0xFFFFFF00)|Data;...GPIO应用示例——输出多位数据至IO口(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)写IO0PIN,输出数据

在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。

本例将8位无符号整数变量Data的值输出到P0.0~P0.7。使用IOxPIN实现:0x??Data数据输出线:0x??0x00Data与前者对比:#defineDataBus0xFFGPIO应用示例70STM32GPIO操作主要功能:通用I/O(GPIO)用,输入输出;单独的位设置或位清除;外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;复用功能(AF),并且软件能重新映射I/O复用功能;GPIO锁定机制:主要针对复位设定的,当某端口位lock后,复位后将不改变的此端口的位配置。

STM32GPIO操作主要功能:71STM32GPIO操作强大的GPIO功能,可设置:

GPIOMode_TypeDefGPIOmode定义及偏移地址

GPIOmode:GPIO_Mode_AIN0x00模拟输入

GPIO_Mode_IN_FLOATING0x04悬空输入

GPIO_Mode_IPD0x28下拉输入

GPIO_Mode_IPU0x48上拉输入

GPIO_Mode_Out_OD0x14开漏输出

GPIO_Mode_Out_PP0x10推挽输出

GPIO_Mode_AF_OD0x1c开漏复用

GPIO_Mode_AF_PP0x18推挽复用

STM32GPIO操作强大的GPIO功能,可设置:

G72STM32GPIO操作输出速度通过GPIOSpeed_TypeDef结构体可选择:

2MHz,10MHz,50MHz。

typedefenum

{

GPIO_Speed_10MHz,

GPIO_Speed_2MHz,

GPIO_Speed_50MHz}GPIOSpeed_TypeDef;

STM32GPIO操作输出速度通过GPIOSpeed_T73固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。

1.GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct):根据GPIO_InitTypeDef里面的值,初始化某排里面的某些引脚的模式跟速度

2.GPIO_StructInit(GPIO_InitTypeDef*GPIO_InitStruct):给GPIO_InitTypeDef里面的项目赋默认值

3.GPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin):某排引脚某个引脚输出1

固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,74固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。

4.GPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin):某排引脚某个引脚输出0

5.GPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal):设置某排引脚输出值

6.GPIO_ReadInputData(GPIO_TypeDef*GPIOx):读整排引脚的值

7.GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin):读某排引脚里面的输出寄存器的某个引脚值……固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,75操作实例做个跑马灯程序,PA.11—PA.14口分别4个LED灯,当I/O为高电平时LED灯点亮。操作实例做个跑马灯程序,PA.11—PA.14口分别4个LE76#include“stm32f10x.h”

#include“stm32f10x_conf.h”

GPIO_InitTypeDefPAInit;

voidLED_Init(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开GPIOC时钟

PAInit.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;

PAInit.GPIO_Mode=GPIO_Mode_Out_PP;

PAInit.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_Init(GPIOA,&PAInit);

}

#include“stm32f10x.h”

#includ77main()

{

LED_Init();

while(1)

{GPIO_SetBits(GPIOA,GPIO_Pin_11);//GPIOA.11=1

Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_11);//GPIOA.11=0

Delay(0x8ffff);

GPIO_SetBits(GPIOA,GPIO_Pin_12);Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_12);

Delay(0x8ffff);

GPIO_SetBits(GPIOA,GPIO_Pin_13);Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_13);

Delay(0x8ffff);

GPIO_SetBits(GPIOA,GPIO_Pin_14);

Delay(0x8ffff);

GPIO_ResetBits(GPIOA,GPIO_Pin_14);

Delay(0x8ffff);

}

}

main()

{

LED_Init();

786向量中断控制器概述ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。CPU内核ARM7TDMI-S6向量中断控制器概述ARM7TDMI内核796.向量中断控制器程序状态寄存器CPSR与VIC的关系ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)6.向量中断控制器程序状态寄存器CPSR与VIC的关系806.向量中断控制器程序状态寄存器CPSR与VIC的关系当I=1时,禁止IRQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)当I=0时,使能IRQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)6.向量中断控制器程序状态寄存器CPSR与VIC的关系816.向量中断控制器程序状态寄存器CPSR与VIC的关系当F=1时,禁止FIQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)当F=0时,使能FIQ中断CPUARM7TDMI-SVICIRQFIQCPSR[7](I)CPSR[6](F)6.向量中断控制器程序状态寄存器CPSR与VIC的关系826.向量中断控制器中断分类中断输入请求可以在VIC中被设置为以下三类:

FIQ中断:具有最高优先级;

向量IRQ中断:具有中等优先级;

非向量IRQ中断:具有最低优先级;6.向量中断控制器中断分类中断输入请求可以在VIC中被设836.向量中断控制器FIQ中断硬件处理流程将当前的程序状态寄存器的内容备份即,SPSR_fiq=CPSR处理器切换到FIQ模式禁止IRQ和FIQ中断,即,I=F=1保存返回地址LR_fiq=PC设置FIQ异常入口地址PC=0x1C发生FIQ异常事件说明:ARM7不支持FIQ中断嵌套6.向量中断控制器FIQ中断硬件处理流程将当前的程序状态846.向量中断控制器IRQ中断相应流程将当前的程序状态寄存器的内容备份即,SPSR_irq=CPSR处理器切换到IRQ模式禁止IRQ中断,即,I=1保存返回地址LR_irq=PC设置IRQ异常入口地址PC=0x18发生IRQ异常事件说明:ARM7不支持IRQ中断嵌套6.向量中断控制器IRQ中断相应流程将当前的程序状态寄存85向量IRQ0使能中断源向量IRQ0控制寄存器VICVectCntl0向量地址0寄存器VICVectAddr0默认向量地址寄存器VICDefVectAddr向量IRQ15使能中断源向量IRQ15控制寄存器VICVectCntl15向量地址15寄存器VICVectAddr15DefIRQIRQ0IRQ15VectAddr0VectAddr15DefVectAddr硬件优先级选择向量地址选择向量地址寄存器VICVectAddrIRQ0IRQ15DefIRQIRQ中断信号向量IRQ0向量IRQ15非向量IRQ高低优先级IRQ中断状态寄存器VICIRQStatusFIQ中断信号中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源[31:0]软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClearFIQ中断状态寄存器VICFIQStatus中断状态寄存器VICRawIntrIRQFIQ向量IRQ0使能中断源向量IRQ0控制寄存器向量地址0寄存器86中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源[31:0]软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClear中断状态寄存器VICRawIntrIRQFIQ名称描述访问复位值地址VICIntEnable中断使能寄存器

控制32个中断请求(包括软件中断)的使能R/W00xFFFFF010VICIntEnClr中断使能清零寄存器将中断使能寄存器中的一个或多个位清零W00xFFFFF014VICIntSelect中断选择寄存器将32个中断请求的每个中断分配为FIQ或IRQR/W00xFFFFF00CVICSoftInt软件中断寄存器

控制对应通道产生软件中断R/W00xFFFFF018VICSoftIntClear软件中断清零寄存器

禁止对应通道的软件中断W00xFFFFF01C寄存器描述-控制寄存器中断选择寄存器中断使能寄存器中断使能清零寄存器中断源软件中断87控制寄存器功能描述6.向量中断控制器控制寄存器功能描述VICIntEnable使能(禁止)中断源产生中断VICIntEnClrVICIntSelect中断类型选择:FIQ&IRQVICSoftInt软件中断设置寄存器VICSoftIntClearFIQ中断向量IRQ中断非向量IRQ中断中断源0中断源1……中断源31VIC将32个中断输入进行分配控制寄存器功能描述6.向量中断控制器控制寄存器功能描述V88向量IRQ0使能中断源向量IRQ0控制寄存器VICVectCntl0向量地址0寄存器VICVectAddr0默认向量地址寄存器VICDefVectAddr向量IRQ15使能中断源向量IRQ15控制寄存器VICVectCntl15向量地址15寄存器VICVectAddr15向量地址寄存器VICVectAddr寄存器描述-参数设置寄存器名称描述复位置地址VICVectCntl0~VICVectCntl15向量控制0寄存器~向量控制15寄存器00xFFFFF200~0xFFFFF23CVICVectAddr0~VICVectAddr15向量地址0寄存器~向量地址15寄存器00xFFFFF100~0xFFFFF13CVICDefVectAddr默认向量地址寄存器00xFFFFF034VICVectAddr向量地址寄存器00xFFFFF030向量IRQ0使能中断源向量IRQ0控制寄存器向量地址0寄存器89IRQ中断特点6.向量中断控制器特点区别向量IRQ支持16个向量IRQ中断;16个优先级;每个优先级指定一个服务程序入口地址。能为每个向量IRQ中断源设置服务程序地址。非向量IRQ支持1个非向量IRQ中断;所有非向量IRQ的入口地址都相同。所有的非向量IRQ中断都共用一个相同的服务程序入口地址。IRQ中断特点6.向量中断控制器特点区别向量支持16个向90IRQ中断相关寄存器6.向量中断控制器寄存器名称功能VICVectCntl0~15为中断源分配向量IRQ中断的优先级。VICVectAddr0~15为该中断优先级设置服务程序入口地址。VICDefVectAddr设置非向量中断服务程序的入口地址。注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。IRQ中断相关寄存器6.向量中断控制器寄存器名称功能VI91产生中断后的服务程序地址6.向量中断控制器向量IRQ中断发生向量IRQ中断后,VIC将对应的向量地址寄存器中的数据存入VICVectAddr寄存器中。非向量IRQ中断发生非向量IRQ中断后,VIC将默认向量地址寄存器中的数据存入VICVectAddr寄存器中产生中断后的服务程序地址6.向量中断控制器向量IRQ中断92IRQ中断状态寄存器VICIRQStatus中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源[31:0]软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClearFIQ中断状态寄存器VICFIQStatus中断状态寄存器VICRawIntrIRQFIQ寄存器描述-状态寄存器名称描述访问复位值地址VICIRQStatusIRQ状态寄存器该寄存器读出定义为IRQ并使能的中断的状态RO00xFFFFF000VICFIQStatusFIQ状态请求该寄存器读出定义为FIQ并使能的中断的状态RO00xFFFFF004VICRawIntr所有中断的状态寄存器该寄存器读出32个中断请求/软件中断的状态,不管中断是否使能或分类RO00xFFFFF008注意:读取VICRawIntr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论