版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第6章章 串行通信模块及第一个中断程序串行通信模块及第一个中断程序结构结构主要内容:主要内容:6.1 6.1 异步串行通信的通用基础知识异步串行通信的通用基础知识6.2 UART6.2 UART模块功能概述及编程结构模块功能概述及编程结构6.3 UART6.3 UART驱动构件封装驱动构件封装6.4 KL256.4 KL25的中断机制及的中断机制及UARTUART接收中断程序实例接收中断程序实例6.5 6.5 进一步讨论进一步讨论6.6 6.6 本章小结本章小结26.1 异步串行通信的通用基础知识异步串行通信的通用基础知识6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念实现异步
2、串行通信功能的模块在一部分实现异步串行通信功能的模块在一部分MCUMCU中被称为中被称为通用异步收发器(通用异步收发器(Universal Asynchronous Universal Asynchronous Receiver/TransmittersReceiver/Transmitters,UARTUART),在另一些),在另一些MCUMCU中被称为中被称为串行通信接口(串行通信接口(Serial Communication InterfaceSerial Communication Interface,SCISCI)。)。1.1.异步串行通信的格式异步串行通信的格式异步串行通信通常采用
3、异步串行通信通常采用NRZNRZ数据格式数据格式, , 其英文译为其英文译为“标准不归零传号标准不归零传号/ /空号数据格式空号数据格式”,“,“不归零不归零”的最初含的最初含义是:用正、负电平表示二进制值,不使用零电平。义是:用正、负电平表示二进制值,不使用零电平。“mark/space”mark/space”即即“传号传号/ /空号空号”分别是表示两种状态的分别是表示两种状态的物理名称,逻辑名称记为物理名称,逻辑名称记为“1/0”1/0”。 下图给出了下图给出了8 8位数据、无校验情况的传送格式位数据、无校验情况的传送格式32.2.串行通信的波特率串行通信的波特率串行通信的波特率单位是位串
4、行通信的波特率单位是位/ /秒,记为秒,记为bpsbps。通常情。通常情况下,波特率的单位可以省略。通常使用的波特率有况下,波特率的单位可以省略。通常使用的波特率有300300、600600、900900、12001200、18001800、24002400、48004800、96009600、1920019200、3840038400、5760057600、115200115200等等 。3.3.奇偶校验奇偶校验字符奇偶校验检查(字符奇偶校验检查(character parity checkingcharacter parity checking)称)称为垂直冗余检查(为垂直冗余检查( ve
5、rtical redundancy checkingvertical redundancy checking,VRCVRC),它是每个字符增加一个额外位使字符中,它是每个字符增加一个额外位使字符中“1”1”的个数为奇数的个数为奇数或偶数。或偶数。奇校验:如果字符数据位中奇校验:如果字符数据位中“1”1”的数目是偶数,校验的数目是偶数,校验位应为位应为“1”1”,如果,如果“1”1”的数目是奇数,校验位应为的数目是奇数,校验位应为“0”0”。偶校验:如果字符数据位中偶校验:如果字符数据位中“1”1”的数目是偶数,则校的数目是偶数,则校验位应为验位应为“0”0”,如果是奇数则为,如果是奇数则为“1
6、”1”。4.4.串行通信的传输方式串行通信的传输方式1 1)单工()单工(SimplexSimplex):数据传送是单向的,一端为发送):数据传送是单向的,一端为发送端,另一端为接收端。这种传输方式中,除了地线之外,只端,另一端为接收端。这种传输方式中,除了地线之外,只要一根数据线就可以了。有线广播就是单工的。要一根数据线就可以了。有线广播就是单工的。42 2)全双工()全双工(Full-duplexFull-duplex):数据传送是双向的,):数据传送是双向的,且可以同时接收与发送数据。这种传输方式中,除了地且可以同时接收与发送数据。这种传输方式中,除了地线之外,需要两根数据线,站在任何一
7、端的角度看,一线之外,需要两根数据线,站在任何一端的角度看,一根为发送线,另一根为接收线。一般情况下,根为发送线,另一根为接收线。一般情况下,MCUMCU的异步的异步串行通信接口均是全双工的。串行通信接口均是全双工的。3 3)半双工()半双工(Half-duplexHalf-duplex):数据传送也是双向的):数据传送也是双向的,但是在这种传输方式中,除了地线之外,一般只有一,但是在这种传输方式中,除了地线之外,一般只有一根数据线。任何一个时刻,只能由一方发送数据,另一根数据线。任何一个时刻,只能由一方发送数据,另一方接收数据,不能同时收发。方接收数据,不能同时收发。56.1.2 RS-23
8、26.1.2 RS-232总线标准总线标准MCUMCU引脚输入引脚输入/ /输出一般使用输出一般使用TTLTTL(Transistor Transistor TransistorTransistor Logic Logic)电平,即晶体管)电平,即晶体管- -晶体管逻辑电平,它晶体管逻辑电平,它适用于板内数据传输。为使信号传输得更远,美国电子工适用于板内数据传输。为使信号传输得更远,美国电子工业协会业协会EIAEIA(Electronic Industry AssociationElectronic Industry Association)制订了)制订了串行物理接口标准串行物理接口标准RS-
9、232CRS-232C,以下简称,以下简称RS-232RS-232。目前几乎所有计算机上的串行口都是目前几乎所有计算机上的串行口都是9 9芯接口。芯接口。66.1.3 TTL6.1.3 TTL电平到电平到RS-232RS-232电平转换电路电平转换电路具有串行通信接口的具有串行通信接口的MCUMCU,一般具有发送引脚,一般具有发送引脚( (TxDTxD) )与接与接收引脚收引脚( (RxDRxD) ),不同公司或不同系列的,不同公司或不同系列的MCUMCU,使用的引脚缩写,使用的引脚缩写名可能不一致,但含义相同。串行接口的外围硬件电路,主名可能不一致,但含义相同。串行接口的外围硬件电路,主要目
10、的是将要目的是将MCUMCU的发送引脚的发送引脚TxDTxD与接收引脚与接收引脚RxDRxD的的TTLTTL电平,通电平,通过过RS-232RS-232电平转换芯片转换为电平转换芯片转换为RS-232RS-232电平。下图给出一个基电平。下图给出一个基本芯片本芯片MAX232MAX232引脚图及串行通信接口电平转换电路引脚图及串行通信接口电平转换电路7MAX232MAX232芯片进行电平转换基本原理是:芯片进行电平转换基本原理是:发送过程:发送过程:MCUMCU的的TXDTXD(TTLTTL电平)经过电平)经过MAX232MAX232的的1111脚脚(T1IN)(T1IN)送到送到MAX232
11、MAX232内部,在内部内部,在内部TTLTTL电平被电平被“提升提升”为为RS-232RS-232电平,通过电平,通过1414脚脚(T1OUT)(T1OUT)发送出去。发送出去。接收过程:外部接收过程:外部RS-232RS-232电平经过电平经过MAX232MAX232的的1313脚(脚(R1INR1IN)进入到)进入到MAX232MAX232的内部,在内部的内部,在内部RS-232RS-232电平被电平被“降降低低”为为TTLTTL电平时,经过电平时,经过1212脚(脚(R1OUTR1OUT)送到)送到MCUMCU的的RXDRXD,进入进入MCUMCU内部。内部。86.1.4 6.1.4
12、串行通信编程模型串行通信编程模型从基本原理角度看,串行通信接口从基本原理角度看,串行通信接口UARTUART的主要功能的主要功能是:接收时,把外部的单线输入的数据变成一个字节的是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入并行数据送入MCUMCU内部;发送时,把需要发送的一个字节内部;发送时,把需要发送的一个字节的并行数据转换为单线输出。的并行数据转换为单线输出。9106.2 UART模块功能概述及编程结构模块功能概述及编程结构6 6.2.1 .2.1 UARTUART模块功能概述模块功能概述1. 1. 外部引脚外部引脚MKL25Z128VLK4MKL25Z128VLK4芯片共有
13、三个串口,分别标记为芯片共有三个串口,分别标记为UART0UART0、UART1UART1、UART2UART2。它们并不是固定在哪几个引脚上,而是通过可。它们并不是固定在哪几个引脚上,而是通过可以引脚配置寄存器配置。以引脚配置寄存器配置。2 2基本结构与特点基本结构与特点KL25KL25中共有中共有3 3个个UARTUART模块,分别为模块,分别为UART0UART0、UART1UART1和和UART2UART2。可编程的可编程的8 8位、位、9 9位或位或1010位数据模式,其中位数据模式,其中UART1UART1与与UART2UART2只支持只支持8 8位与位与9 9位数据模式,位数据模
14、式,UART0UART0支持全部的数据模式。支持全部的数据模式。每个每个UARTUART模块都有模块都有1313位模数分频器。每个位模数分频器。每个UARTUART模块都可模块都可以独立地启用发送器和接收器,分别设置发送器与接收器的极以独立地启用发送器和接收器,分别设置发送器与接收器的极性。性。UART0UART0支持双边沿采样,而支持双边沿采样,而UART1UART1与与UART2UART2不支持此功能。不支持此功能。6.2.2 UART6.2.2 UART模块编程结构模块编程结构1 1寄存器地址分析寄存器地址分析KL25KL25芯片有芯片有3 3个个UARTUART模块。每个模块有其对应的
15、寄模块。每个模块有其对应的寄存器。存器。2 2控制寄存器控制寄存器1 1)UARTxUARTx控制寄存器控制寄存器2 2(UARTx_C2UARTx_C2)2 2)UARTxUARTx控制寄存器控制寄存器1 1(UARTx_C1UARTx_C1)3 3)UART0UART0控制寄存器控制寄存器4 4(UART0_C4UART0_C4)4 4)UART0UART0控制寄存器控制寄存器5 5(UART0_C5UART0_C5)3 3状态寄存器状态寄存器UARTx_S1UARTx_S14. 4. 波特率寄存器波特率寄存器波特率高字节寄存器(波特率高字节寄存器(UARTx_BDHUARTx_BDH)波
16、特率低字节寄存器波特率低字节寄存器 (UARTx_BDLUARTx_BDL)5. 5. 数据寄存器数据寄存器UARTx_DUARTx_D(x=02x=02)11126.3 UART驱动构件封装驱动构件封装6.3.1 UART6.3.1 UART驱动构件封装要点分析驱动构件封装要点分析UARTUART具有初始化、接收和发送三种基本操作。具有初始化、接收和发送三种基本操作。实现构件化编程的实现构件化编程的UARTUART软件模块应当具有以下几个特点:软件模块应当具有以下几个特点:1 1)UARTUART模块是最底层的构件,它主要向上提供三种服务,模块是最底层的构件,它主要向上提供三种服务,分别是分
17、别是UARTUART模块的初始化、接收单个字节和发送单个字节,向模块的初始化、接收单个字节和发送单个字节,向下则直接访问模块寄存器,实现对硬件的直接操作。另外,从下则直接访问模块寄存器,实现对硬件的直接操作。另外,从实际使用角度出发,它还需要封装接收实际使用角度出发,它还需要封装接收N N个字节和发送个字节和发送N N个字节个字节的功能函数。的功能函数。2 2)UARTUART模块在软件上对应模块在软件上对应1 1个个uart.cuart.c程序源代码文件和程序源代码文件和1 1个个uart.huart.h头文件,当需要使用头文件,当需要使用UARTUART构件时,大多数情况下只需构件时,大多
18、数情况下只需简单拷贝这两个文件即可,无需对源代码文件和头文件进行修简单拷贝这两个文件即可,无需对源代码文件和头文件进行修改,只有当进行不同芯片之间的移植时,才需要修改头文件中改,只有当进行不同芯片之间的移植时,才需要修改头文件中与硬件相关的宏定义。与硬件相关的宏定义。3 3)上层构件或软件在使用该构件时,严格禁止通过全局)上层构件或软件在使用该构件时,严格禁止通过全局变量来传递参数,所有的数据传递都直接通过函数的形式参数变量来传递参数,所有的数据传递都直接通过函数的形式参数来接收。来接收。13通过以上分析,可以设计通过以上分析,可以设计UARTUART构件的构件的8 8个基本功能函数。个基本功
19、能函数。(1 1)初始化:)初始化:void uart_init (uint_8 uartNo, void uart_init (uint_8 uartNo, uint_32 sel_clk,uint_32 baud_rate);uint_32 sel_clk,uint_32 baud_rate);(2 2)发送单个字节:)发送单个字节:uint_8 uart_send1(uint_8 uartNo, uint_8 uart_send1(uint_8 uartNo, uint_8 ch);uint_8 ch);(3 3)发送)发送N N个字节:个字节:uint_8 uart_sendN (ui
20、nt_8 uartNo, uint_8 uart_sendN (uint_8 uartNo, uint_16 len ,uint_8uint_16 len ,uint_8* * buff); buff);(4 4)发送字符串:)发送字符串:uint_8 uart_send_string(uint_8 uint_8 uart_send_string(uint_8 uartNo, void uartNo, void * *buff);buff);(5 5)接收单个字节:)接收单个字节:uint_8 uart_re1 (uint_8 uartNo, uint_8 uart_re1 (uint_8 u
21、artNo, uint_8 uint_8 * *fp);fp);(6 6)接收)接收N N个字节:个字节:uint_8 uart_reN (uint_8 uartNo, uint_8 uart_reN (uint_8 uartNo, uint_16 len ,uint_8uint_16 len ,uint_8* * buff); buff);(7 7)使能串口接收中断:)使能串口接收中断:void uart_enable_re_int void uart_enable_re_int (uint_8 uartNo);(uint_8 uartNo);(8 8)禁止串口接收中断:)禁止串口接收中断:
22、void uart_disable_re_int void uart_disable_re_int (uint_8 uartNo);(uint_8 uartNo);146.4 KL256.4 KL25的中断机制及的中断机制及UARTUART接收中断接收中断程序实例程序实例6.4.1 KL256.4.1 KL25中断基本概念中断基本概念1 1中断的概念及其中断的概念及其KL25KL25中断分类中断分类所谓中断,是指所谓中断,是指MCUMCU在正常运行程序时,在正常运行程序时, 由于由于MCUMCU内核内核异常或者异常或者MCUMCU各模块发出请求事件,引起各模块发出请求事件,引起MCUMCU停止
23、正在运行的停止正在运行的程序,而转去处理异常或执行处理外部事件的程序(又称中程序,而转去处理异常或执行处理外部事件的程序(又称中断服务程序)。断服务程序)。这些引起这些引起MCUMCU中断的事件称为中断源。中断的事件称为中断源。KL25KL25的中断源分的中断源分为两类,一类是内核中断,另一类是非内核中断。为两类,一类是内核中断,另一类是非内核中断。内核中断主要是异常中断,也就是说,当出现错误的时内核中断主要是异常中断,也就是说,当出现错误的时候,这些中断会复位芯片或是做出其他处理。候,这些中断会复位芯片或是做出其他处理。非内核中断是指非内核中断是指MCUMCU各个模块为中断源引起的中断,各个
24、模块为中断源引起的中断, MCUMCU执行完中断服务程序后,又回到刚才正在执行的程序,执行完中断服务程序后,又回到刚才正在执行的程序,从停止的位置继续执行后续的指令。非内核中断又称可屏蔽从停止的位置继续执行后续的指令。非内核中断又称可屏蔽中断,这类中断可以通过编程控制,开启或关闭该中断。中断,这类中断可以通过编程控制,开启或关闭该中断。152 2中断向量表的概念中断向量表的概念中断向量表是指按照中断源的中断向量序号的固定顺中断向量表是指按照中断源的中断向量序号的固定顺序,存放中断服务程序入口地址的一段存储区域。每个中序,存放中断服务程序入口地址的一段存储区域。每个中断服务程序入口地址占用断服务
25、程序入口地址占用4 4个字节单元,个字节单元,KL25KL25中断向量表的中断向量表的位置在存储区位置在存储区0 x0000_00000 x0000_00c00 x0000_00000 x0000_00c0的一段地址范围,的一段地址范围,一共一共4848* *4=1924=192个字节,存放个字节,存放4848个中断服务程序的入口地址。个中断服务程序的入口地址。中断服务程序的入口地址又称为中断向量或中断向量指针,中断服务程序的入口地址又称为中断向量或中断向量指针,它指向中断服务程序在存储器中的位置。它指向中断服务程序在存储器中的位置。166.4.2 KL256.4.2 KL25中断向量表文件中
26、断向量表文件 如何将中断服务程序的入口地址(中断向量),按如何将中断服务程序的入口地址(中断向量),按照中断源的中断向量序号的顺序,写入到中断向量表的照中断源的中断向量序号的顺序,写入到中断向量表的位置呢?定义一个常量指针数组,再把中断向量存入这位置呢?定义一个常量指针数组,再把中断向量存入这个数组中,工程编译时由链接文件个数组中,工程编译时由链接文件intflash.ldintflash.ld指定这个指定这个数组存放到中断向量表的位置。数组存放到中断向量表的位置。 在在CW10.3CW10.3开发环境下,这个常量指针数组是在开发环境下,这个常量指针数组是在vectors.hvectors.h
27、 和和vectors.cvectors.c两个文件中实现的,由于这两个两个文件中实现的,由于这两个文件定义和存放着中断向量,所以文件定义和存放着中断向量,所以vectorsvectors文件称为中断文件称为中断向量表文件。向量表文件。176.4.3 KL256.4.3 KL25的中断服务程序及其的中断服务程序及其“注册注册”1. 1. 中断服务程序设计中断服务程序设计中断服务程序的设计与普通构件函数设计是一样的,中断服务程序的设计与普通构件函数设计是一样的,只是这些程序只有在产生中断时才被执行。为了规范编程只是这些程序只有在产生中断时才被执行。为了规范编程将各个中断服务程序,放在将各个中断服务
28、程序,放在“isr.cisr.c”中断底层驱动构件中断底层驱动构件源文件。如编写一个串口中断服务程序,串口源文件。如编写一个串口中断服务程序,串口1 1有数据到有数据到来时产生中断,执行来时产生中断,执行isr_uart1_re(void)isr_uart1_re(void)接收中断服务程接收中断服务程序。服务程序首先进入临界区关总中断,接收一个到来的序。服务程序首先进入临界区关总中断,接收一个到来的字符。若接收成功成功,则把这个字符发送回去,退出临字符。若接收成功成功,则把这个字符发送回去,退出临界区。界区。2. 2. 中断服务程序的中断服务程序的“注册注册”中断服务程序的中断服务程序的“注
29、册注册”就是将用户编写好中断服就是将用户编写好中断服务程序入口地址,添加到中断向量表中。实际是在中断向务程序入口地址,添加到中断向量表中。实际是在中断向量表头文件量表头文件vectors.hvectors.h中,将宏定义的中断服务函数名替中,将宏定义的中断服务函数名替换成用户编写好中断服务程序名。换成用户编写好中断服务程序名。186.4.4 ARM Cortex-M0+6.4.4 ARM Cortex-M0+非内核模块中断编程结构非内核模块中断编程结构1 1M0+M0+中断结构及中断过程中断结构及中断过程由模块中断源、中断控制器(由模块中断源、中断控制器(NVICNVIC)和)和M0+M0+内
30、核组成。内核组成。其中断过程分为二步:其中断过程分为二步:(1 1)模块中断源向中断控制器()模块中断源向中断控制器(NVICNVIC)发出中断请求)发出中断请求信号。信号。(2 2)中断控制器对发来的中断信号进行管理,判断该)中断控制器对发来的中断信号进行管理,判断该中断是否允许中断,若允许,通过私有外设总线发送给中断是否允许中断,若允许,通过私有外设总线发送给M0+M0+内核,由内核进行中断处理;如果同时有多个中断信号到来,内核,由内核进行中断处理;如果同时有多个中断信号到来,NVICNVIC根据设定好的中断信号的优先级进行判断,优先级高的根据设定好的中断信号的优先级进行判断,优先级高的中
31、断首先响应,优先级低的中断挂起,压入堆栈保存;如果中断首先响应,优先级低的中断挂起,压入堆栈保存;如果优先级完全相同的多个中断源同时请求,则先响应优先级完全相同的多个中断源同时请求,则先响应IRQIRQ中断中断号较小的,其他的被挂起。号较小的,其他的被挂起。19M0+M0+中断结构原理图:中断结构原理图:2 2NVICNVIC各寄存器简介各寄存器简介NVICNVIC向量中断控制寄存器共有向量中断控制寄存器共有1212个寄存器,如下表个寄存器,如下表所示。所示。203 3中断初始化设置步骤中断初始化设置步骤根据根据KL25KL25的中断机制,想让一个非内核中断源能够的中断机制,想让一个非内核中断
32、源能够得到内核响应,必须要进行初始化设置。初始化的几个得到内核响应,必须要进行初始化设置。初始化的几个基本步骤如下:基本步骤如下:(1 1)设置模块中断使能位使能模块中断,使模块)设置模块中断使能位使能模块中断,使模块能够发送中断请求信号。例如在能够发送中断请求信号。例如在UARTUART中,将控制寄存器中,将控制寄存器C2C2的的RIERIE位置位置1 1。(2 2)在中断控制器中设置中断使能寄存器,使该)在中断控制器中设置中断使能寄存器,使该模块对应的使能位置模块对应的使能位置1 1,允许该中断请求。,允许该中断请求。4 4中断初始化示例中断初始化示例串口模块中断初始化函数串口模块中断初始
33、化函数uart_enable_re_intuart_enable_re_int(),(),包含两个方面的内容,一在控制寄存器包含两个方面的内容,一在控制寄存器UARTx_C2UARTx_C2中,将中,将接收中断允许位接收中断允许位D5D5设置成设置成1 1。另外根据。另外根据IRQIRQ号,在断控制号,在断控制器器NVICNVIC中断使能寄存器(中断使能寄存器(NVIC_ISERNVIC_ISER),将对应为置),将对应为置1 1开开中串口模块中断。中串口模块中断。216.5 6.5 进一步讨论进一步讨论KL25KL25串口支持串口支持DMADMA传输。所谓传输。所谓DMADMA(Direct
34、 Memory Direct Memory AccessAccess,直接内存存取),是指存储器的内容可以不经过,直接内存存取),是指存储器的内容可以不经过CPUCPU而与外部设备之间直接传输。而与外部设备之间直接传输。DMADMA是所有现代微控制器的是所有现代微控制器的重要特色,它允许不同速度的硬件装置来沟通,而不需要依重要特色,它允许不同速度的硬件装置来沟通,而不需要依于于 MCU MCU 的大量中断负载。否则,的大量中断负载。否则,MCU MCU 需外设把资料复制到需外设把资料复制到暂存器,然后再把它们写到新的地方。在这段时间,暂存器,然后再把它们写到新的地方。在这段时间,MCUMCU无无法做其他工作。法做其他工作。DMA DMA 传输将数据从一个地址空间复制到另外一个地址传输将数据从一个地址空间复制到另外一个地址空间。当空间。当MCU MCU 初始化这个传输动作,传输动作本身是由初始化这个传输动作,传输动作本身是由 DMA DMA 控制器来实行和完成。控制器来实行和完成。6.6 6.6 本章小结本章小结(1 1)学习和掌握通信串行通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学(纺织工程)织造工艺综合测试卷及答案
- 制药厂销售培训
- 成本效益的优化策略
- 戈谢病基因治疗的联合基因编辑策略
- 线上游戏代练合同协议
- 2026年服装样品配送合同协议
- 2026年股权投资投资管理协议
- 2026年全民健康生活方式知识竞赛试题及答案
- 货物破损保险理赔程序协议
- 牙医诊疗服务协议
- 综合实践 参加欢乐购物活动 筹备购物活动 课件 2025-2026学年二年级上册数学北师大版
- 石材养护保养操作规程手册
- 深圳市宝安区社区专职工作者历年考试真题
- 2025-2026学年上学期高二化学苏教版期中必刷常考题之化学反应速率与化学平衡(解答题)
- 机关单位wifi管理制度(3篇)
- 人机协同在智能社区安防系统中的研究报告
- 数据中心节能技术实施方案
- 消控室人员培训知识课件
- 冷库安全管理协议书范本
- JJF 2266-2025血液融浆机校准规范
- 肿瘤常见症状管理
评论
0/150
提交评论