STM32
/* 使能DMA时钟 */
DMAx_CLK_ENABLE();
/* SPI DMA发送配置 */
hdma_tx.Instance = SPIx_TX_DMA_STREAM; /* 例化使用的DMA数据流 */
hdma_tx.Init.Channel = SPIx_TX_DMA_CHANNEL; /* DMA通道配置 */
hdma_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; /* 禁止FIFO*/
hdma_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; /* 禁止FIFO此位不起作用,用于设置阀值 */
hdma_tx.Init.MemBurst = DMA_MBURST_SINGLE; /* 禁止FIFO此位不起作用,用于存储器突发 */
hdma_tx.Init.PeriphBurst = DMA_PBURST_SINGLE; /* 禁止FIFO此位不起作用,用于外设突发 */
hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; /* 传输方向是从存储器到外设 */
hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE; /* 外设地址自增禁止 */
hdma_tx.Init.MemInc = DMA_MINC_ENABLE; /* 存储器地址自增使能 */
hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; /* 外设数据传输位宽选择字节,即8bit */
hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; /* 存储器数据传输位宽选择字节,即8bit */
hdma_tx.Init.Mode = DMA_NORMAL; /* 正常模式 */
hdma_tx.Init.Priority = DMA_PRIORITY_LOW; /* 优先级低 */
/* 复位DMA */
if(HAL_DMA_DeInit(&hdma_tx) != HAL_OK)
{
Error_Handler(__FILE__, __LINE__);
}
/* 初始化DMA */
if(HAL_DMA_Init(&hdma_tx) != HAL_OK)
{
Error_Handler(__FILE__, __LINE__);
}