/* param base UART peripheral base address. param handle UART handle pointer. param callback The callback function. param userData The parameter of the callback function.  */
void UART_TransferCreateHandle(UART_Type *base, uart_handle_t *handle, uart_transfer_callback_t callback, void *userData)
/* param base UART peripheral base address. param handle UART handle pointer. param callback The callback function. param userData The parameter of the callback function.  */
void UART_TransferCreateHandle(UART_Type *base, uart_handle_t *handle, uart_transfer_callback_t callback, void *userData)
{
    assert(handle);
    uint32_t instance;
    memset(handle, 0, sizeof(*handle));
    handle->rxState = kUART_RxIdle;
    handle->txState = kUART_TxIdle;
    handle->callback = callback;
    handle->userData = userData;
    instance = UART_GetInstance(base);
    s_uartHandle[instance] = handle;
    s_uartIsr = UART_TransferHandleIRQ;
    EnableIRQ(s_uartIRQ[instance]);
}