I am developing a product that uses an STM32F103. I spent the last two days debugging the USART1 port due to multiple issues with the controlling SBC and the ARM GNU stdio lib.
I got everything working but it turns out that there is an undocumented feature with the RTS line. Even after I bypassed the HW bug with the CAN peripheral (that was documented in your errata sheet), it still would not raise the RTS line when its RDR register was full.
The only way I could get it to work was to change the RTS GPIO pin from an alternate function push-pull to an alternate function open drain output (and add an external pull-up resistor). Apparently your firmware does not support alternate function push-pull with this pin (though it does with the TX pin).
IMHO this lack of a feature should be documented in the errata sheet because the fix requires a PCB change :(
