|
void I2C_Init(CLKn clkn,uint32 baudrate,uint16 slave_add)
{
P1SEL|=BIT6+BIT7;
P1SEL2|=BIT6+BIT7;//配置端口第二功能
UCB0CTL1|=UCSWRST;//软件复位
UCB0CTL0=UCMST+UCMODE_3+UCSYNC;//主模式、IIC模式、同步模式
UCB0CTL1=UCSSEL_2+UCSWRST;//选择SMCLK
UCB0BR0=12;//分频系数的设置
UCB0BR1=0;
UCB0I2CSA =slave_add;//默认为7位地址模式,将传进来的地址右移一位
UCB0CTL1 &= ~UCSWRST; //清除复位标志
}
void I2C_writebyte(uint8 REG_add,uint8 REG_data)
{
while (UCB0CTL1 & UCTXSTP); // Ensure stop condition got sent
UCB0CTL1|=UCTR+UCTXSTT;//发送模式、生成起始信号
while(~IFG2&UCB0TXIFG);//等待发送完成
UCB0TXBUF=REG_add;
while(~IFG2&UCB0TXIFG);//等待发送完成 -------------->>>每次都卡在这句
UCB0TXBUF=REG_data;
while(~IFG2&UCB0TXIFG);
UCB0CTL1 |= UCTXSTP; // I2C stop condition
IFG2 &= ~UCB0TXIFG; // Clear USCI_B0 TX int flag
}
初始化和发送程序,求大家看一下有什么不对的。。
单步调试,总是卡在I2C_writebyte第二个的 while(~IFG2&UCB0TXIFG);
|
|