/* The channel must also be enabled using uDMAChannelEnable() after calling this function. The transfer will not begin until the channel has been set up and enabled. Note that the channel is automatically disabled after the transfer is completed, meaning that uDMAChannelEnable() must be called again after setting up the next transfer. */
void DMAChannelTransferSet(unsigned long ulChannelID, void *pvSrcAddr, void *pvDstAddr, unsigned long ulTransferSize)
/* The channel must also be enabled using uDMAChannelEnable() after calling this function. The transfer will not begin until the channel has been set up and enabled. Note that the channel is automatically disabled after the transfer is completed, meaning that uDMAChannelEnable() must be called again after setting up the next transfer. */
void DMAChannelTransferSet(unsigned long ulChannelID, void *pvSrcAddr, void *pvDstAddr, unsigned long ulTransferSize)
{
    xASSERT(xDMAChannelIDValid(ulChannelID));
    xHWREG(g_psDMAChannel[ulChannelID]) &= ~DMA_CCR1_EN;
    xHWREG(g_psDMAChannel[ulChannelID] + 0x8) = (unsigned long)pvSrcAddr;
    xHWREG(g_psDMAChannel[ulChannelID] + 0xC) = (unsigned long)pvDstAddr;
    xHWREG(g_psDMAChannel[ulChannelID] + 0x4) = ulTransferSize;
}