大学生
最后登录1970-1-1
在线时间 小时
注册时间2013-5-2
|
楼主 |
发表于 2013-8-18 14:51:27
|
显示全部楼层
flyleaf 发表于 2013-8-18 13:09
每次发的数据不一样的话,你可以把你要发的数据更新到DMA的源地址变量里。
请问下,为什么用 I2C 的时候会经常在循环里死掉,一般都是在这段代码里死掉,以前是检查EV5,EV6的时候死掉,现在都是在第一局就死掉了
[code=c]static void I2C_MMA_ByteWrite(u8 pBuffer, u8 WriteAddr)
{
/*wait until I2C bus is not busy*/
while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY));
/* Send START condition */
I2C_GenerateSTART(I2C1, ENABLE);
/* Test on EV5 and clear it */
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
/* Send MMA address for write */
I2C_Send7bitAddress(I2C1, MMA_ADRESS, I2C_Direction_Transmitter);
/* Test on EV6 and clear it */
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
/* Send the MMA's Register address to write to */
I2C_SendData(I2C1, WriteAddr);
/* Test on EARM and clear it */
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
/* Send the byte to be written */
I2C_SendData(I2C1, pBuffer);
/* Test on EARM and clear it */
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
/* Send STOP condition */
I2C_GenerateSTOP(I2C1, ENABLE);
}[/code] |
|