#include <MyProject.h>

/**
    @function     Conf_DMA
    @brief        DMA配置
    @param[in]    DMAx: DMA通道
**           DMAPipe: DMA管道，可选参数如下
                    UART1_XDATA    UART1-->XDATA
                    XDATA_UART1    UART1<--XDATA
                    I2C_XDATA      I2C  -->XDATA
                    XDATA_I2C      I2C  <--XDATA
                    SPI_XDATA      SPI  -->XDATA
                    XDATA_SPI      SPI  <--XDATA
**           DMAAddr: 传输首地址，可取地址范围：0x0000~0x0317
**           DMALen: DMALen    数据包大小(1~64)
    @return       None
    @date         2025-11-05
*/
void Conf_DMA(uint8_t DMAx, uint8_t DMAPipe, uint16_t DMAAddr, uint8_t DMALen)
{
    // 等待DMAx传输结束
    Wait_DMA(DMAx);
    // 禁止DMAx的传输
    ClrBit(*(&DMA0_CR0 + DMAx), DMAEN);
    // 设置DMAx的传输管道
    SetReg(*(&DMA0_CR0 + DMAx), DMA_PIPE, DMAPipe);
    // 配置长度
    *(&DMA0_LEN + DMAx) = DMALen - 1;
    // 配置传输地址
    *(&DMA0_BA + 2 * DMAx) = DMAAddr & 0x07ff;
}