Estoy usando un STM32F103CBT6 como I2C Master. Después de enviar la dirección I2C del esclavo, necesito borrar el bit de Addr en el registro SR1. Los estados de la hoja de datos:
"DIRECCIÓN: dirección enviada (modo maestro) / coincidente (modo esclavo) Este bit es borrado por el software que lee el registro SR1 seguido por la lectura SR2 "
Por lo tanto, tengo dos líneas después de que el bucle de espera ocupado busque el bit como este:
uint16_t a = I2C1->SR1;
uint16_t b = I2C1->SR2;
Esto funciona bien y el compilador no optimizará las lecturas, ya que los registros se declaran como volatile
, pero me advierte que las dos variables nunca se leen y, por lo tanto, son inútiles. Me gustaría deshacerme de estas advertencias. ¿Se garantiza que funcione, cuando cambie las líneas de esta manera?
I2C1->SR1;
I2C1->SR2;
¿O debería borrar el bit manualmente sin leer SR2 alguna vez?
Gracias de antemano