版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IIC(InterIntegrated Circuit)总线是一种由总线是一种由 PHILIPS 公司公司开发的开发的两线式串行总线两线式串行总线,用于,用于连接微控制器及其外围设备连接微控制器及其外围设备。I2C 总线在传送数据过程中共有总线在传送数据过程中共有三种类型信号三种类型信号, 分别分别是:是:开始信号、结束信号和应答信号开始信号、结束信号和应答信号。这些。这些信号中,起始信号信号中,起始信号是必需的,结束信号和应答信号,都可以不要。是必需的,结束信号和应答信号,都可以不要。I 2 C总线协议总线协议应用于小数据量场合应用于小数据量场合同一时刻只能有一个主机同一时刻只能有一个主机I
2、2C总线接口内部等效电路总线接口内部等效电路I2C总线拓扑结构图总线拓扑结构图(1读读/0写)写)主设备发出主设备发出主设备发出主设备发出从设备发出从设备发出从设备发出从设备发出主设备主设备主设备主设备从设备从设备从设备从设备主写从主写从主读从主读从数据收发数据收发时钟逻辑时钟逻辑逻辑控制逻辑控制片选信号片选信号被被选芯片内单元地址信号选芯片内单元地址信号在主模式时,在主模式时,I2C接口接口启动数据传输并产生时钟信号启动数据传输并产生时钟信号。串行数据传输总是。串行数据传输总是以起以起始条件开始并以停止条件结束始条件开始并以停止条件结束。当通过。当通过START位在总线上产生了起始条件,设位
3、在总线上产生了起始条件,设备就进入了主模式。备就进入了主模式。 以下是主模式所要求的操作顺序:以下是主模式所要求的操作顺序: 在在I2C_CR2寄存器中设定该模块的输入时钟以产生正确的时序寄存器中设定该模块的输入时钟以产生正确的时序 配置时钟控制配置时钟控制寄存器寄存器(I2C_CCR) 配置上升时间寄存器配置上升时间寄存器 (I2C_TRISE) 编程编程I2C_CR1寄存器启动外设寄存器启动外设 置置I2C_CR1寄存器中的寄存器中的START位为位为1,产生起始条件,产生起始条件 I2C模块的输入时钟频率模块的输入时钟频率必须至少是必须至少是: 标准模式下为:标准模式下为:2MHz 快速
4、模式下为:快速模式下为:4MHz 说明说明:S=Start(起始条件起始条件),Sr=重复的起始条件,重复的起始条件,P=Stop(停止条件停止条件),A=响应,响应,NA=非响应,非响应, EVx=事件事件(ITEVFEN=1时产生中断时产生中断)。 EV5:SB=1,读,读SR1然后将地址写入然后将地址写入DR寄存器将清除该事件。寄存器将清除该事件。 EV6:ADDR=1,读,读SR1然后读然后读SR2将清除该事件。将清除该事件。 EV8_1:TxE=1,移位寄存器空,数据寄存器空,写,移位寄存器空,数据寄存器空,写DR寄存器。寄存器。 EV8:TxE=1,移位寄存器非空,数据寄存器空,写
5、入,移位寄存器非空,数据寄存器空,写入DR寄存器将清除该事件。寄存器将清除该事件。 EV8_2:TxE=1,BTF=1,请求设置停止位。,请求设置停止位。TxE和和BTF位由硬件在产生停止条件时清除。位由硬件在产生停止条件时清除。 EV9:ADDR10=1,读,读SR1然后写入然后写入DR寄存器将清除该事件。寄存器将清除该事件。 说明:说明:S=Start(起始条件起始条件),Sr=重复的起始条件,重复的起始条件,P=Stop(停止条件停止条件),A=响应,响应,NA=非响应,非响应, EVx=事件事件(ITEVFEN=1时产生中断时产生中断) EV5:SB=1,读,读SR1然后将地址写入然后
6、将地址写入DR寄存器将清除该事件寄存器将清除该事件。EV6:ADDR=1,读,读SR1然后读然后读SR2将清除该事件。在将清除该事件。在10位主接收模式下,该事件后应设置位主接收模式下,该事件后应设置CR2的的START=1。EV6_1:没有对应的事件标志,只适于接收:没有对应的事件标志,只适于接收1个字节的情况。恰好在个字节的情况。恰好在EV6之后之后(即清除了即清除了ADDR之后之后),要清除响应和停止条件的产生位。,要清除响应和停止条件的产生位。 EV7:RxNE=1,读,读DR寄存器清除该事件。寄存器清除该事件。 EV7_1:RxNE=1,读,读DR寄存器清除该事件。设置寄存器清除该事
7、件。设置ACK=0和和STOP请求请求。EV9:ADDR10=1,读,读SR1然后写入然后写入DR寄存器将清除该事件。寄存器将清除该事件。默认默认情况下,情况下,I2C接口接口总是总是工作在从模式工作在从模式。从从模式。从从模式切换到主模式,切换到主模式,需要产生一个起始条件需要产生一个起始条件。 为了产生正确的时序,必须在为了产生正确的时序,必须在I2C_CR2寄存器中设定该模块的输入寄存器中设定该模块的输入时钟。时钟。输入时钟的频率输入时钟的频率必须至少是:必须至少是: 标准模式下为:标准模式下为:2MHz 快速模式下为:快速模式下为:4MHz 一旦检测到起始条件,在一旦检测到起始条件,在
8、SDA线上接收到的地址被送到移位寄存器。线上接收到的地址被送到移位寄存器。然后与芯片自己的地址然后与芯片自己的地址OAR1和和OAR2(当当ENDUAL=1OAR2)或者广或者广播呼叫地址播呼叫地址(如果如果ENGC=1CR1)相比较。相比较。 说明:说明:S=Start(起始条件起始条件),S r =重复的起始条件,重复的起始条件,P=Stop(停止条件停止条件),A=响应,响应,NA=非响应,非响应,EVx=事件事件(ITEVFEN=1时产生中断时产生中断)EV1:ADDR=1,读,读SR1然后读然后读SR2将清除该事件。将清除该事件。EV3-1:TxE=1,移位寄存器空,数据寄存器空,写
9、,移位寄存器空,数据寄存器空,写DR。EV3:TxE=1,移位寄存器非空,数据寄存器空,写,移位寄存器非空,数据寄存器空,写DR将清除该事件。将清除该事件。EV3-2:AF=1,在,在SR1寄存器的寄存器的AF位写位写0可清除可清除AF位。位。说明:说明:S=Start(起始条件起始条件),Sr=重复的起始条件,重复的起始条件,P=Stop(停止条件停止条件),A=响应,响应,NA=非响应,非响应, EVx=事件事件(ITEVFEN=1时产生中断时产生中断) EV1:ADDR=1,读,读SR1然后读然后读SR2将清除该事件。将清除该事件。 EV2:RxNE=1,读,读DR将清除该事件。将清除该
10、事件。 EV4:STOPF=1,读,读SR1然后写然后写CR1寄存器将清除该事件。寄存器将清除该事件。 ITEVTENITEVTEN和ITBUFENITEVFENITERRENER 10.6.1 I2C常用库函数常用库函数 10.6.1 I2C常用库函数常用库函数I2C_DeInit(I2C2) 10.6.1 I2C常用库函数常用库函数I2C_DeInit()I2C_Init(I2C2) 10.6.1 I2C常用库函数常用库函数I2C_Init()typedef structu16 I2C_Mode;u16 I2C_DutyCycle;u16 I2C_OwnAddress1;u16 I2C_A
11、ck;u16 2C_AcknowledgedAddress;u32 I2C_ClockSpeed; I2C_InitTypeDef; 10.6.1 I2C常用库函数常用库函数I2C_InitTypeDef注意:注意:该参数只有在该参数只有在 I2C 工作在快速模式(时钟工作频工作在快速模式(时钟工作频率高于率高于 100KHz)下才有意义。)下才有意义。 10.6.1 I2C常用库函数常用库函数I2C_InitTypeDef 10.6.1 I2C常用库函数常用库函数I2C_InitTypeDef 10.6.1 I2C常用库函数常用库函数I2C_Init()示例示例u32 Event;Event
12、 = I2C_GetLastEvent(I2C1);实验:利用实验:利用STM32的的2个个I2C进行数据交换,并通过串口查看交换的结果。进行数据交换,并通过串口查看交换的结果。程程序流程序流程及及硬件电路硬件电路如下图所示。如下图所示。(令令I2C1为主机、为主机、I2C2为从机为从机)GPIOB.7I2C1_SDA;GPIOB.7I2C1_SDA;GPIOB.6I2C1_SCLGPIOB.6I2C1_SCLGPIOB.11I2C2_SDA;GPIOB.11I2C2_SDA;GPIOB.10I2C2_SCLGPIOB.10I2C2_SCLint main(void)/* 设置系统时钟设置系统
13、时钟 */RCC_Configuration();/* 设置设置 NVIC */NVIC_Configuration();/* 设置设置GPIO端口端口 */GPIO_Configuration();/* 设置设置USART */USART_Configuration();/* 设置设置 IIC */I2C_Configuration();/* I2C1产生开始条件产生开始条件 */I2C_GenerateSTART(I2C1, ENABLE);while(1);void RCC_Configuration(void)/* 开启开启 I2C1、I2C2 设备时钟设备时钟 */RCC_APB1P
14、eriphClockCmd(RCC_APB1Periph_I2C1 | RCC_APB1Periph_I2C2, ENABLE);/* 开启开启 GPIOA、GPIOB和和 USART 设备时钟设备时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);void GPIO_Configuration(void)/* 定义定义 GPIO 初始化结构体初始化结构体 GPIO_InitStructure */
15、GPIO_InitTypeDef GPIO_InitStructure;/* 配置配置 I2C1 设备的引脚为复用开漏模式设备的引脚为复用开漏模式 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;GPIO_Init(GPIOB, &GPIO_InitStructure);/* 配置配置 I2C2 设备的引脚为复用开漏模式设备的引脚为复
16、用开漏模式 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;GPIO_Init(GPIOB, &GPIO_InitStructure);/* 配置配置 USART 设备引脚设备引脚 *GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GP
17、IO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);void I2C_Configuration(void) /* 定义定义 I2C 初始化结构体初始化结构体 I
18、2C_InitStructure */ I2C_InitTypeDef I2C_InitStructure; I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; /I2C模式模式; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;/占空比占空比50%; /本地地址(本地地址(0 x30) I2C_InitStructure.I2C_OwnAddress1 = I2C1_SLAVE_ADDRESS7; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;/使能应答使能应答; /
19、应答应答7位地址位地址; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 200000;/速率速率200K; I2C_Init(I2C1, &I2C_InitStructure);I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;I2C_InitStructure.I2C_OwnAddr
20、ess1 = I2C2_SLAVE_ADDRESS7;I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;I2C_InitStructure.I2C_ClockSpeed = 200000;I2C_Init(I2C2, &I2C_InitStructure);/* 开启开启I2C1、I2C2 的事件、缓存中断的事件、缓存中断 */I2C_ITConfig(I2C1, I2C_IT_EVT | I2C_IT_B
21、UF, ENABLE);I2C_ITConfig(I2C2, I2C_IT_EVT | I2C_IT_BUF, ENABLE);/* 使能使能I2C1、I2C2 接口接口 */I2C_Cmd(I2C1, ENABLE);I2C_Cmd(I2C2, ENABLE);void NVIC_Configuration(void)/* 定义定义 NVIC 初始化结构体初始化结构体 NVIC_InitStructure */NVIC_InitTypeDef NVIC_InitStructure;/* 选择选择 NVIC 优先级分组优先级分组1 */NVIC_PriorityGroupConfig(NVIC
22、_PriorityGroup_1);/* 设置并使能设置并使能 I2C1 中断中断 */NVIC_InitStructure.NVIC_IRQChannel = I2C1_EV_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* 设置并使能设置并
23、使能 I2C2 中断中断 */ NVIC_InitStructure.NVIC_IRQChannel = I2C2_EV_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);void USART_Configuration(void) /* 定义定义U
24、SART初始化结构体初始化结构体 USART_InitStructure */ USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_In
25、itStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1 , &USART_InitStructure); /* 使能使能USART1 */ USART_Cmd(USART1 , ENABLE);int fputc(int ch, FILE *f) USART_SendData(USART1, (u8) ch); while(USART_G
26、etFlagStatus(USART1, USART_FLAG_TC) = RESET); return ch;void I2C1_EV_IRQHandler(void) switch (I2C_GetLastEvent(I2C1) case I2C_EVENT_MASTER_MODE_SELECT: /* 已发送起始已发送起始条件条件EV5 */ /* 发送从机地址发送从机地址 */ I2C_Send7bitAddress(I2C1, I2C2_SLAVE_ADDRESS7, I2C_Direction_Transmitter); break; case I2C_EVENT_MASTER_T
27、RANSMITTER_MODE_SELECTED: /* 从机地址已发送从机地址已发送 EV6*/ /* 发送第一个数据发送第一个数据 */ printf(rn The I2C1 has send data 0 x0%xrn, I2C1_Buffer_TxRx_Idx); I2C_SendData(I2C1, I2C1_Buffer_TxTx_Idx+); break; case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* 第一个数据已发送第一个数据已发送 EV8*/ if(Tx_Idx BufferSize) /* 继续发送剩余数据继续发送剩余数据. . */
28、 printf(rn The I2C1 has send data 0 x0%xrn, I2C1_Buffer_TxRx_Idx); I2C_SendData(I2C1, I2C1_Buffer_TxTx_Idx+); else I2C_GenerateSTOP(I2C1, ENABLE);/*剩余数据发送完毕,发送结束条件剩余数据发送完毕,发送结束条件 */ I2C_ITConfig(I2C1, I2C_IT_EVT | I2C_IT_BUF, DISABLE); /* 禁止禁止 I2C1 中断中断*/ break; default: break; void I2C2_EV_IRQHandl
29、er(void) switch (I2C_GetLastEvent(I2C2) /* 收到匹配的地址数据收到匹配的地址数据 EV1*/ case I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED: break; case I2C_EVENT_SLAVE_BYTE_RECEIVED: /* 收到收到数据数据EV2 */ if (Rx_Idx 250)IIC_Stop();return 1;IIC_SCL=0;/时钟输出时钟输出 0return 0;/产生产生 ACK 应答应答void IIC_Ack(void)IIC_SCL=0;SDA_OUT();IIC_SDA
30、=0;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0;/不产生不产生 ACK 应答应答 void IIC_NAck(void)IIC_SCL=0;SDA_OUT();IIC_SDA=1;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0; /IIC 发送一个字节发送一个字节/返回从机有无应答返回从机有无应答/1,有应答,有应答/0,无应答,无应答void IIC_Send_Byte(u8 txd)u8 t;SDA_OUT();IIC_SCL=0;/拉低时钟开始数据传输拉低时钟开始数据传输for(t=0;t7;txd=1
31、;/对对 TEA5767 这三个延时都是必须的这三个延时都是必须的delay_us(2); IIC_SCL=1;delay_us(2);IIC_SCL=0;delay_us(2); /读读 1 个字节个字节,ack=1 时,发送时,发送 ACK,/ack=0,发送,发送 nACKu8 IIC_Read_Byte(unsigned char ack)unsigned char i,receive=0;SDA_IN();/SDA 设置为输入设置为输入for(i=0;i8;i+ )IIC_SCL=0;delay_us(2);IIC_SCL=1;receiveCRH&=0XFFFF0FFF;G
32、PIOB-CRH|=8CRH&=0XFFFF0FFF;GPIOB-CRH|=3AT24C16)IIC_Send_Byte(0XA0); /发送写命令发送写命令IIC_Wait_Ack();IIC_Send_Byte(ReadAddr8);/发送高地址发送高地址 else IIC_Send_Byte(0XA0+(ReadAddr/256)AT24C16)IIC_Send_Byte(0XA0); /发送写命令发送写命令IIC_Wait_Ack();IIC_Send_Byte(WriteAddr8);/发送高地址发送高地址 else IIC_Send_Byte(0XA0+(WriteAddr
33、/256)1); /发送器件地址发送器件地址 0XA0,写数据写数据IIC_Wait_Ack(); IIC_Send_Byte(WriteAddr%256); /发送低地址发送低地址IIC_Wait_Ack();IIC_Send_Byte(DataToWrite); /发送字节发送字节IIC_Wait_Ack();IIC_Stop();/产生一个停止条件产生一个停止条件delay_ms(10);/在在 AT24CXX 里面的指定地址开始写入长度里面的指定地址开始写入长度为为 Len 的数据的数据/该函数用于写入该函数用于写入 16bit 或者或者 32bit 的数据的数据./WriteAddr
34、 :开始写入的地址开始写入的地址/DataToWrite:数据数组首地址数据数组首地址/Len :要写入数据的长度要写入数据的长度 2,4void AT24CXX_WriteLenByte(u16 WriteAddr,u32 DataToWrite,u8 Len)u8 t;for(t=0;t(8*t)&0 xff); /在在 AT24CXX 里面的指定地址开始读出长度里面的指定地址开始读出长度为为 Len 的数据的数据/该函数用于读出该函数用于读出 16bit 或者或者 32bit 的数据的数据./ReadAddr :开始读出的地址开始读出的地址/返回值返回值 :数据数据/Len :要
35、读出数据的长度要读出数据的长度 2,4u32 AT24CXX_ReadLenByte(u16 ReadAddr,u8 Len)u8 t;u32 temp=0;for(t=0;tLen;t+)temp=8;temp+=AT24CXX_ReadOneByte(ReadAddr+Len-t-1);return temp; /检查 AT24CXX 是否正常/这里用了 24XX 的最后一个地址(255)来存储标志字./如果用其他 24C 系列,这个地址要修改/返回 1:检测失败/返回 0:检测成功u8 AT24CXX_Check(void)u8 temp;temp=AT24CXX_ReadOneByte
36、(255);/避免每次开机都写 AT24CXX if(temp=0X55)return 0; else/排除第一次初始化的情况AT24CXX_WriteOneByte(255,0X55);temp=AT24CXX_ReadOneByte(255);if(temp=0X55)return 0;return 1;/在 AT24CXX 里面的指定地址开始读出指定个数的数据/ReadAddr :开始读出的地址 对 24c02 为 0255/pBuffer :数据数组首地址/NumToRead:要读出数据的个数void AT24CXX_Read(u16 ReadAddr,u8 *pBuffer,u16
37、NumToRead)while(NumToRead)*pBuffer+=AT24CXX_ReadOneByte(ReadAddr+);NumToRead-;/在 AT24CXX 里面的指定地址开始写入指定个数的数据/WriteAddr :开始写入的地址 对 24c02 为 0255/pBuffer :数据数组首地址/NumToWrite:要写入数据的个数void AT24CXX_Write(u16 WriteAddr,u8 *pBuffer,u16 NumToWrite)while(NumToWrite-)AT24CXX_WriteOneByte(WriteAddr,*pBuffer);Wri
38、teAddr+;pBuffer+;const u8 TEXT_Buffer=Warship STM32 IIC TEST ;#define SIZE sizeof(TEXT_Buffer)int main(void)u8 key;u16 i=0;u8 datatempSIZE;delay_init(); /延时函数初始化 NVIC_Configuration(); /设置 NVIC 中断分组 2:2 位抢占优先级,2 位响应优先级uart_init(9600); /串口初始化为 9600KEY_Init();LED_Init(); /LED 端口初始化LCD_Init(); AT24CXX_I
39、nit(); /IIC 初始化该段代码,我们通过该段代码,我们通过 KEY_UP(WK_UP)按键来控制)按键来控制 24C02 的写入,通过另外一个按的写入,通过另外一个按键键KEY1(KEY_DOWN)来控制来控制 24C02 的读取。并在的读取。并在 LCD 模块上面显示相关信息。模块上面显示相关信息。POINT_COLOR=RED;/设置字体为红色LCD_ShowString(60,50,200,16,16,Mini STM32);LCD_ShowString(60,70,200,16,16,IIC TEST);LCD_ShowString(60,90,200,16,16,ATOMALIENTEK);LCD_ShowString(60,110,200,16,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 展览会配电箱供电方案
- 非营利组织安全培训方案
- VR游戏广告合同
- 《分期工资协议》
- 航空航天行业复合材料加热炉合同
- 跨境电商数据分析咨询协议书
- 家长网络监控与教育方案
- 核电行业特种作业人员管理制度
- 教育信息化设备使用与管理办法
- 金融行业高可用服务器解决方案
- 2023-2024学年北京朝阳区高三(上)期中地理试题及答案
- 江苏省连云港市海州区新海初级中学2023-2024学年七年级上学期期中数学试题
- 污水处理厂冬季安全生产基础知识
- 完整版八、施工现场总平面布置图
- 分析化学期中考试试题
- 新外研版高二英语选择性必修二Unit3-A-new-chapter课件(精编)
- 浙江省杭州市余杭区树兰中学2023--2024学年上学期九年级期中数学试卷
- 领导考察谈话怎么评价领导
- 叶片气动特性快速计算桨距角的改进算法
- 幼儿园优质公开课:小班科学《奇妙的声音》课件
- 2023非心脏外科手术围手术期心血管疾病管理中国专家共识(完整版)
评论
0/150
提交评论