初中生
最后登录1970-1-1
在线时间 小时
注册时间2016-9-13
|
程序会一直死在while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
- u8 IIC_ReadOneByte(u8 ReadAddr)
- {
- u8 temp;
- while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY));//等待总线空闲
- I2C_GenerateSTART(I2C1,ENABLE);//开始信号
- while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));//检测EV5事件并清除标志
- I2C_Send7bitAddress(I2C1,IIC_RomAddr,I2C_Direction_Transmitter); //发送设备地址+写信号
- while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//检测EV6事件并清除标志
- I2C_SendData(I2C1,ReadAddr);//发送数据地址
- while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));//检测EV8事件并清除标志
- I2C_GenerateSTART(I2C1,ENABLE);//开始信号
- while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));//检测EV5事件并清除标志
- I2C_Send7bitAddress(I2C1,IIC_RomAddr,I2C_Direction_Receiver); //发送设备地址+读信号
- while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));//检测EV6事件并清除标志
-
- I2C_AcknowledgeConfig(I2C1,DISABLE);//发送非应答信号
- I2C_GenerateSTOP(I2C1,ENABLE);//停止信号
-
- if(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED))//检测EV8事件并清除标志
- {
- temp=I2C_ReceiveData(I2C1);//接收数据
- }
- I2C_AcknowledgeConfig(I2C1,ENABLE);//使能应答
- return temp;
- }
复制代码
|
|