Как записать буфер в последовательный коммуникационный интерфейс
Привет всем, у меня есть функция считывания данных с uart, которая является :
void serial_read_appConfig(uint8_t *buffer, uint8_t noOfBytes) { uint8_t i = 0; uint8_t temp = 0, rxDec; while (i != noOfBytes*2) { rxDec = asciiToDecConverter(sio2host_getchar()); if (i%2 == 0) temp = rxDec << 4; else if (i%2 != 0) buffer[i/2] = temp + rxDec; if (rxDec != 255) i++; // increment count only when receiving a valid hex value from 0-F } } uint8_t asciiToDecConverter(uint8_t input) { uint8_t decVal = -1; if (input >= 48 && input <= 57) decVal = input - 48; // decimal values between 1 and 9 else if (input >= 65 && input <= 70) decVal = input - 55; // hex values between A and F else if (input >= 97 && input <= 102) decVal = input - 87; // hex values between a and f return decVal; }
Что я уже пробовал:
Как я могу аналогично написать функцию для записи буфера в uart
Я не в состоянии понять возврат цикла while в программе,
Также функция getchar возвращает значение.
Но функция для чтения putchar не имеет возвращаемого значения.
void sio2host_putchar(uint8_t ch) { sio2host_tx(&ch, 1); } uint8_t sio2host_getchar(void) { uint8_t c; while (0 == sio2host_rx(&c, 1)) { } return c; }У меня есть функция для преобразования значения из
Dectoasciiconverter(char ch);
Но я не могу понять , как использовать такую функцию, как
serial_write_app_config().
если у кого-то есть идея, пожалуйста, предоставьте предложения о том, как написать эту функцию.
Это было бы очень полезно
Ваше здоровье!