While adding interrupt driven buffers improves both the performance and reliability of data transmission, it is not sufficient to prevent buffer overrun and hence loss of data. In this section we discuss the use of two additional signals RTS (request to send) and CTS (clear to send) which may be used to enable “hardware flow” control. These signals are present on both the usb-uart bridge (assuming you are using one that exposes them) and the STM32. In practice nRTS (nCTS) from the STM32 is connected to nCTS (nRTS) of the usb-usrt bridge. When the STM32 is prepared to receive data it activates (makes zero) nRTS and when it wants to stop receiving data it raises nRTS. Similarly, the usb-uart bridge will use its nRTS (connected to the STM32