usart.c

Добавим функцию приема байта:

/*USARTx receive byte */
char usart_receiveb(USART_TypeDef * USART) {
    while ((USART->SR & USART_SR_RXNE) == 0);
    return USART->DR;
}

Функция принимает указатель на УСАПП, а возвращает символ принятый УСАППом. в функции есть ожидание окончания приема.