DSP 第三章程序控制ppt课件_第1页
DSP 第三章程序控制ppt课件_第2页
DSP 第三章程序控制ppt课件_第3页
DSP 第三章程序控制ppt课件_第4页
DSP 第三章程序控制ppt课件_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 程序控制和中断管理 程序控制是指CPU对程序运转的控制通常程序是顺序执行的,即在延续的程序存储器地址上取指并执行。但有时程序需求转移到不延续的地址,然后再延续执行新地址处的指令。TMS320C2000中影响程序控制操作的指令有:分支转移调用与前往反复指令中断复位.4.1 程序地址的产生 在执行当前指令的同时,程序流要求处置器生成下一条指令的程序地址。 它是顺序或非顺序的。程序地址产生逻辑运用以下硬件:1程序计数器(PC): C2000为16位PC。2程序地址存放器(PAR):驱动程序地址总线(PAB),提供程序的读、写地址。3堆栈:16位宽、8级硬件堆栈最多可保管8个前往地址。4微堆栈

2、(MSTACK):16位,1级深的堆栈,用于保管一个前往地址。5反复计数器(RPTC):16位,与反复指令(RPT)一同,用来确定RPT后面的一条指令反复执行次数。.一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。 影响PC加载方式的程序控制操作:1复位 2顺序执行 3分支转移 4由累加器转移 5子程序调用与前往 6从累加器调用与前往 7软件或硬件中断 加载到PC的地址:PC = 0000h (复位向量地址).一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分支转移 4由累加器转移 5子程序调用与前往 6

3、从累加器调用与前往 7软件或硬件中断 加载到PC的地址: PC = PC + 1例: PC 目的代码 指令0108 be42 CLRC OVM0109 bd00 LDP #0010a .一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分支转移 4由累加器转移 5子程序调用与前往 6从累加器调用与前往 7软件或硬件中断 加载到PC的地址:PC = 转移指令之后16位立刻数例: B pma .一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分支转移 4由累加器转移 5子程

4、序调用与前往 6从累加器调用与前往 7软件或硬件中断 加载到PC的地址:PC = 累加器的低16位值例: BACC.一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分支转移 4由累加器转移 5子程序调用与前往 6从累加器调用与前往 7软件或硬件中断 调用:将PC中下一条指令的地址压入堆栈, 将调用指令后的16位立刻数装入PC;前往: 将前往地址从堆栈中弹回PC。例: PC 指令0100 CALL 01e0h0102 .一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分

5、支转移 4由累加器转移 5子程序调用与前往 6从累加器调用与前往 7软件或硬件中断 调用: 将PC中下一条指令的地址压入堆栈,将累加器中的低16位数装入PC; 前往: 将前往地址从堆栈中弹回PC。例: PC 指令0100 CALA 0101 .一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分支转移 4由累加器转移 5子程序调用与前往 6从累加器调用与前往 7软件或硬件中断 将PC压入堆栈,然后用适当的中断向量单元地址装入PC。通常在该单元地址中存放一条转移指令,又将相应的中断效力子程序地址装入PC。例: INT2 产生中断000

6、4ff80B 1000h10000108be42CLRCOVM0109bd00LDP#0010a8b8fMAR*,AR7010bb93fLACL#3Fh呼应中断PC=010ah压入堆栈.一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分支转移 4由累加器转移 5子程序调用与前往 6从累加器调用与前往 7软件或硬件中断 将PC压入堆栈,然后用适当的中断向量单元地址装入PC。通常在该单元地址中存放一条转移指令,又将相应的中断效力子程序地址装入PC。例: INT2 产生中断0004ff80B 1000h10000108be42CLRCO

7、VM0109bd00LDP#0010a8b8fMAR*,AR7010bb93fLACL#3Fh 中断向量0004h装入PC.一、程序计数器(PC) 程序计数器(PC)存放将被执行的下一条指令的地址。PC的加载方式:1复位 2顺序执行 3分支转移 4由累加器转移 5子程序调用与前往 6从累加器调用与前往 7软件或硬件中断 将PC压入堆栈,然后用适当的中断向量单元地址装入PC。通常在该单元地址中存放一条转移指令,又将相应的中断效力子程序地址装入PC。例: INT2 产生中断0004ff80B 1000h10000108be42CLRCOVM0109bd00LDP#0010a8b8fMAR*,AR7

8、010bb93fLACL#3Fh转移指令1000h装入PC.二、堆栈硬件堆栈区:16位宽、8级深。用途: 当调用子程序或发生中断时,程序地址产生逻辑利用该堆栈保管一个16位前往地址。当CPU进入子程序或中断效力程序时,前往地址自动装入该堆栈的栈顶。当子程序或中断效力程序完成时,前往指令将前往地址从栈顶传送到程序计数器PC。堆栈也可以用来保管数据或用于其他目的。 .有两组访问堆栈的指令:1PUSH和POP: PUSH:把累加器(32位)的低半部分(低16位)拷贝到栈顶。POP: 把栈顶的值拷贝到累加器的低半部分2PSHD和POPD: 当子程序或中断嵌套超越8级时,可利用这两条指令在数据存储区中建

9、立一个堆栈。 即把堆栈区延伸到数据存储区。PSHD dma ;将数据存储器中的值压入栈顶。POPD dma ; 将栈项的值弹出到数据存储器。.每当一个数值压入栈顶 ,堆栈中每级的内容都下移一级,栈底(第8级)的内容那么丧失。 PSHD dma .弹出操作把堆栈中每一级的值都拷贝到较高的下一级。 操作与压入操作相反, POPD dma .三、微堆栈(MSTACK)微堆栈共有1级深、16位宽,与堆栈不同,它的操作是不可见的。 执行以下指令时,程序地址产生逻辑,利用微堆栈保管前往地址。块传送 BLDD BLPD乘且累加 MAC、MACD 表读写 TBLD、TBLW 例:RPT#9BLDD #lk,

10、*+ 源地址 目的地址操作过程: 执行 PC+1,然后PCMSTACK lk源地址 PC 源地址 目的地址 PC+1 PC 利用反复指令,进展数据块传送,直到反复计数器(RPTC)=0;MSTACK PC.四、流水线操作 TMS320C2000的流水线有4个独立的阶段: 取指令 指令译码 取操作数 执行指令由于这4个操作阶段是独立的,因此,这些操作可以重叠进展。在恣意的指定周期内,1 - 4个不同的指令均被激活,每一条被激活的指令均处于一个不同的完成阶段。对于单字、单周期指令(无等待形状),4级流水线的操作表示图如下:.4.2 转移、调用和前往 转移、调用和前往将改动指令流的顺序,转到新的地址

11、单元去执行指令。转移:仅使程序控制转换到新的地址单元。 采用跳转指令调用: 子程序调用 中断效力程序 要将前往地址保管到硬件堆栈的栈顶。 被调用的子程序或中断效力程序都以前往指令终了。转移、调用和前往指令的类型:无条件转移、调用和前往 有条件转移、调用和前往 .一、无条件指令无条件转移指令 B pma ;用指令中给定的地址pma 装载PC BACC ;用累加器中低16位数值ACC015装载PC无条件调用指令 CALL pma ;将前往地址压入堆栈,用pma 装载PC CALA ;将前往地址压入堆栈,用ACC015装载PC无条件前往指令 RET ;将栈顶的值(前往地址)加载到PC.二、有条件指令

12、 有条件指令指仅当某些指定的条件满足时才执行。 条件及符号 . 条件的组合:在条件指令的操作数中可以有多个条件。留意:某些条件只需组合才是有意义的。 对于每一种组合,必需按如下规那么从组1和组2中选择条件。 同一类的条件不能组合。.有条件指令 条件转移指令 BCND pma,cond1,cond2, ;条件cond1,cond2都满足时转移。例: BCND PGM1,LEQ, OV BANZ pma ;当前AR0时,转移。条件调用指令 CC pma,cond1,cond2, ;条件cond1,cond2都满足时调用。例: CC 00BFh,LEQ, OV条件前往指令 RETCcond1,con

13、d2, ;条件cond1,cond2都满足时前往。.4.3 反复指令 反复指令(RPT)允许紧跟在RPT后的那一条指令反复执行N+1。 N为RRT指令中的一个操作数。在执行RPT时,计数值N被装入反复计数器(RPTC),然后,被反复的指令每执行一次,RPTC就减1,直至RPTC为0。例:指令执行前存放器形状: ARP = 1;AR1 = 300h执行指令: RPT #9 ;下一条指令执行10次 BLDD#320h, *+上面的指令执行结果: 将数据存储器: 0320h032Ah单元的内容-0300h030Ah中.4.4 中断中断是由软件或硬件产生一个信号,该信号引起CPU挂起主程序,并转而执行

14、一个子程序,即中断效力子程序。一、概述 1中断信号的产生: C2000支持软件和硬件两种中断。 软件中断: 由中断指令INTR,NMI或TRAP恳求。 硬件中断: 外部中断由外部中断引脚上的信号触发,如: RS , NMI 内部中断由片内外设的信号触发。.2) 中断优先级硬件中断能够同时产生,CPU根据中断源的优先级顺序而执行相应的中断效力子程序。C240X的硬件中断分为两级: CPU中断8个中心级 外设中断 46个,分别挂在CPU中断中 6个 可屏蔽中断之下。CPU中断优先级为1-RESET;复位中断2-保管3-NMI;不可屏蔽中断4-INT1 ;可屏蔽中断5-INT2 ;可屏蔽中断6-IN

15、T3 ;可屏蔽中断7-INT4 ;可屏蔽中断8-INT5 ;可屏蔽中断9-INT6 ;可屏蔽中断.3可屏蔽中断与不可屏蔽中断 可屏蔽中断:指可以用软件设置使它们制止(屏蔽)或允许不屏蔽)的中断,可屏蔽中断均为硬件中断。 C240X的可屏蔽中断为INT1INT6, 这些中断源下面挂着外设和外部引脚,如: ADC、SPI、SCI、事件管理器等。 不可屏蔽中断:包括: 一切的软件中断 两种外部硬件中断: RS , NMI )。对于不可屏蔽中断,CPU总是要呼应,并从主程序转移到相应中断效力程序。 .4中断矢量 中断矢量指CPU呼应中断后,PC装载的地址 。MS320C2000器件CPU中断的中断矢量

16、表安排在程序存储器地址为0000h003Fh的64个单元。每个CPU中断分配了两个地址单元,用以存放一条两个字的转移指令。外设中断的中断矢量放在外设中断矢量存放器(PIVR) 中中断名称中断矢量RESET复位0000h保留位0026hNMI0024hINT10002hINT20004hINT30006hINT40008hINT5000AhINT6000Ch保留位000EhTRAP0022hINT8-INT160010h-0020hINT20-INT310028h-003Fh.5中断操作步骤TMS320C2000管理中断分为3个主要阶段: (1)接受中断恳求: 来自程序代码的软件中断恳求、来自引

17、脚或片内设备硬件中断恳求到达CPU 时,该中断挂起,或说在等待呼应。 (2)呼应中断: 假设是可屏蔽中断,那么必需满足一定的条件时CPU才会呼应;对非屏蔽中断那么立刻呼应。 (3)执行中断效力程序: 一旦中断被呼应,CPU就根据放在中断矢量地址中的转移指令,按照要求转移到相应的中断效力程序中去执行。执行终了后前往。 对于中断的管理,TMS320C2000系列中不同型号的芯片有许多不同之处。以下以LC/LF240X为例。.二、可屏蔽中断 1构造 LF/LC240X器件的CPU提供了6个可屏蔽中断,INT1-INT6。 利用这6个中断级,经过扩展设计,使得C240X器件可以管理46个可屏蔽中断恳求

18、。.2中断管理存放器 CPU中断存放器 外设中断存放器1CPU中断存放器: 用于管理CPU中断INT1-INT6: 中断标志存放器(IFR) 中断屏蔽存放器(IMR) CPU中断标志存放器(IFR)地址0006h 用于识别和去除挂起的中断,当INT1-INT6中某一个中断向CPU发出中断恳求时,该存放器中相应的位被置1。 读取IFR可以识别挂起的中断,而向相应的位写1去除己挂起的中断。 CPU呼应中断或器件复位都能将IFR标志去除。.CPU中断屏蔽存放器(IMR)地址0004h向IMR中某位写1,那么屏蔽相应的中断级,写1那么使能该中断级。 .2外设中断存放器: 用于管理挂在内核级中断 INT

19、1-INT6 下的46个外设中断。 包括: 一个外设中断矢量存放器 (PIVR)、 三个外设中断恳求存放器 (PIRQR0/1/2) 三个外设中断应对存放器 (PIACKR0/1/2) 外设中断矢量存放器(PIVR)地址701Eh 用于存放最近一次被呼应的外设中断的矢量地址。 二级中断矢量地址.2外设中断存放器: 用于管理挂在内核级中断 INT1-INT6 下的46个外设中断。 包括: 一个外设中断矢量存放器 (PIVR)、 三个外设中断恳求存放器 (PIRQR0/1/2) 三个外设中断应对存放器 (PIACKR0/1/2) 外设中断恳求存放器0/1/2(PIRQR0/1/2)地址7010h7

20、012h 用于存放外设中断恳求标志: 1-阐明相应的中断恳求被挂起 0-阐明相应的中断恳求未被挂起。 只能对其测试可读,不能对其编程不可写 向某位写入1将发出个中断恳求到器件CPU,写入0没影响。.2外设中断存放器: 用于管理挂在内核级中断 INT1-INT6 下的46个外设中断。 包括: 一个外设中断矢量存放器 (PIVR)、 三个外设中断恳求存放器 (PIRQR0/1/2) 三个外设中断应对存放器 (PIACKR0/1/2) 外设中断应对存放器0/1/2(PIACKR0/1/2)地址:7014h7016h 用于存放外设中断应对信号只能对其测试可读,不能对其编程不可写向某位写1,将引起相应的

21、外设中断应对被插入从而将相应的外设中断恳求位清0,但不改动外设矢量存放器(PIVR)的内容。.3外设中断控制存放器2个用来控制和监视两个外部引脚XINTl和XINT2的形状。 外设中断l控制存放器(XINTlCR)一地址7070h 控制和监视外部引脚XINT1的形状。 外设中断2控制存放器(XINT2CR)一地址7071h 控制和监视外部引脚XINT2的形状。 D15 XINT1 flag XINTl标志位: 该位指示在XINTl引脚上能否检测到个眺变 0 未检测到引脚跳变 1 检测到引脚跳变.3外设中断控制存放器2个用来控制和监视两个外部引脚XINTl和XINT2的形状。 外设中断l控制存放

22、器(XINTlCR)一地址7070h 控制和监视外部引脚XINT1的形状。 外设中断2控制存放器(XINT2CR)一地址7071h 控制和监视外部引脚XINT2的形状。 D2 XINT1 polarity XINT1极性, 选择在XINT1引脚产生中断的信号极性。 0 在下降沿(由高到低跳变)产生中断 1 在上升沿(由低到高跳变)产生中断.3外设中断控制存放器2个用来控制和监视两个外部引脚XINTl和XINT2的形状。 外设中断l控制存放器(XINTlCR)一地址7070h 控制和监视外部引脚XINT1的形状。 外设中断2控制存放器(XINT2CR)一地址7071h 控制和监视外部引脚XINT

23、2的形状。 D1 XINTl priority XINT1优先级。 该位决议XINT1引脚中断的优化级。 0 - 高优先级, 1 - 低优先级留意:优先级不同,所挂的CPU 中断不同 高优先级: INT1 中断向量 0002h 低优先级: INT6 中断向量 000Ch 但外设中断向量一样 : XINTl: 0001h XINT2: 0011h .3外设中断控制存放器2个用来控制和监视两个外部引脚XINTl和XINT2的形状。 外设中断l控制存放器(XINTlCR)一地址7070h 控制和监视外部引脚XINT1的形状。 外设中断2控制存放器(XINT2CR)一地址7071h 控制和监视外部引脚

24、XINT2的形状。 D0 XINTl enable XINTl使能位。 该位使能或屏蔽外部中断XINT1 0 屏蔽中断 1 使能中断.3外设中断控制存放器2个用来控制和监视两个外部引脚XINTl和XINT2的形状。 外设中断l控制存放器(XINTlCR)一地址7070h 控制和监视外部引脚XINT1的形状。 外设中断2控制存放器(XINT2CR)一地址7071h 控制和监视外部引脚XINT2的形状。 外设中断2控制存放器(XINT2CR)用于控制和监视外部引脚XINT2的形状。 各位的定义同(XINT1CR) .3 可屏蔽中断的呼应流程1呼应可屏蔽中断,条件: 1INTM = 0 ,使能一切末

25、屏蔽的中断; 2中断屏蔽存放器(IMR)中相应位为1;使能相应的中断; 3假设有多个中断恳求,优先级高的中断源先相应。2将PC压入堆栈,用相应的CPU中断矢量单元地址装载到PC;3CPU从相应中断矢量单元中取出一条用户设定的转移指令,然后转入执行这一CPU中断的通用中断效力程序(GISRx)。例:INT2上有一外设中断恳求被呼应,其中断矢量单元地址为0004h,那么在0004h单元放置一条转移指令: 0004h B GISR2.3 可屏蔽中断的呼应流程4在GISRx中完成必要的现场维护后,从外设中断矢量存放器(PIVR)中读取相应外设中断矢量。 通常并将其左移一个预定的值,再加上偏移量,所得到

26、的值就是这个外设中断事件的中断效力程序(SISR) 的入口地址。 在SISR中执行对该外设中断事件的效力。5执行SISR,直到一条前往指令,终了该中断效力程序。6从栈顶弹出前往地址到PC。.例: 典型中断效力程序代码 假设:挂在INT2 之下的EVA 通用定时器1的周期中断 INT2的中断矢量为 0004h EVA 通用定时器1 周期中断的中断矢量(PIV)为 0027h (存放在PIVR) 地址 汇编言语代码 ;CPU中断矢量表0000h RSVECT : B START ;复位矢量0002h INT1: B GISR1 ;转移到INT1的通用中断效力子程序GISR10004h INT2:

27、B GISR2 ; 转移到INT2的通用中断效力子程序GISR2; CPU其他中断矢量.地址 汇编言语代码GISR1:; 其他中断的通用中断效力子程序 GISR2: ; 保管必要的上、下文LACC PIVR, 1 ; 将中断矢量存放器(PIVR)的值移位(2)后装; 入累加器ADD offset ;累加器的值加一个偏移量后,即为特定的中断; 效力子程序 SISRx的地址BACC ;转移到累加器指示的地址中(2PIV+offset); 外设中断矢量表2PIV+offsetB SISR1 ;转移到中断事件的特定中断效力子程序SISR中2PIV+offset+2B SISR2B SISRxSISRx

28、:;外部事件中断效力程序RET;前往 .三、 非屏蔽中断1硬件非屏蔽中断 两个引脚产生硬件非屏蔽中断:RS (复位): CPU停顿程序流程,使处置器回到一个初始形状,然后从地址0000h 开场执行。NMI : 当该信号被激活时(NMI 引脚变低或NMI指令), CPU使程序控制转向0024h矢量地址,同时可屏蔽中断被制止(NTM = 1)。 NMI也可用做软件复位,与硬件复位不同,其不影响器件任何方式,也不终止当前有效指令或存储器的操作。 LF240 x芯片没有NMI引脚,当器件访问一个无效地址时,将产生非屏蔽中断恳求 .2软件非屏蔽中断3条指令可引起软件非屏版中断:INTR KNMITRAP

29、 该指令允许启动中断,指令操作数K表示CPU将转移到哪个中断矢量单元。 例 INTR 10 当呼应INTR中断时,INTM=1制止可屏蔽中断。 留意:INTR指令不影响IFR标志。.2软件非屏蔽中断3条指令可引起软件非屏版中断:INTR KNMITRAP 该指令使程序转移到中断矢量地址24h。 与不可屏蔽硬件中断NMI运用同一单元。 .2软件非屏蔽中断3条指令可引起软件非屏版中断:INTR KNMITRAP 该指令使CPU转移到中断矢量单元22h,该指令不制止任何可屏蔽中断,即INTM不被置1.非屏蔽中断流程图.四、中断效力程序ISR的现场维护与中断嵌套CPU得到中断恳求并呼应之后,就根据中断

30、矢量转移到相应的中断效力程序ISR中,ISR在为中断所要求的义务效力前需求保管和恢复存放器的值,并且还要管理中断嵌套。.1保管和恢复存放器值CPU进入中断效力程序(ISR)之前,硬件只将增量后的程序计数器的值自动保管起来,所以在中断效力程序中要用软件对一些重要存放器的值进展保管和恢复。例如:假设ISR需求执行一次乘法运算,那么它就需求运用乘法存放器(PREG)。假设先前的PREG值要求在执行完ISR之后仍保管在PREG中,那么ISR必需先保管该值,再执行新的乘法运算,当乘法运算执行完后,中断效力程序前往之前,再重新装载原来那个PREG值。在大多数中断效力程序中,都需求对某些存放器进展维护,所以

31、,经常备份个通用的保管和恢复程序,供中断效力程序调用。.2中断效力程序(ISR)嵌套的管理C2000硬件堆栈允许中断嵌套,但须留意:1假设希望一个可屏蔽中断可以中断ISR,那么,该ISR必需不屏蔽这个中断,可在中断效力程序中,经过对IMR中的相应位设置和执行允许中断指令(CLRC INTM)来解除该中断屏蔽。28级硬件堆栈。每进展一次中断效力或进入子程序都要将前往地址压入堆栈,以提供前往的途径,所以最多允许中断或子程序嵌套8级。 假设软件需求的堆栈超越8级,可以利用POPD和PSHD指令将堆栈有效地扩展到数据存储空间。.3) C2000具有防止不测嵌套的功能。 由于在执行完中断的效力程序前往之

32、前,总要先允许中断,即执行 CLRC INTM RET 假设在执行CLRC INTM时发生了不测中断,CPU总是先完成CLRC INTM指令及其后面的那条指令后才去处置已挂起的中断。 假设希望在中断效力程序中实现中断嵌套,应在前往(RET)指令前至少两条指令的位置上插入CLRC INTM指令,即 CLRC INTM . . RET.五、中断等待时间中断等待时间是指提出中断恳求到呼应恳求之间的时间,其长短取决于许多要素。在执行个软件中断之前CPU总是要完成流水线操作中的一切指令,不可屏蔽中断最小等待时间为4个周期。一个外部可屏蔽硬件中断,其最小等待时间为8个周期。LF/LC240 x中断等待时间包括外设同步接口时间、CPU呼应时间、ISR转移时间。外设同步接口时间是指外设中断事件发生中断恳求,经PIE识别、判优、转换后将恳求发送至CPU的时间。CPU呼应时间是指CPU识别出曾经被使能的中断、呼应中断、去除流水线,到从CPU的中断矢量表中取出转移指令的时间。ISR转移时间是指CPU执行通用中断效力程序,

温馨提示

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

评论

0/150

提交评论