/* param base USDHC peripheral base address. param handle USDHC handle pointer. param callback Structure pointer to contain all callback functions. param userData Callback function parameter.  */
void USDHC_TransferCreateHandle(USDHC_Type *base, usdhc_handle_t *handle, const usdhc_transfer_callback_t *callback, void *userData)
/* param base USDHC peripheral base address. param handle USDHC handle pointer. param callback Structure pointer to contain all callback functions. param userData Callback function parameter.  */
void USDHC_TransferCreateHandle(USDHC_Type *base, usdhc_handle_t *handle, const usdhc_transfer_callback_t *callback, void *userData)
{
    assert(handle);
    assert(callback);
    memset(handle, 0, sizeof(*handle));
    handle->callback.CardInserted = callback->CardInserted;
    handle->callback.CardRemoved = callback->CardRemoved;
    handle->callback.SdioInterrupt = callback->SdioInterrupt;
    handle->callback.BlockGap = callback->BlockGap;
    handle->callback.TransferComplete = callback->TransferComplete;
    handle->callback.ReTuning = callback->ReTuning;
    handle->userData = userData;
    s_usdhcHandle[USDHC_GetInstance(base)] = handle;
    USDHC_SetTransferInterrupt(base, true);
    s_usdhcIsr = USDHC_TransferHandleIRQ;
    EnableIRQ(s_usdhcIRQ[USDHC_GetInstance(base)]);
}