第三章 MSP430 基本外设_第1页
第三章 MSP430 基本外设_第2页
第三章 MSP430 基本外设_第3页
第三章 MSP430 基本外设_第4页
第三章 MSP430 基本外设_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章第三章 MSP430基本基本 外设外设2 Copyright 2009 Texas Instruments All Rights Reservedwww.msp430.ubi.pt MSP430系列微控制器的片内资源非常丰富,系列微控制器的片内资源非常丰富,外外设模块设模块通过数据总线、控制总线和地址总线与通过数据总线、控制总线和地址总线与CPU相连相连。系统时钟 低功耗模式通用输入输出端口 定时器DMA控制器 比较器A模数转换器(ADC) 数模转换模块(DAC) LCD液晶驱动模块 硬件乘法器Flash编程3.1 系统时钟与控制系统时钟与控制3.1.1 系统复位系统复位MSP430MS

2、P430单片机三种复位信号:单片机三种复位信号:掉电复位(掉电复位(BOR) 上电复位(上电复位(POR) 上电清零(上电清零(PUC)3.1 MSP430基础时钟模块基础时钟模块一、时钟系统模块结构图及构成一、时钟系统模块结构图及构成F时钟信号是定时操作的基本信号,在时钟的作用下,各部件可以有条不紊地自动工作F基本时钟模块由高速晶体振荡器、低速高速晶体振荡器、低速晶体振荡器、数字控制振荡器晶体振荡器、数字控制振荡器DCO、锁、锁频环频环FLL等部分构成F多种时钟有利于实时应用系统对低功耗低功耗和快速响应外部事件快速响应外部事件要求F 不同系列单片机包含的时钟模块不完全相同2). MSP430

3、F6xx时钟模块有5 个时钟源:XT1CLK 低频或高频时钟源可使用32768Hz的低频晶振、或外接时钟,频率范围432MHz,可作为FLL基准时钟源VLOCLK 片内低功耗低频时钟源典型值为10KHz.REFOCLK 片内已整形的低频时钟源典型值为32768Hz,可作为FLL基准时钟源.DCOCLK 片内数字控制时钟源可通过FLL模块来稳定.DCOCLKDIV是DCOCLK分频得到的时钟XT2CLK 高频时钟源可接标准晶振、振荡器或外部时钟,频率范围在4MHz32MHz。ACLK 辅助时钟 ACLK一般用于低速外设模块.MCLK 系统主时钟 MCLK主要用于CPU和系统.SMCLK 子系统时

4、钟 主要用于高速外设模块.ACLK、MCLK、SMCLK均可通过软件从XT1CLK 、VLOCLK 、REFOCLK 、DCOCLK、DCOCLKDIV、XT2CLK这6个时钟源中选择,经1/2/4/8/16/32分频得到。3). 时钟系统模块提供时钟系统模块提供3种时钟信号种时钟信号4).MODOSC内部的振荡器内部的振荡器当检测出振荡器失效当检测出振荡器失效, 系统会自动做出时钟切换,系统会自动做出时钟切换, 确保在振荡器失效的情况下,程序可以继续执行确保在振荡器失效的情况下,程序可以继续执行五、时钟系统模块设置举例五、时钟系统模块设置举例#include void main(void)

5、WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer P1DIR |= BIT0; / ACLK set out to pin P1SEL |= BIT0; while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= (XT1OFF); / XT1 On UCSCTL6 |= XCAP_3; / Internal load cap / Loop until XT1 fault flag is cleared do UCSCTL7 &=(XT2

6、OFFG + XT1LFOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag UCSCTL6 &= (XT1DRIVE_3); / Xtal is now stable, reduce drive strength UCSCTL4 |= SELA_0; / ACLK = LFTX1 (by default) _bis_SR_register(LPM3_bits); / Ent

7、er LPM3 _no_operation(); / For debugger3.2 MSP430 的低功耗模式 (Low Power Modes)一、一、低功耗控制低功耗控制二、二、MSP430工作模式工作模式三、三、低功耗模式的进入与退出低功耗模式的进入与退出四、四、低功耗模式编程举例低功耗模式编程举例#define LPM0_bits (CPUOFF)#define LPM1_bits (SCG0+CPUOFF)#define LPM2_bits (SCG1+CPUOFF)#define LPM3_bits (SCG1+SCG0+CPUOFF)#define LPM4_bits (SCG

8、1+SCG0+OSCOFF+CPUOFF)#include in430.h#define LPM0 _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */#define LPM0_EXIT _BIC_SR_IRQ(LPM0_bits) /* Exit Low Power Mode 0 */#define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */#define LPM1_EXIT _BIC_SR_IRQ(LPM1_bits) /* Exit Low Power Mode 1 */#define

9、 LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */#define LPM2_EXIT _BIC_SR_IRQ(LPM2_bits) /* Exit Low Power Mode 2 */#define LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */#define LPM3_EXIT _BIC_SR_IRQ(LPM3_bits) /* Exit Low Power Mode 3 */#define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power

10、Mode 4 */#define LPM4_EXIT _BIC_SR_IRQ(LPM4_bits) /* Exit Low Power Mode 4 */msp430F6638.h 进入低功耗模式编程举例进入低功耗模式编程举例 例如例如:进入低功耗模式:进入低功耗模式LPM0_bis_SR(LPM0_bits); 或或LPM0; 例如例如:从中断返回,退出低功耗模式从中断返回,退出低功耗模式LPM0#pragma vector=xxxx /置P1中断向量_interrupt void port_int(void) /中断子程 LPM0_EXIT;四、低功耗模式举例四、低功耗模式举例例例1: 请

11、用请用C语言编写程序语言编写程序,以中断方式响应以中断方式响应P2.3上的上的按键按键,每按下一次键,单片机由低功耗模式每按下一次键,单片机由低功耗模式LPM0进入进入活动模式,并改变一次活动模式,并改变一次4.5上的发光二极管状态。上的发光二极管状态。#include “msp430F6638.hvoid main( void ) WDTCTL = WDTPW + WDTHOLD; /关闭看门狗P4DIR |= BIT5; /设置P4.5口方向为输出P2DIR &= BIT3; P2REN |= BIT3; /使能P2.3上拉电阻P2OUT |= BIT3; /P2.3口置高电平P2IES

12、|= BIT3; /中断沿设置(下降沿触发)P2IFG &= BIT3; /清P2.3中断标志P2IE |= BIT3; /使能P2.3口中断_BIS_SR(LPM0_bits+GIE); /开中断开中断,进入低功耗模式进入低功耗模式LPM0while(1) ; /无限循环#pragma vector=PORT2_VECTOR / P2中断函数_interrupt void Port_2(void) P4OUT = BIT5; /改变LED5灯状态P2IFG &= BIT3; /清P2.3中断标志位Interrupt Flag Registers P1IFG, P2IFG(中断标志寄存器中断标

13、志寄存器)Each PxIFGx bit is the interrupt flag for its corresponding I/O pin and is set when the selected input signal edge occurs at the pin. All PxIFGx interrupt flags request an interrupt when their corresponding PxIE bit and the GIE bit are set. Each PxIFG flag must be reset with software. Software

14、can also set each PxIFG flag, providing a way to generate a software initiated interrupt.Bit = 0: No interrupt is pendingBit = 1: An interrupt is pendingInterrupt Edge Select Registers P1IES, P2IES(中断触发沿选择寄存器中断触发沿选择寄存器)Each PxIES bit selects the interrupt edge for the corresponding I/O pin.Bit = 0:

15、The PxIFGx flag is set with a low-to-high transitionBit = 1: The PxIFGx flag is set with a high-to-low transitionInterrupt Enable P1IE, P2IE(中断使能寄存器中断使能寄存器)Each PxIE bit enables the associated PxIFG interrupt flag.Bit = 0: The interrupt is disabledBit = 1: The interrupt is enabled3.3 通用输入通用输入/输出端口输出

16、端口3.3.1 通用输入通用输入/输出端口输出端口 MSP430有丰富的端口资源,各产品因型号不同,所含端口资源不同 MSP430 x13x/14x/15x/16x有6个端口P1P6,共48根I/O引脚 MSP430 x1663x有10个端口P1P9,PJ,共74根I/O引脚 目前MSP430系列单片机的总线不对外开放, I/O端口的引脚是MCU对外进行输入/输出的重要通道 MSP430系统中操作I/O端口的方法与操作存储器单元相同,只是两者的地址不同 各基本输入/输出端口可通过控制寄存器设置方向、功能,且都可以位操作,即每位都可单独配置MSP430F663x 有P1P9, PJ共10个I/O

17、 端口,共74根I/O引脚其中P1P6,P8,P9每个端口8根引脚P7 有6根引脚,PJ有4根引脚与每个与每个I/O引脚输入引脚输入/输出功能有关的输出功能有关的I/O寄存器寄存器 PxSEL功能选择寄存器: P1SEL, P2SEL, , PJSEL PxDIR方向选择寄存器: P1DIR, P2DIR, , PJDIR PxOUT输出数据寄存器: P1OUT, P2OUT, , PJOUT PxIN输入数据寄存器: P1IN, P2IN, , PJIN PxREN拉电阻使能寄存器: P1REN, P2REN, , PJREN PxDS 输出增强寄存器:P1DS, P2DS, , PJDSx

18、可为1J, 由具体的单片机确定 对于P1端口,有P1SEL, P1DIR, P1OUT, P1IN均为8位寄存器端口的每根引脚可单独配置,相互之间不影响I/O端口端口x 基本输入基本输入/输出示意图输出示意图( 不考虑其他模块功能时不考虑其他模块功能时)General purpose digital I/O (PxSEL=00H时)P1 端口输入输出电路端口输入输出电路input/output schematicP1SEL.x=0P1SEL.x=0,不考虑中断功能不考虑中断功能P1SEL.xP1SEL.xP1DIR.xP1DIR.xP1OUT.xP1OUT.xP1IN.xP1IN.xP1.xP

19、1.xx = 0 7P1SEL.x=0 , P1DIR.x=1P1SEL.x=0 , P1DIR.x=1General-purpose digital I/OOutputGeneral-purpose digital I/OOutputP1SEL.x=0 , P1DIR.x=0P1SEL.x=0 , P1DIR.x=0General-purpose digital I/OInputGeneral-purpose digital I/OInputDirection Registers PxDIR(输入(输入/输出方向寄存器)输出方向寄存器)Each bit in each PxDIR regis

20、ter selects the direction of the corresponding I/Opin, regardless of the selected function for the pin. PxDIR bits for I/O pins that are selected for other module functions must be set as required by the other function.Bit = 0: The port pin is switched to input directionBit = 1: The port pin is swit

21、ched to output directionInput Register PxIN(输入寄存器)(输入寄存器)Each bit in each PxIN register reflects the value of the input signal at thecorresponding I/O pin when the pin is configured as I/O function.Bit = 0: The input is lowBit = 1: The input is highOutput Registers PxOUT(输出寄存器)(输出寄存器)Each bit in eac

22、h PxOUT register is the value to be output on the correspondingI/O pin when the pin is configured as I/O function and output direction.Bit = 0: The output is lowBit = 1: The output is highFunction Select Registers PxSEL(功能选择寄存器)(功能选择寄存器)Port pins are often multiplexed with other peripheral module fu

23、nctions. See the device-specific data sheet to determine pin functions. Each PxSEL bit is used to select the pin function I/O port or peripheral module function.Bit = 0: I/O Function is selected for the pinBit = 1: Peripheral module function is selected for the pinPxREN(上拉或下拉电阻使能寄存器)(上拉或下拉电阻使能寄存器)Bi

24、t = 0:禁用上拉禁用上拉/下拉电阻下拉电阻Bit = 1:使能上拉使能上拉/下拉电阻下拉电阻PxDS(输出驱动强度寄存器)(输出驱动强度寄存器)Bit = 0:低驱动强度低驱动强度Bit = 1:高驱动强度高驱动强度例题:流水灯实验程序#include unsigned int i;void main()WDTCTL=WDTHOLD+WDTPW;P1DIR=0 xff;while(1) P1OUT=0 x01;for(i=50000;i0;i-);P1OUT=0 x02; for(i=50000;i0;i-);P1OUT=0 x04;for(i=50000;i0;i-);P1OUT=0 x

25、08; for(i=50000;i0;i-); P1OUT=0 x10;for(i=50000;i0;i-);P1OUT=0 x20; for(i=50000;i0;i-);P1OUT=0 x40;for(i=50000;i0;i-);P1OUT=0 x80; for(i=50000;i0;i-); 3.4 定时器3.4.2 定时器A 定时器A的特性 定时器A的结构 定时器A的工作原理定时器工作模式捕获/比较模块输出单元Timer_A中断 定时器A的典型应用 定时器A的特性 定时器 A 由一个16位定时器和多路捕获/比较通道组成。 MSP430X5XX / 6XX系列单片机的Timer _A有

26、以下特性:带有 4 种操作模式的异步 16 位定时/计数器。多输入时钟,可以是慢时钟,快时钟以及外部时钟。7 个捕获/比较寄存器。可配置的PWM(脉宽调制)输出。异步输入和同步锁存。不仅能捕获外部事件发生的时间还可锁定其发生时的高低电平。完善的中断服务功能。8种输出方式选择。可实现串行通信。 Timer_A的结构的结构 从上图可以看出,Timer_A有以下部分组成:定时计数器:16 位定时/计数寄存器TAxR 时钟源的选择和分频 :定时器时钟 TACLK 可以选择 ACLK,SMCLK 或者来自外部的 TAxCLK。选择的时钟源,可以通过软件选择分频系数(1、2、4、8)。捕获/

27、比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O 端口处理事务的能力和速度。 输出单元 :具有可选的8种输出模式,用于产生用户需要的输出信号,支持PWM。 Timer_A的工作原理的工作原理定时器模块(定时器模块(Timer Block)Timer Clock 的上升沿触发的上升沿触发 16-bit 的定时的定时/计数寄存器计数寄存器(TAR)加)加 1 或减或减 1(取决于计数方式)。另外,(取决于计数方式)。另外,TAR 可以可以由程序读出,也可以由程序设置初值。由程序读出,也可以由程序设置初值。CCR0比较器输出比较器输出00: /10

28、1: /210: /411: /800: stop mode01: up mode10: continuous mode11: up/down mode1: TA interrupt enabled1: interrupt pending1: reset TAR ,clock divider and count direction for up/down mode.The TACLR bit is automatically reset and is always read as zero.定时器定时器 A 控制寄存器控制寄存器定时器 A 工作模式 MSP430X5XX / 6XX系列单片机的

29、Timer_A共有4种计数模式,如下表所示:定时器 A 工作模式 停止模式 停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。捕获/比较寄存器TAxCCR0用作Timer_A增计数模式的周期寄存器。计数器TAxR与TAxCCR0的值相等(或TAxR大于TAxCCR0的值)时,定时器 TAxR将立即重新从 0 开始计数。下图说明了增计数模式的计数过程。定时器 A 工作模式 增计数模式当定时器计数到 TAxCCR0 时,设置标志位TAxCCR0 CCIFG(捕获比较中断标志)为1,而当定时器从

30、TAxCCR0计数到0时,设置标志位TAIFG(定时器溢出标志)位为1。中断标志位的设置过程,如下图所示。此模式下,定时器从当前值计数到0FFFFH后,又从0开始重新计数。如下图所示,此时捕获/比较寄存器 TAxCCR0 和其它捕获/比较寄存器的工作方式相同。定时器定时器 A 工作模式工作模式 连续计连续计数模式数模式标志位的设置过程,如下图所示:当定时器从 0FFFFh 计数到 0 时,中断标志 TAIFG 置位。定时器 A 工作模式 增/减计数模式 该模式下,定时器先增计数到TAxCCR0的值,然后反向减计数到0。计数周期仍由TAxCCR0定义,它是TAxCCR0计数器数值的2倍。增/减计

31、数模式时计数器中数值的变化情况如图4-35所示。定时器TAxR的值从TAxCCR01增计数到TAxCCR0时,中断标志TAxCCR0 CCIFG置位;当定时器从0001h减计数到0000h时,中断标志TAIFG置位。标志位的设置情况如4-36图所示。定时器 A 输出单元每个捕获/比较模块都包含一个输出单元,用于产生输出信号。每个输出单元有8种工作模式,可产生基于EQUx的多种信号。除模式0外,其他模式的输出都在定时器时钟上升沿时发生变化。输出模式2,3,6,7不适合输出单元0,因为EQUx=EQU0。输出单元在输出控制位OUTMODx的控制下,有8种输出模式输出信号。这些模式与TAxR、TAC

32、CTLx、TAxCCR0的值有关,如下表所示。定时器 A 输出单元定时器 A典型应用实现PWM PWM信号是一种具有固定周期不定占空比的数字信号,如下图所示: 如果Timer_A定时器的计数器工作在增计数方式,输出采用输出模式7(复位/置位模式),则可利用寄存器TAxCCR0控制PWM波形的周期,用某个寄存器TAxCCRx控制占空比。这样Timer_A就可以产生出任意占空比的PWM波形。如下图所示: 可以随时间变化任意改变PWM信号的占空比,具体做法: 保持CCR0值(周期不变); 改变CCRx值(改变占空比)。如下图所示: 如果PWM信号占空比随时间变化,那么经过滤波之后的输出信号就是幅度变

33、化的模拟信号,因此通过控制PWM信号的占空比,就可以产生不同的模拟信号,实现D/A转换。如下图所示: PWM不需要修改占空比和时间时,CPU在做完Timer_A初始化工作之后,Timer_A就能自动输出PWM,而不需利用中断维持PWM输出,此时CPU就可以进入低功耗状态。 #include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= (XT1OFF); / XT1

34、 On UCSCTL6 |= XCAP_3; / Internal load cap / Loop until XT1 fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag P4DIR |= BIT4+BIT5+BIT6; TA0CTL = TASSEL_1 + MC_2

35、+ TACLR + TAIE; / ACLK, continue mode, clear TAR / enable interrupt _bis_SR_register(LPM3_bits + GIE); / Enter LPM3, enable interrupts _no_operation(); / For debugger 例题例题1:编写程序,程序运行之后,开发板上的编写程序,程序运行之后,开发板上的3个个LED以以0.5Hz的频率闪烁的频率闪烁/ Timer0_A5 Interrupt Vector (TAIV) handler#pragma vector=TIMER0_A1_VE

36、CTOR_interrupt void TIMER0_A1_ISR(void) switch(_even_in_range(TA0IV,14) case 0: break; / No interrupt case 2: break; / CCR1 not used case 4: break; / CCR2 not used case 6: break; / reserved case 8: break; / reserved case 10: break; / reserved case 12: break; / reserved case 14:P4OUT = BIT4+BIT5+BIT6

37、; /overflow break; default: break; #include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= (XT1OFF); / XT1 On UCSCTL6 |= XCAP_3; / Internal load cap / Loop until XT1 fault flag is cleared do UCSCTL7 &= (XT2OF

38、FG + XT1LFOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag P1DIR |= BIT2+BIT3; / P1.2 and P1.3 output P1SEL |= BIT2+BIT3; / P1.2 and P1.3 options select例题例题2:产生占空比分别为产生占空比分别为75%、25%的的PWM波形波形 TA0CCR0 = 512-1; / P

39、WM Period TA0CCTL1 = OUTMOD_7; / CCR1 reset/set TA0CCR1 = 384; / CCR1 PWM duty cycle TA0CCTL2 = OUTMOD_7; / CCR2 reset/set TA0CCR2 = 128; / CCR2 PWM duty cycle TA0CTL = TASSEL_1 + MC_1 + TACLR; / ACLK, up mode, clear TAR _bis_SR_register(LPM3_bits); / Enter LPM3 _no_operation(); / For debugger3.4.5.

40、1 看门狗定时器看门狗定时器(Watch Dog Timer)例题:例题:使用看门狗定时器功能产生一个方波(周期性地使用看门狗定时器功能产生一个方波(周期性地取反取反P1.0)#include void main(void) WDTCTL =WDT_ADLY_250; /Set Watchdog Timer interval to 250ms SFRIE1 |= WDTIE; / Enable WDT interrupt P1DIR |= 0 x01; / Set P1.0 to output direction _BIS_SR(LPM0_bits +GIE); / Enter LPM0 w/

41、 interrupt/ Watchdog Timer interrupt service routine#pragma vector=WDT_VECTOR_interrupt void watchdog_timer(void) P1OUT = 0 x01; / Toggle P1.03.5 DMA控制器控制器105 DMA (Direct Memory Access),直接存储器存,直接存储器存取:用取:用硬件实现硬件实现存储器与存储器之间或存储器与存储器与存储器之间或存储器与IO设设备之间直接进行高速数据传送,不需要备之间直接进行高速数据传送,不需要CPU的干预。的干预。3.5.1 DMA控

42、制器的结构与特性控制器的结构与特性z数据传送不需要CPU介入,完全由DMA控制器自行管理z在整个地址空间范围内传输数据z能够提高片内外设数据吞吐能力,实现高速传输z减少系统功耗z字节和字数据可以混合传送z4种传输寻址模式z触发方式灵活:边沿或电平触发z单个、块或突发传输模式z8个独立DMA通道,可配置通道优先权DMA 结构框图结构框图3.5.2 DMA控制器的配置和操作1.选择选择DMA触发源触发源每个DMA通道的初始化是完全独立的,通过各自的控制位DMAxTSEL来选择触发事件:当相应的触发源准备就绪时,会向DMA控制器发出DMA请求。注注:DMAxTSELDMAxTSEL只有在寄存器只有在寄存器DMACTLDMACTL的控制的控制DMAEN=0DMAEN=0时才能时才能被修改被修改。2.确定确定DMA触发信号方式触发信号方式边沿触发:边沿触发:控制位DMALEVEL复位时,触发信号的上 升沿触发DMA操作电平触发:电平触发:控制位DMALEVEL置位表示高电平触发方式3.DMA控制器的寻址控制器的寻址4.选择选择DMA传输模式传输模式 DMA控制器有以下控制器有以下6种传输模式:种传输模式: 单字或单字节传输 块传输 突发块传输 重复单字或者单字节传输 重复块传输 重复突发块传输5.CPU暂停传输暂停传输 DMARMWDIS=0,CPU读写操作

温馨提示

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

评论

0/150

提交评论