use semaphore to handle usart tx