三不沾 发表于 2020-1-7 10:52
你好想问下 我用的函数是i2cSend
然后一直卡在while ((i2c->STR & (uint32)I2C_TX_INT) == 0U) ...
再次回复,因为I2C_TX_INT = 16(可以查看定义),所以while()的意义在于查看i2c->STR第四位 即TXRDY位的值,通过查看数据手册,TXRDY = 1,代表数据发送寄存器I2CDXR为空(上一个数据已发送),=0代表 上一个数据仍未发送。所以当前数据无法发送。
总结:卡在这里的原因是上一个数据未发送,所以您需要检查从机地址、发送模式等,具体参考HAL->help->example->您使用的芯片文件夹->i2c*.c。