




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统原理与实验 第第7 7章章 Cortex-M3 Cortex-M3 异常和中断异常和中断7.1 异常7.2 NVIC 和中断控制1嵌入式系统原理与实验 7.1.1 7.1.1 异常类型异常类型 所有能打断正常执行流的事件都称为异常。CM3支持为数众多的系统异常和外部中断。 编号为115的对应系统异常;编号为16255的对应外部中断 大部分的异常可编程优先级,其中很少的一些有固定的优先级。 当前运行的异常值,是由特殊寄存器IPSR或NVIC的中断控制状态寄存器表示的。27.1 7.1 异常异常嵌入式系统原理与实验 编号类型优先级描述1复位-3 (最高)复位2NMI-2 不可屏蔽中断(外
2、部NMI 输入)3硬异常-1所有被除能的fault,都将“上访”(escalation)成硬fault。只要FAULTMASK没有置位,硬fault服务例程就被强制执行。Fault被除能的原因包括被禁用,或者PRIMASK/BASEPRI被掩蔽。若FAULTMASK也置位,则硬fault也被除能,此时彻底“关中” 4MemManage fault 可编程存储器管理fault,MPU访问违例以及访问非法位置均可引发。企图在“非执行区”取指也会引发此fault 5总线fault 可编程从总线系统收到了错误响应,原因可以是预取流产(Abort)或数据流产,企图访问协处理器也会引发此fault 6用法
3、(usage) fault可编程由于程序错误导致的异常。通常是使用了一条无效指令,或者是非法的状态转换,例如尝试切换到ARM状态 3嵌入式系统原理与实验 编号类型优先级描述7-10保留N/A11SVCall可编程执行系统服务调用指令(SVC)引发的异常 12调试监视器可编程调试监视器(断点,数据观察点,或者是外部调试请求) 13保留N/A14PendSV 可编程为系统设备而设的“可悬挂请求”15SysTick 可编程系统滴答定时器16IRQ#0可编程外中断#0 17IRQ#1可编程外中断#1255IRQ#239可编程外中断#2394续嵌入式系统原理与实验 7.1.2 7.1.2 优先级定义优先
4、级定义 在CM3中,优先级决定一个异常是否能被掩蔽,以及在未掩蔽的情况下何时可以响应。 优先级的数值越小,则优先级越高。 CM3支持中断嵌套,使得高优先级异常会抢占(preempt)低优先级异常。 3个系统异常:复位,NMI以及硬fault,它们有固定的优先级,并且它们的优先级号是负数,从而高于所有其它异常。 所有其它异常的优先级则都是可编程的。 CM3支持3个固定的高优先级和多达256级的可编程优先级,并且支持128级抢占。但是,绝大多数CM3芯片都会精简设计,裁掉表达优先级的几个低端有效位,以减少优先级的级数,如8级,16级,32级等。5嵌入式系统原理与实验 3 3 比特优先级比特优先级B
5、it 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0用于表达优先级用于表达优先级不使用不使用, 读出值为读出值为04 4比特优先级比特优先级优先级寄存器的最小宽度值为3比特。Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0用于表达优先级用于表达优先级不使用不使用, 读出值为读出值为06嵌入式系统原理与实验 3 3位或位或4 4位宽度位宽度的可用优先级的可用优先级7通过让优先级以MSB对齐,可以简化程序的跨器件移植。嵌入式系统原理与实验 分别使用3-bit, 5-bit, 和8-bit 优先级寄存器的使用情况:优先级异常类型3比特表达5比
6、特表达8比特表达-3 (Highest)复位-3-3-3-2NMI-2-2-2-1硬件错误-1-1-1010 xFF具有优先级并且可编程的异常0 x000 x200 xE00 x000 x080 xF80 x00, 0 x010 x02, 0 x030 xFE, 0 xFF8嵌入式系统原理与实验 抢占优先级和亚优先级抢占优先级和亚优先级通过NVIC中“应用程序中断及复位控制寄存器”的位段“PRIGROUP优先级组”设置。该位段的值对每一个优先级可配置的异常都有影响,把其优先级分为2个位段:MSB所在的位段(左边的)对应抢占优先级,而LSB所在的位段(右边的)对应亚优先级。抢占优先位段和亚优先级
7、位段在优先级寄存器中的定义优先组抢占优先级位段亚优先级位段0Bit 7:1Bit 01Bit 7:2Bit 1:02Bit 7:3Bit 2:03Bit 7:4Bit 3:04Bit 7:5Bit 4:05Bit 7:6Bit 5:06Bit 7Bit 6:07NoneBit 7:09嵌入式系统原理与实验 应用程序中断和复位控制寄存器应用程序中断和复位控制寄存器( (地址地址0 xE000ED0C)0 xE000ED0C)Bits名称类型复位值描述31:16VECTKEYR/W存取关键字;为了写入这个寄存器必须向这个位段写人 0 x05FA15ENDIANNESSR表示数据的排列顺序: 1 表
8、示大端(BE8) 而0表示小端10:8PRIGROUPR/W0优先组2SYSRESETREQW请求芯片控制逻辑产生一个复位信号1VECTCLRACTIVEW清除异常的所有活跃状态信息0VECTRESETW复位Cortex-M3 处理器。 但不会复位处理器以外的电路。10嵌入式系统原理与实验 11Bit 7Bit 6Bit 5Bit 4 Bit 0抢占级亚不使用, 读出值0嵌入式系统原理与实验 12Bit 7Bit 6Bit 5Bit 4 Bit 2Bit 1Bit 0抢占级不使用亚优先级嵌入式系统原理与实验 7.1.3 7.1.3 向量表向量表 响应异常时,CM3需要定位其服务例程的入口地址。
9、这些入口地址存储在所谓的“(异常)向量表”中。 缺省情况下,CM3认为该表位于零地址处,且各向量占用4字节。上电后的异常向量表地址异常号值(大小为“字”)0 x00000000MSP 初始值0 x000000041复位向量(程序计数器初始值)0 x000000082NMI 服务例程的入口地址 0 x0000000C3硬fault服务例程的入口地址 其它异常服务例程的入口地址 13嵌入式系统原理与实验 n通过设置NVIC中的向量表偏移寄存器向量表偏移寄存器,可以将向量表重定位到其它的内存地址。n向量表的起始地址:先求出系统中共有多少个向量,再把这个数字向上“圆整”到2的整次幂,而起始地址必须对齐
10、到后者的边界上。n例:如果一共有32个中断,则共有32+16(系统异常)=48个向量,向上圆整到2的整次幂后值为64,因此向量表重定位的地址必须能被64*4=256整除,合法的起始地址为:0 x0, 0 x100, 0 x200等。14向量表偏移寄存器(地址0 xE000ED08)Bits名类型复位值描述29TBLBASER/W0表基地址在Code (0) 或RAM (1)28:7TBLOFFR/W0来自CODE区或RAM区的表偏移范围嵌入式系统原理与实验 7.1.4 中断输入和挂起行为n当中断输入脚被置为有效(assert)后,该中断就被悬起。即使后来中断源撤消了中断请求,已经被标记成悬起的
11、中断也被记录下来。到了系统中它的优先级最高的时候,就会得到响应。 n如果在某个中断得到响应之前,其悬起状态被清除了(例如,在PRIMASK或FAULTMASK置位的时候软件清除了悬起状态标志),则中断被取消。 中断挂起15中断在得到处理器响应之前被清除悬起状态 嵌入式系统原理与实验 当处理器开始执行一个中断,中断被激活,同时挂起位将被自动清除。在处理器进入服务例程后对中断活跃状态的设置 16嵌入式系统原理与实验 如果一个中断源持续保持中断响应型号活跃,在中断服务程序结束时,中断将被再次挂起。在中断结束后,连续中断请求再次挂起17嵌入式系统原理与实验 如果一个中断在处理器执行前有多次脉冲,它将被
12、视为一次中断请求,而不是多次。18嵌入式系统原理与实验 如果在服务例程执行时,中断请求释放了,但是在服务例程返回前又重新被置为有效,则CM3会记住此动作,重新悬起该中断。19嵌入式系统原理与实验 7.1.5 Fault7.1.5 Fault异常异常有若干个系统异常专用于fault处理。CM3中的Faults可分为以下几类: n总线faults n存储器管理faults n用法faults n硬faults 20(1 1)总线错误)总线错误当在AHB接口数据传输过程中一个错误响应被接收时,产生总线Fault:1. 取指令2. 数据读/写3. 在中断进程开始的压栈4. 中断进程结束时的出栈5. 当
13、处理器开始中断句柄序列时,读一个中断向量地址嵌入式系统原理与实验 欲使能总线fault服务例程,需要在NVIC的“系统Handler控制及状态寄存器”中置位BUSFAULTENA位。发生了总线fault后,可通过NVIC中的“总线fault状态寄存器”(BFSR)确定产生fault的场合。21总线错误状态寄存器(0 xE000ED29)位段名称类型复位值描述7BFARVALID0=1时表示BFAR有效 6:54STKERRR/Wc0入栈时发生错误 3UNSTKERRR/Wc0出栈时发生错误 2IMPREISERRR/Wc0不精确的数据访问冲突1PRECISERRR/Wc0精确的数据访问冲突0I
14、BUSERRR/Wc0指令访问冲突嵌入式系统原理与实验 (2 2) 内存管理错误内存管理错误常见的内存管理错误包括:n 访问了所有MPU regions覆盖范围之外的地址 n 访问了没有存储器与之对应的空地址 n 往只读region写数据 n 用户级下访问了只允许在特权级下访问的地址 22位段名称类型复位值描述7MMARVALID0=1时表示MMAR有效 6:54MSTKERRR/Wc0入栈时发生错误 3MUNSTKERRR/Wc0出栈时发生错误 21DACCVIOLR/Wc0数据访问冲突0IACCVIOLR/Wc0取指访问违例 内存管理错误寄存器MFSR(0 xE000ED28)嵌入式系统原
15、理与实验 (3 3) 用法错误用法错误可以引起用法错误的有:n执行了协处理器指令。Cortex-M3本身并不支持协处理器,但是通过fault异常机制,可以建立一套“软件模拟”的机制,来执行一段程序模拟协处理器的功能,从而可以方便地在其它Cortex处理器间移植。 n执行了未定义的指令。同上一点的道理,亦可以软件模拟未定义指令的功能。 n尝试进入ARM状态。因为CM3不支持ARM状态,所以用法fault会在切换时产生。软件可以利用此机制来测试某处理器是否支持ARM状态。 n无效的中断返回(LR中包含了无效/错误的值) n使用多重加载/存储指令时,地址没有对齐。 n另外,可以让CM3在遇到除数为零
16、的时候,以及遇到未对齐访问的时候也产生用法fault。在NVIC中有两个控制位分别与它们对应。通过设置这两个控制位,就可以激活它们。 23嵌入式系统原理与实验 NVIC提供一个用法错误寄存器用法错误寄存器 (UFSR) 使得用法错误异常程序能够确定错误的原因。用法错误寄存器(0 xE000ED2A)24位段名称类型复位值描述9DIVBYZEROR/Wc0表示除法运算时除数为零(只有在DIV_0_TRP置位时才会发生) 8UNALIGNEDR/Wc0未对齐访问导致的fault 7:43NOCPR/Wc0试图执行协处理器相关指令 2INVPCR/Wc0在异常返回时试图非法地加载EXC_RETURN
17、到PC。包括非法的指令,非法的上下文以及非法的EXC_RETURN值。The return PC指向的指令试图设置PC的值1INVSTATER/Wc0试图切入ARM状态 0UNDEFINSTRR/Wc0执行的指令其编码是未定义的解码不能 嵌入式系统原理与实验 (4 4) 硬硬FaultFault可以引起硬件错误的有:n用法错误,总线错误,内存管理错误n获取向量时产生的总线错误硬件错误寄存器(0 xE000ED2C)25位段名称类型复位值描述31DEBUGEVTR/Wc 0硬fault因调试事件而产生 30FORCEDR/Wc 0硬fault是被上访的。上访者可以是总线fault、存储器管理fa
18、ult或是用法fault 29:21VECTBLR/Wc 0硬fault是在取向量时发生的 0嵌入式系统原理与实验 如何处理错误如何处理错误在一个真实运行的系统中,在检查到错误的原因后,软件需要决定下一步要做什么。一些错误处理办法:复位 通过设置NVIC“应用程序中断及复位控制寄存器”中的VECTRESET位,将只复位处理器内核而不复位其它片上设施。恢复 解决产生fault的问题。例如,如果程序尝试访问了协处理器,可以通过一个协处理器的软件模拟器来解决此问题。 中止 如果系统运行了一个RTOS,则相关的任务可以被终结或者重新开始。 26嵌入式系统原理与实验 7.1.6 7.1.6 SVC SV
19、C 和和PendSVPendSVSVCSVC (系统服务调用) :用于产生系统函数的调用请求。27使用SVC 指令产生SVC SVC 0 x3 ; Call SVC function 3嵌入式系统原理与实验 28PendSVPendSV (挂起的系统调用) :用于在不同任务之间切换(上下文切换)。可以像普通的中断一样被悬起。两个任务间通过SysTick 轮转调度的简单模式嵌入式系统原理与实验 29发生IRQ 时上下文切换的问题嵌入式系统原理与实验 30PendSV异常会自动延迟上下文切换的请求,直到其它的ISR都完成了处理后才执行PendSV异常。一般需要把PendSV编程为最低优先级的异常。
20、嵌入式系统原理与实验 1. 任务A呼叫SVC来请求任务切换(例如,等待某些工作完成) 2. OS接收到请求,做好上下文切换的准备,并且悬起一个PendSV异常。 3. 当CPU退出SVC后,它立即进入PendSV,从而执行上下文切换。 4. 当PendSV执行完毕后,将返回到任务B,同时进入线程模式。 5. 发生了一个中断,并且中断服务程序开始执行 6. 在ISR执行过程中,发生SysTick异常,并且抢占了该ISR。 7. OS执行必要的操作,然后悬起PendSV异常以作好上下文切换的准备。 8. 当SysTick退出后,回到先前被抢占的ISR中,ISR继续执行 9. ISR执行完毕并退出后
21、,PendSV服务例程开始执行,并且在里面执行上下文切换 10. 当PendSV执行完毕后,回到任务A,同时系统再次进入线程模式。 31嵌入式系统原理与实验 7.2.1 NVIC 7.2.1 NVIC 概述概述nNVIC:Nested Vectored Interrupt ControllernNVIC 支持1 到240 外部中断输入和一个 不可屏蔽中断 (NMI) 输入。nNVIC 可以通过内存地址0 xE000E000访问。n大多数中断控制/状态寄存器只能够在特权模式下访问(例外:软件触发中断寄存器可以在用户级下访问以产生软件中断)。n所有的中断控制状态寄存器均可按字半字字节的方式访问。3
22、27.2 NVIC 7.2 NVIC 和中断控制和中断控制嵌入式系统原理与实验 7.2.2 7.2.2 基本中断配置基本中断配置每个外部中断有一些相应的寄存器,包括:1. 使能和清除使能寄存器2. 设置挂起和清除挂起寄存器3. 优先级寄存器4. 活动状态寄存器下列寄存器也可以影响中断处理1. 异常屏蔽寄存器(PRIMASK, FAULTMASK以及BASEPRI) 2. 向量表偏移寄存器3. 软件触发中断寄存器4. 优先级分组位段33嵌入式系统原理与实验 34嵌入式系统原理与实验 7.2.3 7.2.3 中断使能和清使能中断使能和清使能n中断的使能与除能分别使用各自的寄存器来独立控制:CM3中
23、可以有240对使能位除能位(SETENA位/CLRENA位)。n欲使能一个中断,写1到对应SETENA的位中;欲除能一个中断,写1到对应的CLRENA位中。如果往它们中写0,则不会有任何效果。SETENA: 0 xE000E100-0 xE000E11CCLRENA: 0 xE000E180-0 xE000E19C35嵌入式系统原理与实验 SETENA/CLRENA寄存器族 名称类型地址复位值描述SETENA0R/W0 xE000E10000-31号外部中断使能SETENA1R/W0 xE000E104032-63号外部中断使能SETENA7R/W0 xE000E11C0224-239号外部中
24、断使能CLRENA0R/W0 xE000E18000-31 号外部中断清使能CLRENA1R/W0 xE000E184032-63号外部中断清使能CLRENA7R/W0 xE000E19C0224-239号外部中断清使能36嵌入式系统原理与实验 7.2.4 中断挂起和清除如果一个中断发生,但是不能够立刻执行,它将被挂起。中断挂起状态 可以通过设置中断挂起(SETPEND) 和清除挂起(CLRPEND) 寄存器来控制。SETPEND: 0 xE000E200-0 xE000E21 CLRPEND: 0 xE000E280-0 xE000E29C37名称类型地址复位值描述SETPEND0R/W0
25、xE000E2000挂起外部中断#0-31SETPEND1R/W0 xE000E2040挂起外部中断#32-63SETPEND7R/W0 xE000E21C0挂起外部中断 #224-239CLRPEND0R/W0 xE000E2800清除挂起外部中断#0-31 CLRPEND1R/W0 xE000E2840清除挂起外部中断#32-63CLRPEND7R/W0 xE000E29C0清除挂起外部中断#224-239嵌入式系统原理与实验 优先级优先级每个外部中断都有一个对应的优先级寄存器,每个寄存器占用8位,但是CM3允许只使用最高3位。中断优先级控制寄存器(0 xE000E400-0 xE000E
26、4EF)38名称类型地址复位值描述PRI_0R/W0 xE000E4000 (8-bit)外中断#0的优先级 PRI_1R/W0 xE000E4010 (8-bit)外中断#1的优先级 .PRI_239R/W0 xE000E4EF0 (8-bit)外中断#239的优先级 嵌入式系统原理与实验 活动状态活动状态每一个外部中断都有一个活动状态位。当处理器开始执行中断处理程序时,该位设置为1;在中断返回时清零。中断活动状态寄存器(0 xE000E300-0 xE000E31C)39名称类型地址复位值描述ACTIVE0R0 xE000E3000中断#0-31的活动状态寄存器ACTIVE1R0 xE00
27、0E3040中断#32-63的活动状态寄存器ACTIVE7R0 xE000E31C0中断#224-239的活动状态寄存器嵌入式系统原理与实验 PRIMASK PRIMASK 和和 FAULTMASK FAULTMASK 特殊功能寄存器特殊功能寄存器 PRIMASK(1bit)用于除能在NMI和硬fault之外的所有异常,它有效地把当前优先级改为0(可编程优先级中的最高优先级)。该寄存器可以通过使用MRS和MSR命令来编程控制。关中断: MOV R0, #1 MSR PRIMASK, R0 ; Write 1 to PRIMASK to disable all interrupts开中断: MO
28、V R0, #0 MSR PRIMASK, R0 ; Write 0 to PRIMASK to allow interruptsFAULTMASK寄存器通过将当前的优先级改为-1(置1)来除能所有异常。FAULTMASK 会在异常退出时自动清零。40嵌入式系统原理与实验 BASEPRIBASEPRI特殊功能寄存器特殊功能寄存器BASEPRI 寄存器(最多9bits)能够屏蔽优先级小于特定值的中断。屏蔽不高于0 x60的中断: MOV R0, #0 x60 MSR BASEPRI, R0 ; Disable interrupts with priority 0 x60-0 xFF取消对中断的屏
29、蔽: MOV R0, #0 x0 MSR BASEPRI, R0 ; Turn off BASEPRI masking41嵌入式系统原理与实验 BASEPRI寄存器可通过BASEPRI_MAX 名称进行访问:使用BASEPRI时,可以任意设置新的优先级阈值;使用BASEPRI_MAX时只允许新的优先级阈值比原来的那个在数值上更小,也就是说,只能一次次地扩大掩蔽范围,反之则不行。 MOV R0, #0 x60 MSR BASEPRI_MAX, R0 ; Disable interrupts with priority 0 x60, 0 x61,., etc MOV R0, #0 xF0 MSR
30、BASEPRI_MAX, R0 ; This write will be ignored because ; it is lower level than 0 x60 MOV R0, #0 x40 MSR BASEPRI_MAX, R0 ; This write is allowed and change ; the masking level to 0 x4042嵌入式系统原理与实验 其它异常的配置寄存器其它异常的配置寄存器用法异常、内存管理异常和总线异常通过系统处理控制和状态寄存器使能。系统处理控制和状态寄存器 (0 xE000ED24)位名称类型复位值描述18USGFAULTENAR/W
31、0用法fault服务例程使能位 17BUSFAULTENAR/W0总线fault服务例程使能位 16MEMFAULTENAR/W0存储器管理fault服务例程使能位 15SVCALLPENDEDR/W0SVC悬起中。本来已经要SVC服务例程,但是却被更高优先级异常取代 14BUSFAULTPENDEDR/W0总线fault悬起中,细节同上。 43嵌入式系统原理与实验 位名称类型复位值描述13MEMFAULTPENDEDR/W0存储器管理fault悬起中,细节同上 12USGFAULTPENDEDR/W0用法fault悬起中,细节同上 11SYSTICKACTR/W0SysTick异常活动中 1
32、0PENDSVACTR/W0PendSV异常活动中 8MONITORACTR/W0Monitor异常活动中 7SVCALLACTR/W0SVC异常活动中 3USGFAULTACTR/W0用法fault异常活动中 1BUSFAULTACTR/W0总线fault异常活动中 0MEMFAULTACTR/W0存储器管理fault异常活动中 (Continued)44嵌入式系统原理与实验 中断控制和状态寄存器(0 xE000ED04)位名称类型复位值描述31NMIPENDSETR/W0写1以悬起NMI28PENDSVSETR/W0写1以悬起PendSV。读取它则返回PendSV的状态 27PENDSVC
33、LRW0写1以清除PendSV悬起状态 26PENDSTSETR/W0写1以悬起SysTick。读取它则返回PendSV的状态 25PENDSTCLRW0写1以清除SysTick悬起状态 23ISRPREEMPTR0=1时,则表示一个悬起的中断将在下一步时进入活动状态(用于单步执行时的调试目的) 22ISRPENDINGR01=当前正有外部中断被悬起(不包括NMI) 21:12VECTPENDINGR0悬起的ISR的编号11RETTOBASER0如果异常返回后将回到基级(base level),并且没有其它异常悬起时,此位为19:0VECTACTIVER0当前活动的ISR编号45嵌入式系统原理
34、与实验 7.2.5 7.2.5 中断建立过程示例中断建立过程示例中断设置步骤:1. 设置优先级组寄存器。2. 如果需要重定位向量表,将硬件故障和NMI处理例程复制到一个新的矢量表位置。3. 设置矢量表偏移寄存器,使之指向新的向量表。4. 为该中断建立中断向量。5. 设置中断优先级。6. 使能中断。46LDR R0, =0 xE000ED0C ; 应用程序中断及复位控制寄存器LDR R1, =0 x05FA0500 ; 使用优先级组5 (2/6) STR R1, R0 ; 设置优先级组. MOV R4, #8 ; ROM中的向量表LDR R5, =(NEW_VECT_TABLE+8) LDMIA R4!, R0-R1 ; 读取NMI和硬fault的向量STMIA R5!, R0-R1 ; 拷贝它们的向量到新表中嵌入式系统原理与实验 . LDR R0, =0 xE000ED08 ; 向量表偏移量寄存器的地址LDR R1, =NEW_VECT_TABLE STR R1, R0 ; 把向量表重定位. LDR R0, =IRQ7_Handler ; 取得IRQ #7服务例程的入口地址LDR R1, =0 xE000ED08 ; 向量表偏移量寄存器的地址LDR R1, R1 ADD R1, R1,#(4*(7+16); 计算IRQ #7服务
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆安全员b证考试试题及答案
- 临时活动场地无偿借用服务协议
- 分公司合作运营与品牌授权合同
- 仓储物流园区消防设施维护合同
- 电子产品退换货、维修及售后保障合同
- 景区观光车辆驾驶员服务质量聘用合同
- 2025年高中数学北师大版选择性必修第一册课时作业(十七)
- 城市基础设施建设采购合同样本含社会责任条款
- 内科护理学肥胖症
- 出租车公司驾驶员招聘及服务质量提升合同
- 椎管内麻醉常见并发症的预防及处理
- GB/T 7260.503-2020不间断电源系统(UPS)第5-3部分:直流输出UPS性能和试验要求
- GB/T 4721-1992印制电路用覆铜箔层压板通用规则
- GB/T 22415-2008起重机对试验载荷的要求
- GB/T 11363-2008钎焊接头强度试验方法
- TSG D7003-2022 压力管道定期检验规则-长输管道
- IATF16949数据分析与绩效评价程序
- 海氏(hay)职位分析法-介绍、实践与评价合集课件
- 洁净区空气洁净度级别空气悬浮粒子的标准规定表
- 人教版五年级下册期末语文试卷答题卡及答案
- 步进式加热炉耐材砌筑施工方案
评论
0/150
提交评论