void Usart_Init()
{
    usart.tty             = USART_CHANNEL_0;
    usart.mode            = USART_MODE_ASYNC;
    usart.baudrate        = USART_BAUDRATE_19200;
    usart.dataLength      = USART_DATA8;
    usart.parity          = USART_PARITY_NONE;
    usart.stopbits        = USART_STOPBIT_1;
    usart.rxBuffer        = Rx_Buffer;
    usart.rxBufferLength  = RX_BUFFER_SIZE;
    usart.txBuffer        = NULL;
    usart.txBufferLength  = 0;
    usart.rxCallback      = usartRcvd;
    usart.txCallback      = NULL;
    usart.flowControl     = USART_FLOW_CONTROL_NONE;

    HAL_OpenUsart(&usart);
}
void init_usart(void)
{
    // Define Usart Descriptor 
    usart_descriptor.tty = USART_CHANNEL;
    usart_descriptor.mode = USART_MODE_ASYNC;
    usart_descriptor.flowControl = USART_FLOW_CONTROL_NONE;
    usart_descriptor.baudrate = USART_BAUDRATE_38400;
    usart_descriptor.dataLength = USART_DATA8;
    usart_descriptor.parity = USART_PARITY_NONE;
    usart_descriptor.stopbits = USART_STOPBIT_1;
    usart_descriptor.rxBuffer = rx_buffer;
    usart_descriptor.rxBufferLength = sizeof(rx_buffer);
    usart_descriptor.txBuffer = NULL;
    usart_descriptor.txBufferLength = 0;
    usart_descriptor.rxCallback = recv_bytes;
    usart_descriptor.txCallback = write_bytes;

    HAL_OpenUsart(&usart_descriptor);
    offset_rx_buffer = 0    ;
    usart_tx_busy = false;
    new_data_on_buffer = false;
//    test = true;
}