100 lines
3.4 KiB
C
100 lines
3.4 KiB
C
/**
|
|
******************************************************************************
|
|
* @file dma.c
|
|
* @brief This file provides code for the configuration
|
|
* of all the requested memory to memory DMA transfers.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2021 STMicroelectronics.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* This software component is licensed by ST under Ultimate Liberty license
|
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at:
|
|
* www.st.com/SLA0044
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "dma.h"
|
|
|
|
/* USER CODE BEGIN 0 */
|
|
|
|
/* USER CODE END 0 */
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
/* Configure DMA */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
/* USER CODE BEGIN 1 */
|
|
|
|
/* USER CODE END 1 */
|
|
|
|
/**
|
|
* Enable DMA controller clock
|
|
*/
|
|
void MX_DMA_Init(void)
|
|
{
|
|
|
|
/* Init with LL driver */
|
|
/* DMA controller clock enable */
|
|
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA2);
|
|
|
|
/* Configure DMA request MEMTOMEM_DMA2_Stream4 */
|
|
|
|
/* Select channel */
|
|
LL_DMA_SetChannelSelection(DMA2, LL_DMA_STREAM_4, LL_DMA_CHANNEL_0);
|
|
|
|
/* Set transfer direction */
|
|
LL_DMA_SetDataTransferDirection(DMA2, LL_DMA_STREAM_4, LL_DMA_DIRECTION_MEMORY_TO_MEMORY);
|
|
|
|
/* Set priority level */
|
|
LL_DMA_SetStreamPriorityLevel(DMA2, LL_DMA_STREAM_4, LL_DMA_PRIORITY_LOW);
|
|
|
|
/* Set DMA mode */
|
|
LL_DMA_SetMode(DMA2, LL_DMA_STREAM_4, LL_DMA_MODE_NORMAL);
|
|
|
|
/* Set peripheral increment mode */
|
|
LL_DMA_SetPeriphIncMode(DMA2, LL_DMA_STREAM_4, LL_DMA_PERIPH_NOINCREMENT);
|
|
|
|
/* Set memory increment mode */
|
|
LL_DMA_SetMemoryIncMode(DMA2, LL_DMA_STREAM_4, LL_DMA_MEMORY_NOINCREMENT);
|
|
|
|
/* Set peripheral data width */
|
|
LL_DMA_SetPeriphSize(DMA2, LL_DMA_STREAM_4, LL_DMA_PDATAALIGN_HALFWORD);
|
|
|
|
/* Set memory data width */
|
|
LL_DMA_SetMemorySize(DMA2, LL_DMA_STREAM_4, LL_DMA_MDATAALIGN_HALFWORD);
|
|
|
|
/* Enable FIFO mode */
|
|
LL_DMA_EnableFifoMode(DMA2, LL_DMA_STREAM_4);
|
|
|
|
/* Set FIFO threshold */
|
|
LL_DMA_SetFIFOThreshold(DMA2, LL_DMA_STREAM_4, LL_DMA_FIFOTHRESHOLD_FULL);
|
|
|
|
/* Set memory burst size */
|
|
LL_DMA_SetMemoryBurstxfer(DMA2, LL_DMA_STREAM_4, LL_DMA_MBURST_SINGLE);
|
|
|
|
/* Set peripheral burst size */
|
|
LL_DMA_SetPeriphBurstxfer(DMA2, LL_DMA_STREAM_4, LL_DMA_PBURST_SINGLE);
|
|
|
|
/* DMA interrupt init */
|
|
/* DMA2_Stream2_IRQn interrupt configuration */
|
|
NVIC_SetPriority(DMA2_Stream2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0));
|
|
NVIC_EnableIRQ(DMA2_Stream2_IRQn);
|
|
/* DMA2_Stream4_IRQn interrupt configuration */
|
|
NVIC_SetPriority(DMA2_Stream4_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0));
|
|
NVIC_EnableIRQ(DMA2_Stream4_IRQn);
|
|
/* DMA2_Stream7_IRQn interrupt configuration */
|
|
NVIC_SetPriority(DMA2_Stream7_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0));
|
|
NVIC_EnableIRQ(DMA2_Stream7_IRQn);
|
|
|
|
}
|
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
|
/* USER CODE END 2 */
|
|
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|