str_util.c

Добавим объявление внешней функции приема байта:

/* extern functions */
extern usart_sendb(USART_TypeDef * USART, char byte);
extern char usart_receiveb(USART_TypeDef * USART);

А также, создадим функцию прием строки в выделенный буфер:

/* USARTx receive string */
void usart_receives(USART_TypeDef * USART, char * buffer) {
    char * pbyte = buffer;
    char byte;
    while (byte = usart_receiveb(USART)) {
        usart_sendb(USART, byte);
        *pbyte++ = byte;
        if (byte == '\n' || byte == '\r')
            break;
    }
    *pbyte = '\0';
}

В этой функции мы будем принимать данные пока не получим символ окончания строки, либо символы перевода на новую строку.