There are 3.3V LCD modules, but most are 5V. They really need 5.0V and not 4.5V. The internal circuit inside is high impedance, so electrical noise can go right through the liquid crystal screen into the circuit behind it.
A 5V LCD display with a 3.3V STM32F103C8 will not work.
A flat ribbon cable with SDA next to SCL will cause trouble.
I suggest to lower the I2C impedance with pullup resistors to make the sink current close to 3mA. The sink current is the current that is required to make SDA or SCL low.
Can you show a photo of the wires and the I2C modules ?
Can you give links to the modules on the I2C bus (a link to where you bought them).
The Wire library for the AVR family boards has since recently a timeout in case of a I2C bus error. I don't know about the Wire library for the STM32 and I don't know how the overall compatibility with the Arduino Wire library is.