|
最近遇到I2C通信的时候,有时候程序运行卡死在 while((UCB1IFG & UCTXIFG)==0);在这个循环中跳不出来导致整个程序死掉,但是重启或者重新下载程序以后又没有这个问题了,不知道这是什么原因。求帮忙分析下
void Random_read1(unsigned char Address)
{
while (UCB1CTL1 & UCTXSTP); // Ensure stop condition got sent
UCB1CTL1 |= UCTXSTT + UCTR; // 发送起始位,确定为写
UCB1TXBUF = Address; // 发送址位
while((UCB1IFG & UCTXIFG)==0); // 判断是否发送完毕
UCB1CTL1 &= ~UCTR; // 确定为接收
while (UCB1CTL1 & UCTXSTP); // 判断总线是否被释放
UCB1CTL1 |=UCTXSTT; // 重新发送起始位
while((UCB1CTL1 & UCTXSTT)==1); // 判断起始位是否发送成功
for(unsigned char i=0x0;i<0x2f;i++); // 延时确定数据已经被发送出去
UCB1CTL1 |=UCTXSTP + UCTXNACK; // 发送停止位和NACK位
}
|
|