大佬,我一直卡在检测状态标志位是怎么回事,求回复!以下是我的源码
void mt30d_transfer_data(uint8_t addr,uint8_t data_len,uint8_t* data)
{
uint8_t i;
//设置从机地址和执行写操作
i2c_master_addressing(I2C1, addr, I2C_MASTER_TRANSMIT);
//设置写的数据字节数
i2c_transfer_byte_number_config(I2C1,data_len);
//等待总线空闲
while(i2c_flag_get(I2C1, I2C_FLAG_I2CBSY));
//发送start信号
i2c_start_on_bus(I2C1);
//等待数据寄存器空
I2C_STAT(I2C1) |= I2C_STAT_TBE;
while(!i2c_flag_get(I2C1, I2C_FLAG_TBE));
//开始向寄存器中写入数据
for(i=0;i<data_len;i++){
i2c_data_transmit(I2C1,*( data+i));
//等待数据寄存器空
while(!i2c_flag_get(I2C1, I2C_FLAG_TI));
}
//等待发送完成
while(!i2c_flag_get(I2C1, I2C_FLAG_TC));
//发送stop信号
i2c_stop_on_bus(I2C1);
while(!i2c_flag_get(I2C1, I2C_FLAG_STPDET));
i2c_flag_clear(I2C1, I2C_FLAG_STPDET);
}