1
0

DMA.c 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. #include <MyProject.h>
  2. /**
  3. @function Conf_DMA
  4. @brief DMA配置
  5. @param[in] DMAx: DMA通道
  6. ** DMAPipe: DMA管道,可选参数如下
  7. UART1_XDATA UART1-->XDATA
  8. XDATA_UART1 UART1<--XDATA
  9. I2C_XDATA I2C -->XDATA
  10. XDATA_I2C I2C <--XDATA
  11. SPI_XDATA SPI -->XDATA
  12. XDATA_SPI SPI <--XDATA
  13. ** DMAAddr: 传输首地址,可取地址范围:0x0000~0x0317
  14. ** DMALen: DMALen 数据包大小(1~64)
  15. @return None
  16. @date 2025-11-05
  17. */
  18. void Conf_DMA(uint8_t DMAx, uint8_t DMAPipe, uint16_t DMAAddr, uint8_t DMALen)
  19. {
  20. // 等待DMAx传输结束
  21. Wait_DMA(DMAx);
  22. // 禁止DMAx的传输
  23. ClrBit(*(&DMA0_CR0 + DMAx), DMAEN);
  24. // 设置DMAx的传输管道
  25. SetReg(*(&DMA0_CR0 + DMAx), DMA_PIPE, DMAPipe);
  26. // 配置长度
  27. *(&DMA0_LEN + DMAx) = DMALen - 1;
  28. // 配置传输地址
  29. *(&DMA0_BA + 2 * DMAx) = DMAAddr & 0x07ff;
  30. }