DSP28335 GPIO模块的各寄存器详解

DSP28335 GPIO模块
DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87)
对GPIO模块的设置主要通过三类寄存器来完成,分别是:控制寄存器、数据寄存器、中断寄存器。

1、控制寄存器
GPxCTRL; // GPIO x Control Register (GPIO0 to 31)
//设置采样窗周期T=2*GPXCTRL*Tsysclk;
GPxQSEL1; // GPIO x Qualifier Select 1 Register (GPIO0 to 15)(32-47)
GPxQSEL2; // GPIO x Qualifier Select 2 Register (GPIO16 to 31)(48-63) //每两位控制一个引脚,确定是3周期采样还是6周期采样或者不用采样
GPxMUX1; // GPIO x Mux 1 Register (GPIO0 to 15)(32-47)(64-79)
GPxMUX2; // GPIO x Mux 2 Register (GPIO16 to 31)(48-63)(80-95)
//配置各个引脚的功能,0:I/O功能,1:外设功能。

GPxDIR; // GPIO x Direction Register (GPIO0 to 31)(32-63)(64-95)
//配置每个引脚是输入还是输出,0:数字量输入;1:数字量输出。

GPxPUD; // GPIO x Pull Up Disable Register (GPIO0 to 31)(32-63)(64-95) //使能或禁止jie口的内部上拉
2、数据寄存器
GPxDAT; // GPIO Data Register (GPIO0 to 31)(32-63)(64-95)
GPxSET; // GPIO Data Set Register (GPIO0 to 31)(32-63)(64-95)
GPxCLEAR; // GPIO Data Clear Register (GPIO0 to 31)(32-63)(64-95)
GPxTOGGLE; // GPIO Data Toggle Register (GPIO0 to 31)(32-63)(64-95)
3、中断寄存器
GPIOXINT1SEL; // XINT1 GPIO Input Selection
GPIOXINT2SEL; // XINT2 GPIO Input Selection
GPIOXNMISEL; // XNMI_Xint13 GPIO Input Selection
GPIOXINT3SEL; // XINT3 GPIO Input Selection
GPIOXINT4SEL; // XINT4 GPIO Input Selection
GPIOXINT5SEL; // XINT5 GPIO Input Selection
GPIOXINT6SEL; // XINT6 GPIO Input Selection
GPIOXINT7SEL; // XINT7 GPIO Input Selection
GPIOLPMSEL; // Low power modes GP I/O input select 可以对GPIO0-63进行外部中断设置。

合集下载

DSP28335中文资料解读

DSP28335中文资料解读

TMS320F28335 TechV_28335目录1DSP的PWM信号 (1)1.1简介 (1)1.2端口对应关系 (2)1.3初始化程序注释 (2)2DSP的CAN通信 (4)2.1CAN2.0B协议简述 (4)2.2CAN总线电平 (5)2.3CAN总线上的120欧电阻 (6)2.4DSP的CAN时钟模块 (6)2.5邮箱初始化例程注解 (7)2.6消息发送和接收 (8)2.7CAN的适配器存在的一些问题 (9)3DSP的32位浮点运算测试 (10)4DSP定时器中断 (11)4.1DSP28335的定时器 (11)4.2定时器分频 (11)4.3计数器计数 (12)4.4定时器时钟周期 (12)5DSP看门狗复位 (12)5.1看门狗时钟 (12)5.2看门狗系统控制和状态寄存器(SCSR) (13)5.3看门狗计数寄存器(WDCNTR) (13)5.4看门狗重启管理器(WDKEY) (14)5.5看门狗控制寄存器(WDCR) (14)6软件报错与处理 (15)6.1CCS Setup中仿真器的配置 (15)6.2Connect报错——1145——换仿真器解决 (17)6.3CAN口测试A发B收,数据发不出去 (19)6.4编译Pwm测试文件出错 (19)6.5could not open source file "DSP2833x_Device.h (20)7备注与注意事项 (22)8附录C源程序 (22)8.1PWM初始化及脉冲产生函数 (22)8.2邮箱初始化函数 (33)8.3浮点运算测试函数 (36)8.4定时器中断初始化函数 (38)8.5采用定时器的延时函数 (39)8.6看门狗初始化函数 (40)1DSP的PWM信号1.1简介DSP28335共12路16位的ePWM,能进行频率和占空比控制。

ePWM的时钟TBCLK=SYSCLKOUT/(HSPCLKDIV×CLKDIV):PWM信号频率由时基周期寄存器TBPDR和时基计数器的计数模式决定。

DSP28335的ePWM模块详解PPT课件

DSP28335的ePWM模块详解PPT课件
6个APWM
行胜于言 敢为人先 和而不同 居安思危
3
每个PWM共有的特点:
1.专用的16位时间基准计数器,控制输出周期和频率 2.两个PWM输出(ePWMxA和ePWMxB),可配置如下方式:
– 两个独立单边操作的PWM输出 – 两个独立双边对称操作的PWM输出 – 一个独立的双边不对称操作PWM输出 3.异步控制PWM 4.可编程超前和滞后相位控制 5.同步相位 6.双边沿延时控制的死区产生 7.可编程错误定位 8.错误条件可以强制PWM输出高、低和高阻态 9.所有的事件都可以触发CPU中断和ADC开始转换信号 10.高频PWM斩波,用于变换器门驱动
行胜于言 敢为人先 和而不同 居安思危
19
动作限定子模块 动作限定子模块在PWM波形产生中起到重要作用,它决定事 件的转换类型,从而使ePWMxA和ePWMxB输出所需要的开关波形。 (1)动作限定子模块主要实现的功能 •基于以下事件限制并产生相应操作 CTR=PRD 时间基准计数器等于周期 CTR=ZERO 时间基准计数器等于0 CTR=CMPA 时间基准计数器等于有效计数比较寄存器A的值 CTR=CMPB 时间基准计数器等于有效计数比较寄存器A的值 •当事件发生时,管理产生事件的极性 •当时间基准计数器递增或递减计数时,提供事件的独立控制。 (2)ePWMxA和 ePWMxB输出的几种操作方式 置高、置低、取反、无动作
行胜于言 敢为人先 和而不同 居安思危
11
每个ePWM都有自己的时间基准模块,它用 来决定ePWM模块的事件时序。通过同步逻 辑信号,可以实现多个ePWM模块以相同时
间基准进行工作。
行胜于言 敢为人先 和而不同 居安思危
12
时间基准模块连接关系图
行胜于言 敢为人先 和而不同 居安思危

DSP28335的ePWM模块详解 PPT

DSP28335的ePWM模块详解 PPT
大创大二次汇报
基于DSP逆变器核心模块 EPWM
大家好
1
ePWM模块
ePWM模块概述 ePWM子模块功能
大家好
2
F28335
6组12个ePWM
(Enhanced Pulse Width Moducation)
每个完整的PWM通道都是由两 个PWM输出组成,即ePWMxA和 ePWMxB。
6个APWM大家好3 Nhomakorabea每个PWM共有的特点:
1.专用的16位时间基准计数器,控制输出周期和频率 2.两个PWM输出(ePWMxA和ePWMxB),可配置如下方式:
– 两个独立单边操作的PWM输出 – 两个独立双边对称操作的PWM输出 – 一个独立的双边不对称操作PWM输出 3.异步控制PWM 4.可编程超前和滞后相位控制 5.同步相位 6.双边沿延时控制的死区产生 7.可编程错误定位 8.错误条件可以强制PWM输出高、低和高阻态 9.所有的事件都可以触发CPU中断和ADC开始转换信号 10.高频PWM斩波,用于变换器门驱动
• 如果动作限定子模块能够适当配置,可控制PWM占空比
大家好
15
计数比较子模块功能结构
大家好
16
计数比较子模块功能框图
大家好
17
计数比较子模块的应用
• 两位独立的比较事件 CTR=CMPA:时间基准计数器等于有效计数比较器
A的值 CTR=CMPB:时间基准计数器等于有效计数比较器
B的值 • 两种工作模式
大家好
12
时间基准模块连接关系图
大家好
13
通过对时间基准模块的设定与配置可以实现以下功 能:
• 确定ePWM时间基准计数器(TBCTR)的频率或周期。 • 与其他ePWM模块的时间基准同步。 • 与其他ePWM模块的相位关系。 • 设置时间基准计数模式。(递增、递减、递增/递减) • 产生以下事件: CTR=PRD 时间基准计数等于指定的周期 CTR=ZERO 时间基准计数等于0 • 设置时间基准速度。

关于某28335各个模块地理解

关于某28335各个模块地理解

PWM的使用// Configure ePWM1// Setup TBCLKEPwm1Regs.TBPRD = EPWM_TIMER_TBPRD;// Set timer period 1500/2 TBCLKsEPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0EPwm1Regs.TBCTR = 0x0000; // Clear counter// Set Compare valuesEPwm1Regs.CMPA.half.CMPA = EPWM_CMPAB; // Set compare A value// EPwm1Regs.CMPB = EPWM_CMPAB; // Set Compare B value// Setup counter modeEPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up downEPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; // enable phase loading use for syncEPwm1Regs.TBCTL.bit.PHSDIR=TB_UP;EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2+TB_DIV4+TB_DIV4; // TBClock ratio = SYSCLKOUT/(2*HSPCLKDIV*EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 2^CLKDIV)// Setup shadowingEPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;// EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero// EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// Set actionsEPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on event A, up countEPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // Clear PWM1A on event A, down count// EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; //Clear PWM1B on event A, up count// EPwm1Regs.AQCTLB.bit.CAD = AQ_SET; // Set PWM1B on event A, down count// Set DeadBandEPwm1Regs.DBCTL.bit.IN_MODE=DBA_ALL;EPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;EPwm1Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;EPwm1Regs.DBRED=Dbred; // Dead-band rising edge delayEPwm1Regs.DBFED=Dbfed; // Dead-band falling edge delay// Set Trip ZoneEPwm1Regs.TZSEL.bit.OSHT1=TZ_ENABLE;EPwm1Regs.TZCTL.bit.TZA=TZ_FORCE_LO;EPwm1Regs.TZCTL.bit.TZB=TZ_FORCE_LO;// Interrupt where we will change the Compare ValuesEPwm1Regs.ETSEL.bit.SOCBSEL= ET_CTR_ZERO;// Select start ADC (EPWMxSOCB) on Zero eventEPwm1Regs.ETSEL.bit.SOCBEN= Enable; // EnableEPwm1Regs.ETPS.bit.SOCBPRD=ET_1ST;主要注意的就是EPWM的死区子模块。

DSP28335SCI 总结

DSP28335SCI 总结

2.1 SCI模块寄存器概述表2SCI-A寄存器名称地址占用空间功能描述SCICCR 0x0000 7050 1 SCI-A 通信控制寄存器SCICTL1 0x0000 7051 1 SCI-A 控制寄存器1SCIHBAUD 0x0000 7052 1 SCI-A 波特率设置寄存器高字节SCILBAUD 0x0000 7053 1 SCI-A 波特率设置寄存器低字节SCICTL2 0x0000 7054 1 SCI-A 控制寄存器2SCIRXST 0x0000 7055 1 SCI-A 接收状态寄存器SCIRXEMU 0x0000 7056 1 SCI-A 接收仿真数据缓冲寄存器SCIRXBUF 0x0000 7057 1 SCI-A 接收数据缓冲寄存器SCITXBUF 0x0000 7059 1 SCI-A 发送数据缓冲寄存器SCIFFTX 0x0000 705A 1 SCI-A FIFO发送寄存器SCIFFRX 0x0000 705B 1 SCI-A FIFO接收寄存器SCIFFCT 0x0000 705C 1 SCI-A FIFO控制寄存器SCIPRI 0x0000 705F 1 SCI-A 极性控制寄存器注意:SCIFFRX、SCIFFTX是FIFO的功能,现在还知道怎么使用。

参考例子使只使能其中的复位、清标志位就行。

最后写复位使能。

第四位:一定设置为0。

不知道有什么作用。

表3 SCI通信控制寄存器(SCICCR)功能描述位名称功能描述7 STOP BITS SCI停止位的个数该位决定了发送的停止位的个数。

接收器仅对一个停止位检查。

0 一个停止位;1 两个停止位;6 PARITY 奇偶校验选择位如果PARITY ENABLE位(SCICCR, 位5)被置位,则PARITY (位6)确定采用奇校验还是偶校验(在发送和接收的字符中奇偶校验位的位数都是1位)。

0 奇校验;1 偶校验;5 PARITY SCI奇偶校验使能位ENABLE 该位使能或禁止奇偶校验功能。

DSP28335代码学习

DSP28335代码学习

1.2、外设位域结构体方法综述1.2.1、传统#define的方法C代码访问寄存器的传统方法是使用#define宏为每一个寄存器分配一个地址。

例如:#define CPUTIMER0_TIM (volatile unsigned long *) 0x0c00#define CPUTIMER0_PRD (volatile unsigned long *) 0x0c02#define CPUTIMER0_TCR(volatile unsigned long *) 0x0c04#define CPUTIMER0_TPR (volatile unsigned long *) 0x0c06…..同样的#define方法将在每一个外设寄存器上不断重复弊端:不容易访问寄存器中的位域部分不容易在CCS观察窗口显示位域的值不能利用CCS的自动完成功能对于重复的外设,头文件的开发者不能获得重复利用的便利。

1.2.2、位域及结构体的方法位域及结构体方法采用C代码的结构体方式,将属于某个指定外设的所有寄存器组成一个集合。

通过链接器,每个C代码结构体就是外设寄存器的内存映射。

这一映射允许编译器通过使用CPU数据页指针(DP)直接访问外设寄存器。

另外,多数寄存器都定义了位域,从而使编译器能够读取或者操作某一个寄存器中的单个位域。

(1)下面代码是下面代码示例是一个DSP28335的CPU定时器存器对应的C代码结构体类型。

// CPU Timer Register File://struct CPUTIMER_REGS {union TIM_GROUP TIM; // Timer counter registerunion PRD_GROUP PRD; // Period registerunion TCR_REG TCR; // Timer control registerUint16 rsvd1; // reservedunion TPR_REG TPR; // Timer pre-scale lowunion TPRH_REG TPRH; // Timer pre-scale high};该结构体类型包括6个成员组成,前后顺序与他们在内存中的顺序相同。

第7章-F28335-GPIO


引脚为高电平,写0无影响。读该寄存器返回0.
7.2 GPIO数据寄存器
3、GPxCLEAR寄存器(清零寄存器)
在不影响其他引脚状态情况下,将相应引脚驱动到低电平。如 果引脚为数字输出,向该寄存器相应位写1会驱动对应引脚为 低电平,写0无影响。读该寄存器返回0. 4、GPxTOGGLE寄存器(状态翻转寄存器) 在不影响其他引脚状态情况下,将相应引脚的状态进行翻转。 如果引脚为数字输出,向该寄存器相应位写1会驱动对应引脚
(1)选择GPIO工作模式。配置GPxMUXn寄存器选择其工作在外设或IO模
式。默认为数字IO功能,输入。 (2)使能或禁止内部上拉电阻。通过GPxPUD寄存器完成。 (3)选择输入输出方向。通过写GPxDIR寄存器完成。 (4)选择输入限定模式。默认与系统时钟SYSCLKOUT同步。 (5)选择低功耗模式的唤醒端口。配置GPIOLPMSEL,指定某GPIO引脚 将CPU从HALT和STANDBY模式中唤醒。
7.6 应用实例
if(GpioDataRegs.GPADAT.bit.GPIO0==1) //读GPIO0引脚的状态
{ GpioDataRegs.GPBDAT.bit.GPIO32=1; //写GPIO32引脚的状态 }
else
{ GpioDataRegs.GPBDAT.bit.GPIO32=0; } /* //方案2:采用GPBSET、GPBCLEAT寄存器实现 if(GpioDataRegs.GPADAT.bit.GPIO0==1) { GpioDataRegs.GPBSET.bit.GPIO32=1; } else { GpioDataRegs.GPBCLEAR.bit.GPIO32=1; } */ } }
7.5 寄存器定义

5、F28335存储器以及地址分配全解


片外扩展存储器
程序空间
F28335对数据空间和程序空间进行了统 一编址,图5.1的映射表就像是各个空间的地
保留
M0向量 RAM(32 X 32)
图一样,有些空间既可以作为数据空间也可 以作为程序空间,有些空间只能作为数据空
0x00 到密码模块保护,有些空 间地址是作为保留的,具体内容就要仔细对 照这个地图来进行查阅了。
一种全为0,另一种全为1,一个新的FLASH或FLASH被擦除后,就变为全1了,这样只要读一下密码区,
就能破解了,还一种情况,就是全为0,这时候器件是被加密了,但是不管密钥寄存器的内容是什么, 器件都处在加密状态,即该器件无法解锁了,这时候芯片就被完全锁住了。因此不要用全0作为密码。 如果在擦除FLASH的期间,芯片复位了,那这个芯片的密码就不确定了,也不能解锁。
TMS320F28335内存保护特点
地址范围 片上存储器 数据空间 0x00 0000 0x00 0040 0x00 0400 0x00 0800 0x00 0D00 M0 SRAM(1k X16) M1 SRAM(1k X16) PF0 PIE 中断 向量表 0x00 0E00 0x00 2000 0x00 5000 0x00 6000 0x00 7000 0x00 8000 0x00 9000 0x00 A000 0x00 B000 0x00 C000 0x00 D000 0x00 E000 0x00 F000 0x01 0000 0x30 0000 0x33 FFF8 0x34 0000 0x38 0000 0x38 0400 0x38 0800 0x3F 8000 0x3F 9000 0x3F A000 0x3F B000 0x3F C000 0x3F E000 0x3F FFFC PF0 保留 PF3 DMA PF1 PF2

EPWMTMSF28335所需配置的EPWM寄存器

EPWMTMSF28335所需配置的EPWM寄存器一.TB模块需要设置的寄存器TBCTL_BITS {// bits descriptionUint16 CTRMODE:2; // 1:0 Counter ModeUint16 PHSEN:1; // 2 Phase load enable Uint16 PRDLD:1; // 3 Active period load Uint16 SYNCOSEL:2; // 5:4 Sync output select Uint16 SWFSYNC:1; // 6 Software force sync pulseUint16 HSPCLKDIV:3; // 9:7 High speed time pre-scaleUint16 CLKDIV:3; // 12:10 Timebase clock pre-scaleUint16 PHSDIR:1; // 13 Phase DirectionUint16 FREE_SOFT:2; // 15:14 Emulation mode1.TBCTL:TB控制寄存器设置TBCTL_REG.BITS.CTRMODE:2 (计数模式设置)TB_COUNT-UP 0x0;TB_COUNT_DOWN 0x1;TB_COUNT_UPDOWN 0x2;TB_FREEZE 0x3;TBCTL_REG.BITS.PHSEN:1 (相位装载使能控制)TB_DISABLE 0x0;TB_ENABLE 0x1; 直接将计数器中的值装载到TBCTR计数控制寄存器中。

TBCTL_REG.BITS.PRDLD:1 (时基周期映射使能)TB_SHADOW 0x0 使能TBPRD映射寄存器,读写TBPRD寄存器地址直接操作映射寄存器,当时基计数器计数值等于0时,映射寄存器内容传送到工作寄存器。

默认状态下TBPRD映射寄存器被使能。

TB_IMMEDIATE 0x1 立即装载模式,不需要等到时基计数器计数值等于0时,就直接将TBPRD的存储地址直接操作工作寄存器中。

DSP28335的调试总结,这是一份总结很全面的资料,我在学

DSP28335的调试总结,这是一份总结很全面的资料,我在学习开发板的一些总结,希望能得到同行的帮助,愿与大家一起学习和分享1DSP的PWM信号1.1简介DSP28335共12路16位的ePWM,能进行频率和占空比控制。

ePWM的时钟TBCLK=SYSCLKOUT/(HSPCLKDIV×CLKDIV):PWM信号频率由时基周期寄存器TBPDR和时基计数器的计数模式决定。

初始化程序采用的计数模式为递增计数模式。

在递增计数模式下,时基计数器从零开始增加,直到达到周期寄存器值(TBPDR)。

然后时基计数器复位到零,再次开始增加。

PWM信号周期与频率的计算如下:1.2端口对应关系通道相应PWM的A/B对应JP0B端口号1ePWM1A92ePWM1B103ePWM2A114ePWM2B125ePWM3A136ePWM3B147ePWM4A158ePWM4B169ePWM5A1710ePWM5B1811ePWM6A1912ePWM6B20说明:JP0B的端口号按“Z”字形顺序数。

1.3初始化程序注释void InitPwm1AB(float32f){Uint16T= 2343750/f-1.0;//系统时钟SYSCLKOUT=150MHz,TBCLK=6.6666667ns,在连续增计数模式下,f=150000000/(TBPDR+1) EALLOW;//先初始化通用输入输出口//GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;EPwm1Regs.TBPHS.half.TBPHS= 0; // 在相位寄存器中设置计数器的起始计数位置//下面两条语句组合对PWM的时钟进行分频EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; //在周期寄存器中设置计数器的计数周期//TBCTL为定时器控制寄存器EPwm1Regs.TBCTL.bit.CTRMODE= TB_COUNT_UP; //设置计数模式位为连续增计数模式,产生对称方波EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 将定时器相位使能位关闭EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;//映射寄存器SHADOW使能并配置映射寄存器为自动读写EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 定时器时钟源选择,一共有四种时钟源EPwm1Regs.CMPA.half.CMPA= 0.0001*T;// 设置EPWM1A比较值寄存器的比较值,即体现EPWM1A的占空比EPwm1Regs.CMPB= 0.0001*T;EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;//A模块比较模式EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//B模块比较模式EPwm1Regs.CMPCTL.bit.LOADAMODE= CC_CTR_ZERO; // A模块比较使能,通过写0来清除SHDWAMODE位来使能load on CTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // B模块比较使能,通过写0来清除SHDWBMODE位来使能load on CTR=Zero//AQCTLA为输出A比较方式控制寄存器EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // TBCTR(计数器)计到零时使输出为反向EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//TBCTR(计数器)与CMPA在up 计数时相等使输出为high,这关系的输出的占空比EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;}2DSP的CAN通信2.1CAN2.0B协议简述TMS320F28335上有2个增强型CAN总线控制器,符合CAN2.0B协议,其总线波特率可达到1Mbps。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档