Добавим функцию приема байта:
/*USARTx receive byte */
char usart_receiveb(USART_TypeDef * USART) {
while ((USART->SR & USART_SR_RXNE) == 0);
return USART->DR;
}
Функция принимает указатель на УСАПП, а возвращает символ принятый УСАППом. в функции есть ожидание окончания приема.