Что в этом хорошего ?
tmphead0 = ( UART_TxHead0 + 1 ) & UART_TX_BUFFER_MASK0;
while ( tmphead0 == UART_TxTail0 ) continue;
UART_TxBuf0[tmphead0] = data0;
UART_TxHead0 = tmphead0;
Как теперь можно определить количество данных в буфере (кольцевом)?
По разнице смещений ? Вот уроды.