20 #if defined(USE_FULL_LL_DRIVER)
25 #ifdef USE_FULL_ASSERT
28 #define assert_param(expr) ((void)0U)
35 #if defined (DMA1) || defined (DMA2)
48 #define IS_LL_DMA_DIRECTION(__VALUE__) (((__VALUE__) == LL_DMA_DIRECTION_PERIPH_TO_MEMORY) || \
49 ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) || \
50 ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_MEMORY))
52 #define IS_LL_DMA_MODE(__VALUE__) (((__VALUE__) == LL_DMA_MODE_NORMAL) || \
53 ((__VALUE__) == LL_DMA_MODE_CIRCULAR))
55 #define IS_LL_DMA_PERIPHINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_PERIPH_INCREMENT) || \
56 ((__VALUE__) == LL_DMA_PERIPH_NOINCREMENT))
58 #define IS_LL_DMA_MEMORYINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_MEMORY_INCREMENT) || \
59 ((__VALUE__) == LL_DMA_MEMORY_NOINCREMENT))
61 #define IS_LL_DMA_PERIPHDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_PDATAALIGN_BYTE) || \
62 ((__VALUE__) == LL_DMA_PDATAALIGN_HALFWORD) || \
63 ((__VALUE__) == LL_DMA_PDATAALIGN_WORD))
65 #define IS_LL_DMA_MEMORYDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_MDATAALIGN_BYTE) || \
66 ((__VALUE__) == LL_DMA_MDATAALIGN_HALFWORD) || \
67 ((__VALUE__) == LL_DMA_MDATAALIGN_WORD))
69 #define IS_LL_DMA_NBDATA(__VALUE__) ((__VALUE__) <= 0x0000FFFFU)
71 #define IS_LL_DMA_PRIORITY(__VALUE__) (((__VALUE__) == LL_DMA_PRIORITY_LOW) || \
72 ((__VALUE__) == LL_DMA_PRIORITY_MEDIUM) || \
73 ((__VALUE__) == LL_DMA_PRIORITY_HIGH) || \
74 ((__VALUE__) == LL_DMA_PRIORITY_VERYHIGH))
77 #define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \
78 (((CHANNEL) == LL_DMA_CHANNEL_1) || \
79 ((CHANNEL) == LL_DMA_CHANNEL_2) || \
80 ((CHANNEL) == LL_DMA_CHANNEL_3) || \
81 ((CHANNEL) == LL_DMA_CHANNEL_4) || \
82 ((CHANNEL) == LL_DMA_CHANNEL_5) || \
83 ((CHANNEL) == LL_DMA_CHANNEL_6) || \
84 ((CHANNEL) == LL_DMA_CHANNEL_7))) || \
85 (((INSTANCE) == DMA2) && \
86 (((CHANNEL) == LL_DMA_CHANNEL_1) || \
87 ((CHANNEL) == LL_DMA_CHANNEL_2) || \
88 ((CHANNEL) == LL_DMA_CHANNEL_3) || \
89 ((CHANNEL) == LL_DMA_CHANNEL_4) || \
90 ((CHANNEL) == LL_DMA_CHANNEL_5))))
92 #define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \
93 (((CHANNEL) == LL_DMA_CHANNEL_1) || \
94 ((CHANNEL) == LL_DMA_CHANNEL_2) || \
95 ((CHANNEL) == LL_DMA_CHANNEL_3) || \
96 ((CHANNEL) == LL_DMA_CHANNEL_4) || \
97 ((CHANNEL) == LL_DMA_CHANNEL_5) || \
98 ((CHANNEL) == LL_DMA_CHANNEL_6) || \
99 ((CHANNEL) == LL_DMA_CHANNEL_7))))
130 uint32_t LL_DMA_DeInit(
DMA_TypeDef *DMAx, uint32_t Channel)
136 assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel));
144 LL_DMA_WriteReg(tmp, CCR, 0U);
147 LL_DMA_WriteReg(tmp, CNDTR, 0U);
150 LL_DMA_WriteReg(tmp, CPAR, 0U);
153 LL_DMA_WriteReg(tmp, CMAR, 0U);
155 if (Channel == LL_DMA_CHANNEL_1)
158 LL_DMA_ClearFlag_GI1(DMAx);
160 else if (Channel == LL_DMA_CHANNEL_2)
163 LL_DMA_ClearFlag_GI2(DMAx);
165 else if (Channel == LL_DMA_CHANNEL_3)
168 LL_DMA_ClearFlag_GI3(DMAx);
170 else if (Channel == LL_DMA_CHANNEL_4)
173 LL_DMA_ClearFlag_GI4(DMAx);
175 else if (Channel == LL_DMA_CHANNEL_5)
178 LL_DMA_ClearFlag_GI5(DMAx);
181 else if (Channel == LL_DMA_CHANNEL_6)
184 LL_DMA_ClearFlag_GI6(DMAx);
186 else if (Channel == LL_DMA_CHANNEL_7)
189 LL_DMA_ClearFlag_GI7(DMAx);
218 uint32_t LL_DMA_Init(
DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct)
221 assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel));
224 assert_param(IS_LL_DMA_DIRECTION(DMA_InitStruct->Direction));
226 assert_param(IS_LL_DMA_PERIPHINCMODE(DMA_InitStruct->PeriphOrM2MSrcIncMode));
227 assert_param(IS_LL_DMA_MEMORYINCMODE(DMA_InitStruct->MemoryOrM2MDstIncMode));
228 assert_param(IS_LL_DMA_PERIPHDATASIZE(DMA_InitStruct->PeriphOrM2MSrcDataSize));
229 assert_param(IS_LL_DMA_MEMORYDATASIZE(DMA_InitStruct->MemoryOrM2MDstDataSize));
231 assert_param(IS_LL_DMA_PRIORITY(DMA_InitStruct->Priority));
245 LL_DMA_ConfigTransfer(DMAx, Channel, DMA_InitStruct->Direction | \
246 DMA_InitStruct->Mode | \
247 DMA_InitStruct->PeriphOrM2MSrcIncMode | \
248 DMA_InitStruct->MemoryOrM2MDstIncMode | \
249 DMA_InitStruct->PeriphOrM2MSrcDataSize | \
250 DMA_InitStruct->MemoryOrM2MDstDataSize | \
251 DMA_InitStruct->Priority);
257 LL_DMA_SetMemoryAddress(DMAx, Channel, DMA_InitStruct->MemoryOrM2MDstAddress);
263 LL_DMA_SetPeriphAddress(DMAx, Channel, DMA_InitStruct->PeriphOrM2MSrcAddress);
269 LL_DMA_SetDataLength(DMAx, Channel, DMA_InitStruct->NbData);
279 void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct)
282 DMA_InitStruct->PeriphOrM2MSrcAddress = 0x00000000U;
283 DMA_InitStruct->MemoryOrM2MDstAddress = 0x00000000U;
284 DMA_InitStruct->Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY;
285 DMA_InitStruct->Mode = LL_DMA_MODE_NORMAL;
286 DMA_InitStruct->PeriphOrM2MSrcIncMode = LL_DMA_PERIPH_NOINCREMENT;
287 DMA_InitStruct->MemoryOrM2MDstIncMode = LL_DMA_MEMORY_NOINCREMENT;
288 DMA_InitStruct->PeriphOrM2MSrcDataSize = LL_DMA_PDATAALIGN_BYTE;
289 DMA_InitStruct->MemoryOrM2MDstDataSize = LL_DMA_MDATAALIGN_BYTE;
290 DMA_InitStruct->NbData = 0x00000000U;
291 DMA_InitStruct->Priority = LL_DMA_PRIORITY_LOW;