版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C1同步串行接口总线SPI与I2C——学习目标STM32的I2C总线1STM32的I2C总线的应用要领2硬件I2C与软件I2C3STM32的I2C和SPI的应用实例5重点——SPI、I2C接口的特性、初始化与接收发送操作难点——SPI、I2C接口的具体应用(可靠性和容错性)STM32的SPI4STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C2同步串行接口总线SPI与I2C——STM32的I2C及其应用要点I2C总线的概况——1——I2C总线的基本特性1——I2C即IIC,为“Inter-IntegratedCircuit”(集成电路总线)的缩写——它由飞利浦半导体公司在八十年代初设计出来的——它是一种高性能的同步串行总线。基本的I2C总线规范于20年前发布,其数据传输速率最高为100Kbits/s,采用7位寻址后增强为快速模式(400Kbits/s)和10位寻址,以满足更高速度和更大寻址空间的需求近来又增加了高速模式,其速度可达3.4Mbits/s——I2C总线保持其向下兼容性——I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。各设备连接到总线的输出端时必须是漏极开路(OD)输出或集电极开路(OC)输出。各设备的SDA是“与”关系,SCL也是“与”关系——主从式通信方式——所谓主机是指启动数据的传送(发出启动信号)、发出时钟信号以及传送结束时发出停止信号的设备。被主机寻访的设备称为从机为了进行通讯,每个接到I2C总线的设备都有一个唯一的地址STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C3同步串行接口总线SPI与I2C——STM32的I2C及其应用要点I2C总线的概况——2——SPI与I2C总线的区别1I2C的数据输入输出用的是一根线,而SPI的数据输入与输出是分开的由于上述原因,采用I2C时CPU的端口占用更少由于I2C的数据线是双向的,所以隔离比较复杂,而SPI则比较容易。所以,系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)I2C和SPI都不适合长距离传输STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C4同步串行接口总线SPI与I2C——STM32的I2C及其应用要点I2C总线的概况——3——I2C总线的工作原理——11I2C总线上可以挂多个设备,每个I2C设备都有固定的地址。只有当I2C两条线上传输的地址值等于某个I2C设备的地址时,该I2C设备才作出响应数据传输后,必须要有应答信号(响应信号)。数据是从最高位开始传输数据传输前必须有开始信号,传输结束后必须有结束信号——开始信号:处理器让SCL时钟保持高电平,然后让SDA数据信号由高变低就表示一个开始信号——停止信号:处理器让SCL时钟保持高电平,然后让SDA数据信号由低变高就表示一个停止信号——数据传输:SDA上传输的数据必须在SCL为高电平期间保持稳定——响应信号(ACK):处理器把数据发给外接I2C设备,如何知道I2C设备已经收到数据呢?这就需要外接I2C设备回应一个信号给处理器因为处理器发完8bit数据后就不再驱动总线了(SDA引脚由输出变输入),而SDA和SDL硬件设计时都有上拉电阻,所以这时候SDA变成高电平。那么在第8个数据位,如果外接I2C设备能收到信号的话,将在第9个周期把SDA拉低,这样处理器检测到SDA拉低就能知道外接I2C设备数据已经收到STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C5同步串行接口总线SPI与I2C——STM32的I2C及其应用要点I2C总线的概况——3——I2C总线的工作原理——21——多机通信I2C总线是允许挂载多个设备的,如何访问其中一个设备而不影响其他设备呢?答案是——主机(发送发起方)通过发送寻址从机(接收方)的数据帧。下图为寻址从机(接收方)的数据帧的示意图——S表示起始,P表示停止,A表示响应,DATA表示一个字节数据,SLAVEADDRESS表示从机地址(7bit)+R/W(1bit,就主机而言,0表示写,1表示读)因为用7bit表示从地址,那么可以挂载的从设备数,理论上是27=128个,当然这还取决于驱动能力STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C6同步串行接口总线SPI与I2C——STM32的I2C及其应用要点I2C总线的概况——3——I2C总线的工作原理——21——多机通信I2C总线是允许挂载多个设备的,如何访问其中一个设备而不影响其他设备呢?答案是——主机(发送发起方)通过发送寻址从机(接收方)的数据帧。下图为寻址从机(接收方)的数据帧的示意图——S表示起始,P表示停止,A表示响应,DATA表示一个字节数据,SLAVEADDRESS表示从机地址(7bit)+R/W(1bit,就主机而言,0表示写,1表示读)因为用7bit表示从地址,那么可以挂载的从设备数,理论上是27-1=128-1个,当然这还取决于驱动能力。其中地址00为广播地址器件类型由D7-D4共4位决定的,自定义地址码由D3-D1共3位组成,这也就是寻址码。为什么同一I2C总线上同一型号的I2C设备最多只能挂8片的原因。读写控制码:最低一位就是R/W位STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C7同步串行接口总线SPI与I2C——STM32的I2C及其应用要点STM32的I2C总线的基本特点——1——STM32有多达2个硬件I2C2——STM32的I2C总线提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时——支持标准(100kHz)和快速(400kHz)两种模式,同时与SMBus2.0兼容。通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线——可以开启或禁止中断——根据特定设备的需要,可以使用DMA以减轻CPU的负担——具有可编程的I2C地址检测,具有可响应2个从地址的双地址能力。产生和检测7位/10位地址和广播呼叫——有较为完备的状态和错误标志还记得7位吗?那么问题来了,10位又是啥东东?STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C8同步串行接口总线SPI与I2C——STM32的I2C及其应用要点STM32的I2C总线的基本特点——2——关于STM32之I2C模块的传说2——不少开发者在开发STM32的I2C接口程序时,总是会出现程序卡顿在某一处的现象,网上搜索的结果可以证明这一点——于是很容易得出结论:STM32本身I2C接口很差劲、很复杂,不想AVR等8位机的I2C接口好用——很多开发者放弃使用STM32本身的I2C模块,而采用软件模拟的方式实现I2C通信——在此建议,不要使用软件模拟实现I2C的方式,要充分使用STM32本身的I2C功能,因为STM32至少有一个I2C模块。STM32的I2C模块有不尽完善的地方,但关键还是要对它的特性有清晰的把握如果在程序中加入有效的容错机制,例如总线状态判断、超时处理、应答机制,STM32的I2C模块及其库函数还是十分好用的你会不会也做人云亦云的那一个?STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C9同步串行接口总线SPI与I2C——STM32的I2C及其应用要点STM32的I2C总线的应用要点——1——STM32的I2C硬件接口编程时要注意的ABC3——把I2C的中断优先级提升到最高。对STM32系统而言,它最优选的I2C工作模式是中断或者DMA,或者两者的结合,而不是查询方式(POLLING)——把多于2个字节的发送与接收封装成利用DMA收发的函数,而把一个字节的接收和发送单独封装为一个POLLING(轮询)函数——在寻址某一I2C设备时,要先检查总线状态,如果状态为忙,则等待指定时间,如果超时,则说明I2C总线被死锁挂起。这时要采用一定的措施,让被寻址方结束当前内部的工作,退出总线死锁以恢复总线。主设备在对从设备进行操作前先和从设备握手是很好的防守编程模型——不要让I2C工作在88kHz的频率上(有人已用实验证明这个速度容易出现问题,不过作者没有实验证明)。在满足需要的情况下,不建议使用高速度,而采用较低速度,例如:100kHz即可——STM32之I2C的硬件接口负责实现满足I2C总线的规约,而应用程序则必须利用I2C控制寄存器和I2C的事件标志组合实施通信相关的工作:接收、发送和其它相关处理,在发送或接收完成后一定要查询并清除相关标志STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C10同步串行接口总线SPI与I2C——STM32的I2C及其应用要点STM32的I2C总线的应用要点——2——I2C总线死锁原因及其解决办法3查阅ST的STM32的官方手册可知,在I2C_CR1寄存器中有一个Softwarereset位,即SWRST位。该位可以在出错或死锁时,用于复位STM32的I2C外设模块的I2C控制器在低功耗的STM32L0xx系列的用户指南中也提到可以用PE位复位熟悉套路很重要啊!否则,只能回农村STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C11同步串行接口总线SPI与I2C——STM32的I2C及其应用要点STM32的I2C总线的应用要点——3——STM32的I2C发送程序流程3①检测I2C总线是否空闲②按I2C协议发出起始信号③发出7位器件地址和写模式④发送要写入的存储区首地址⑤用页写入方式或字节写入方式写入数据(多字节在这里循环)⑥清除应答标志⑦发出停止信号器件内地址(寄存器地址)用单字节循环也可以写入多字节。只是速度会慢点STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C12同步串行接口总线SPI与I2C——STM32的I2C及其应用要点STM32的I2C总线的应用要点——4——STM32的I2C接收程序流程3①检测I2C总线是否空闲②按I2C协议发出起始信号③发出7位器件地址和写模式(伪写)④重新使能STM32的I2C外设模块,以清除相应事件标志EV6⑤发出要读取的存储区首地址⑥重发起始信号⑦发出7位器件地址和读模式⑧接收并应答————第一种情况:如果是单字节接收,则不应答,发送停止信号,读取1字节数据——第二种情况,如果是多字节接收,则最后一个字节不需应答,读取数据,最后一个字节接收前发送停止信号器件的寄存器地址(发送方)STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C13硬件I2C与软件I2C硬件I2C是指STM32内置的I2C外设模块。软件I2C是指通过软件模拟实现的I2C功能。1硬件I2C设备配置流程在STM32上,使用I2C外设需要进行相关的初始化和配置工作,以满足具体应用的需求。通过HAL库提供的高级API,开发者能够更便捷地实现I2C通信功能。STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C14硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。21.I2C初始化函数函数原型:HAL_StatusTypeDefHAL_I2C_Init(I2C_HandleTypeDefhI2C);应用范例:I2C_HandleTypeDefhI2C;if(HAL_I2C_Init(&hI2C)!=HAL_OK){Error_Handler();}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C15硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。32.I2C配置时钟和GPIO引脚函数函数原型:HAL_StatusTypeDefHAL_I2C_MspInit(I2C_HandleTypeDefhI2C);应用范例:voidHAL_I2C_MspInit(I2C_HandleTypeDefhI2C){//初始化时钟和GPIO引脚
//...}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C16硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。43.I2C主从模式配置函数函数原型:HAL_StatusTypeDefHAL_I2C_Master_Init(I2C_HandleTypeDefhI2C);HAL_StatusTypeDefHAL_I2C_Slave_Init(I2C_HandleTypeDefhI2C);应用范例:I2C_HandleTypeDefhI2C;...if(HAL_I2C_Master_Init(&hI2C)!=HAL_OK){Error_Handler();}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C17硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。54.I2C数据传输函数函数原型:HAL_StatusTypeDefHAL_I2C_Master_Transmit(I2C_HandleTypeDefhI2C,uint16_tDevAddress,uint8_tpData,uint16_tSize,uint32_tTimeout);HAL_StatusTypeDefHAL_I2C_Master_Receive(I2C_HandleTypeDefhI2C,uint16_tDevAddress,uint8_tpData,uint16_tSize,uint32_tTimeout);应用范例:I2C_HandleTypeDefhI2C;uint8_tdata_to_send=0xAA;uint8_tdata_received;if(HAL_I2C_Master_Transmit(&hI2C,device_address,&data_to_send,1,HAL_MAX_DELAY)!=HAL_OK){Error_Handler();}if(HAL_I2C_Master_Receive(&hI2C,device_address,&data_received,1,HAL_MAX_DELAY)!=HAL_OK){Error_Handler();}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C18硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。65.I2C中断和错误处理函数函数原型:voidHAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDefhI2C);voidHAL_I2C_ErrorCallback(I2C_HandleTypeDefhI2C);应用范例:voidHAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDefhI2C){//数据传输完成回调}voidHAL_I2C_ErrorCallback(I2C_HandleTypeDefhI2C){//错误处理代码}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C19硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。76.I2CDMA传输函数函数原型:HAL_StatusTypeDefHAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDefhI2C,uint16_tDevAddress,uint8_tpData,uint16_tSize);HAL_StatusTypeDefHAL_I2C_Master_Receive_DMA(I2C_HandleTypeDefhI2C,uint16_tDevAddress,uint8_tpData,uint16_tSize);应用范例:I2C_HandleTypeDefhI2C;uint8_tdata_to_send=0xAA;uint8_tdata_received;if(HAL_I2C_Master_Transmit_DMA(&hI2C,device_address,&data_to_send,1)!=HAL_OK){Error_Handler();}if(HAL_I2C_Master_Receive_DMA(&hI2C,device_address,&data_received,1)!=HAL_OK){Error_Handler();}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C20硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。87.I2C7位和10位地址模式配置函数函数原型:HAL_StatusTypeDefHAL_I2C_Enable10bitAddrMode(I2C_HandleTypeDefhI2C);HAL_StatusTypeDefHAL_I2C_Disable10bitAddrMode(I2C_HandleTypeDefhI2C);应用范例:I2C_HandleTypeDefhI2C;if(HAL_I2C_Enable10bitAddrMode(&hI2C)!=HAL_OK){Error_Handler();}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C21硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。98.I2C中断状态清除函数函数原型:HAL_StatusTypeDefHAL_I2C_ClearError(I2C_HandleTypeDefhI2C);应用范例:I2C_HandleTypeDefhI2C;if(HAL_I2C_ClearError(&hI2C)!=HAL_OK){Error_Handler();}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C22硬件I2C与软件I2C接口函数及其应用以下是HAL库中部分典型的I2C相关函数的格式和应用范例。109.I2C自定义错误回调函数函数原型:voidHAL_I2C_ErrorCallback(I2C_HandleTypeDefhI2C);应用范例:voidHAL_I2C_ErrorCallback(I2C_HandleTypeDefhI2C){//自定义错误处理代码}STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C23硬件I2C与软件I2C在STM32F103上通过软件模拟I2C通信协议实现I2C功能,需要通过GPIO口模拟I2C的时钟线(SCL)和数据线(SDA)。1教材6.3.3是一个简单的软件I2C初始化和数据传输的示例代码。使用的GPIO引脚:GPIOA_PIN_8对应SCL,GPIOA_PIN_9对应SDA。注意,此处使用开漏模式,因此务必在SCL和SDA上加合适的上拉电阻。一般而言,I2C速率越高,上拉电阻越小,功耗越大,故常选4.7kΩ的电阻。STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C24同步串行接口总线SPI与I2C——STM32的SPI及其应用要点SPI是个啥东东SPI是串行外设接口(SerialPeripheralInterface)的缩写,它是一种高速的、全双工同步通信总线,四线接口,它简单易用,如今越来越多的芯片集成了这种通信协议SPI以主从方式工作。这种模式通常有一个主设备和一个或多个从设备,一般需要4根线,单向传输时则只需要3根线。它们分别是——SDI(数据输入) ——主入从出——SDO(数据输出) ——主出从入——SCLK(时钟) ——由主设备产生——CS(片选,多芯片时) ——由主设备控制的从设备使能信号1SPI的工作原理——串行通讯协议数据是一位一位传输的。由SCLK提供时钟脉冲,SDI、SDO则基于此脉冲完成数据传输数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,完成一位数据传输;输入的原理也是如此。这样,通过8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输2STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C25同步串行接口总线SPI与I2C——STM32的SPI及其应用要点SPI的特点和特性——主设备通过对SCLK时钟线的控制可以完成对通讯的控制,因此允许随时暂停通信——SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出(双向)——不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档——SPI接口的一个缺点:有指定的流控制,没有应答机制确认是否接收到数据——SPI接口只适用于短距离通信3STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C26同步串行接口总线SPI与I2C——STM32的SPI及其应用要点STM32之SPI总线的基本特性STM32有多达3个SPI模块SPI1的4根引脚MISO、MOSI、SCK(CLK)、CSN(CS)分别对应的引脚为GPIOA的:PA6、PA7、PA5、PA4——3线全双工同步传输,8或16位传输帧格式选择——主或从操作,8个模式波特率分频系数,SPI速度达到了18MHz主模式和从模式均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变——可编程的时钟极性和相位,可编程的数据顺序——触发中断的专用发送和接受标志:SPI总线忙状态标志——支持可靠通信的硬件CRC——NSS(从设置选择),这是一个可选的管脚,用来选择主/从设置,他的功能是用来作为片选管脚,让主设备可以单独的与特定从设备通讯,避免数据线上的冲突。从设备的NSS管脚可以由主设备当做一个标准的IO来驱动,一旦被使能SSOE位,NSS管脚也可以作为输出管脚,并在SPI设置为主模式时拉低,此时所有NSS管脚连接到主设备NSS管脚的SPI设备,会检测到低电平,如果他们被设置NSS硬件模式,就会自动进入从设备状态4STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C27同步串行接口总线SPI与I2C——STM32的SPI及其应用要点STM32之SPI总线的使用要领——使能SPI外设时钟——使能被复用的GPIO的外设时钟。对于复用输出功能,端口必须配置成复用功能输出模式——设置被复用的GPIO为推挽输出。不能设置为开漏输出。设置成开漏输出时,示波器上看输出是锯齿波,而不是需要的方波——调用SPI_Init()以设置SPI的工作模式——通过SPI_Cmd()使能SPI——收发数据STM32之SPI的基本固件库函数SPI的库函数在stm32f10x_spi.c中定义、stm32f10x_spi.h中声明SPI和I2S功能很多是合在一起共用一个函数就SPI外设而言,其中最基本的是以下几个函数——SPI_Cmd()——SPI_Init()——SPI_I2S_ReceiveData()——SPI_I2S_SendData()5一般的SPI通信,通常只需这4个函数STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C28同步串行接口总线SPI与I2C——STM32的SPI及其应用要点STM32之SPI总线的时序配合——1STM32的SPI口的时序由以下两个位控制——CPHA ——CPOL
两个位一共有4种组合,也就是说SPI有4种时序,具体如何选择呢?这就取决于所用的外部设备的SPI驱动电路本章第一个范例使用的OLED12864液晶模块采用的驱动电路为SSD1306,经查阅它的SPI口的时序图可知,应该设置STM32的CPHA=1和CPOL=1它的意义为:SPI空闲保持高电平,在时钟的第2个边沿采样采用固件函数库,对这两个参数的设置如下,以保证主机和从机的CPOL和CPHA位相一致——SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;——SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;6SPI的相位PhaseSPI的极性PolaritySTM32单片机应用与全案例实践——同步串行接口总线SPI与I2C29同步串行接口总线SPI与I2C——STM32的SPI及其应用要点STM32之SPI总线的时序配合——2CPOL和CPHA,分别可以是0或1对应的四种组合就是:——Mode0 CPOL=0,CPHA=0——Mode1 CPOL=0,CPHA=1——Mode2 CPOL=1,CPHA=0——Mode3 CPOL=1,CPHA=16是不是容易懂了啊?STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C30同步串行接口总线SPI与I2C——STM32的SPI的应用实例向AT24C02按地址依次写入0~255,并将数据读出至缓冲区。功能配置与添加代码(1)配置RCC,选择外部高速晶振,同6.3节。(2)配置时钟树,设置系统时钟频率为72MHz,同6.3节。(3)配置Debug,同6.3节。(4)配置I2C外设。在Connectivity选项卡中,选择I2C1或其他要配置的I2C外设,在I2C配置选项中,启用I2C外设并进行相应的配置,如图6.19和图6.20所示。(5)配置GPIO引脚。在Pinout&Configuration选项卡中,选择Pinout,配置I2C的SDA和SCL引脚。为I2C选择适当的引脚,确保它们没有冲突,并配置成I2C功能,如图6.21所示。(6)工程生成,同6.3节。(7)添加代码。首先,在main.c文件中进行库函数声明,定义AT24C02的写地址和读地址,定义写数据数组和读数据数组等。1STM32单片机应用与全案例实践——同步串行接口总线SPI与I2C31同步串行接口总线SPI与I2C——STM32的SPI的应用实例基于SPI总线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年肿瘤患者科普知识课题研究报告
- 骨科护理质量管理与持续改进
- 2026年行测言语理解技巧与仿真题演练
- 2026年安全工程师考试高频考点集
- 妇产科护理中的骨盆骨折护理案例分析
- 发诊护理健康教育
- 叙事护理:疫情中的心理支持系统
- 2026年幼儿园语言冬爷爷的礼物
- 2026年民间游戏融入幼儿园课程
- 2026年幼儿园游戏课程神奇的车
- 2026年及未来5年市场数据中国固态硬盘(SSD)行业市场全景分析及投资规划建议报告
- 灌溉工程巡查培训课件
- 建筑工程标准化培训课件
- 数据讲故事与可视化【演示文档】
- 装配式活动板房安装安全技术交底
- (正式版)DB23∕T 3337-2022 《黑龙江省超低能耗居住建筑节能设计标准》
- 2025年贵州省辅警人员招聘考试题库及答案
- 2025年口腔医学专业考研试题及答案
- 【中考真题】2025年上海英语试卷(含听力mp3)
- 主播签约法律合同标准模板
- 《中国类风湿关节炎诊疗指南》(2025版)
评论
0/150
提交评论