STM32 USART synchronous mode receive does not work
Wait for TXE before transmitting
Wait for RXNE instead of monitoring the BUSY bit before reading the answer. Waiting on BUSY that way might fail when an interrupt comes at the wrong time, and the data might not yet be transferred to the data register when BUSY goes to 0.
Check CPOL and CPHA, it might be sampling the input at the wrong time