Добавим объявление внешней функции приема байта:
/* 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';
}
В этой функции мы будем принимать данные пока не получим символ окончания строки, либо символы перевода на новую строку.