// I2C initialization using CMSIS
I2C1->CR1 |= I2C_CR1_PE;
I2C1->CR2 |= (36 << I2C_CR2_FREQ_Pos);
I2C1->CCR = 180;
I2C1->TRISE = 37;
// Sending and reading I2C data
I2C1->DR = (VL53L0X_ADDR << 1);
while (!(I2C1->SR1 & I2C_SR1_TXE)) {}
I2C1->DR = REG_COMMAND;
while (!(I2C1->SR1 & I2C_SR1_RXNE)) {}
uint8_t response = I2C1->DR;
// I2C initialization using CMSIS
I2C1->CR1 |= I2C_CR1_PE;
I2C1->CR2 |= (36 << I2C_CR2_FREQ_Pos);
I2C1->CCR = 180;
I2C1->TRISE = 37;
// Sending and reading I2C data
I2C1->DR = (VL53L0X_ADDR << 1);
while (!(I2C1->SR1 & I2C_SR1_TXE)) {}
I2C1->DR = REG_COMMAND;
while (!(I2C1->SR1 & I2C_SR1_RXNE)) {}
uint8_t response = I2C1->DR;