First of all, check the USB-UART adapter in loop back, just to better isolate the problem.
I don't know if there are fake FT230 around, might that be the case (knowing past history of "picky" FTDI drivers)?
There should be no need for pull-ups, if I read correctly the
FT230 blurb (just regular inputs and outputs), but I don't think they cause any harm (at slow baud rates, at least).
Are you using interrupts, DMA or plain blocking calls?
Are you are using the HAL, or just the init code from CubeMX?
Is the MCU correctly clocked? Try toggling a pin at, say, 1kHz (using a timer or Systick) and check it on the scope for the correct frequency.
Is the MCU receiving correctly? You could try toggling a LED/pin when a specific character sequence is received.
Is the MCU sending correctly? You could try repeatedly sending a string to the PC.
Without seeing the code (and maybe the HW) there's not much more that can be said.