1 /**
2 ******************************************************************************
3 * @file stm32l0xx_ll_dma.h
4 * @author MCD Application Team
5 * @brief Header file of DMA LL module.
6 *
7 ******************************************************************************
8 * @attention
9 *
10 * Copyright (c) 2016 STMicroelectronics.
11 * All rights reserved.
12 *
13 * This software is licensed under terms that can be found in the LICENSE file
14 * in the root directory of this software component.
15 * If no LICENSE file comes with this software, it is provided AS-IS.
16 *
17 ******************************************************************************
18 */
19
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L0xx_LL_DMA_H
22 #define STM32L0xx_LL_DMA_H
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l0xx.h"
30
31 /** @addtogroup STM32L0xx_LL_Driver
32 * @{
33 */
34
35 #if defined (DMA1)
36
37 /** @defgroup DMA_LL DMA
38 * @{
39 */
40
41 /* Private types -------------------------------------------------------------*/
42 /* Private variables ---------------------------------------------------------*/
43 /** @defgroup DMA_LL_Private_Variables DMA Private Variables
44 * @{
45 */
46 /* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */
47 static const uint8_t CHANNEL_OFFSET_TAB[] =
48 {
49 (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE),
50 (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE),
51 (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE),
52 (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE),
53 (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE),
54 #if defined(DMA1_Channel6)
55 (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE),
56 #endif /*DMA1_Channel6*/
57 #if defined(DMA1_Channel7)
58 (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE)
59 #endif /*DMA1_Channel7*/
60 };
61 /**
62 * @}
63 */
64
65 /* Private constants ---------------------------------------------------------*/
66 /** @defgroup DMA_LL_Private_Constants DMA Private Constants
67 * @{
68 */
69 /* Define used to get CSELR register offset */
70 #define DMA_CSELR_OFFSET (uint32_t)(DMA1_CSELR_BASE - DMA1_BASE)
71
72 /* Defines used for the bit position in the register and perform offsets */
73 #define DMA_POSITION_CSELR_CXS ((Channel-1U)*4U)
74 /**
75 * @}
76 */
77
78 /* Private macros ------------------------------------------------------------*/
79 #if defined(USE_FULL_LL_DRIVER)
80 /** @defgroup DMA_LL_Private_Macros DMA Private Macros
81 * @{
82 */
83 /**
84 * @}
85 */
86 #endif /*USE_FULL_LL_DRIVER*/
87
88 /* Exported types ------------------------------------------------------------*/
89 #if defined(USE_FULL_LL_DRIVER)
90 /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure
91 * @{
92 */
93 typedef struct
94 {
95 uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer
96 or as Source base address in case of memory to memory transfer direction.
97
98 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
99
100 uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer
101 or as Destination base address in case of memory to memory transfer direction.
102
103 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
104
105 uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral,
106 from memory to memory or from peripheral to memory.
107 This parameter can be a value of @ref DMA_LL_EC_DIRECTION
108
109 This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */
110
111 uint32_t Mode; /*!< Specifies the normal or circular operation mode.
112 This parameter can be a value of @ref DMA_LL_EC_MODE
113 @note: The circular buffer mode cannot be used if the memory to memory
114 data transfer direction is configured on the selected Channel
115
116 This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */
117
118 uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction
119 is incremented or not.
120 This parameter can be a value of @ref DMA_LL_EC_PERIPH
121
122 This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */
123
124 uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction
125 is incremented or not.
126 This parameter can be a value of @ref DMA_LL_EC_MEMORY
127
128 This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */
129
130 uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word)
131 in case of memory to memory transfer direction.
132 This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN
133
134 This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */
135
136 uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word)
137 in case of memory to memory transfer direction.
138 This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN
139
140 This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */
141
142 uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit.
143 The data unit is equal to the source buffer configuration set in PeripheralSize
144 or MemorySize parameters depending in the transfer direction.
145 This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF
146
147 This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */
148
149 uint32_t PeriphRequest; /*!< Specifies the peripheral request.
150 This parameter can be a value of @ref DMA_LL_EC_REQUEST
151
152 This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */
153
154 uint32_t Priority; /*!< Specifies the channel priority level.
155 This parameter can be a value of @ref DMA_LL_EC_PRIORITY
156
157 This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */
158
159 } LL_DMA_InitTypeDef;
160 /**
161 * @}
162 */
163 #endif /*USE_FULL_LL_DRIVER*/
164
165 /* Exported constants --------------------------------------------------------*/
166 /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
167 * @{
168 */
169 /** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines
170 * @brief Flags defines which can be used with LL_DMA_WriteReg function
171 * @{
172 */
173 #define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */
174 #define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */
175 #define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */
176 #define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */
177 #define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */
178 #define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */
179 #define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */
180 #define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */
181 #define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */
182 #define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */
183 #define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */
184 #define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */
185 #define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */
186 #define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */
187 #define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */
188 #define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */
189 #define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */
190 #define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */
191 #define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */
192 #define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */
193 #if defined(DMA1_Channel6)
194 #define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */
195 #define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */
196 #define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */
197 #define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */
198 #endif
199 #if defined(DMA1_Channel7)
200 #define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */
201 #define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */
202 #define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */
203 #define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */
204 #endif
205 /**
206 * @}
207 */
208
209 /** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines
210 * @brief Flags defines which can be used with LL_DMA_ReadReg function
211 * @{
212 */
213 #define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */
214 #define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */
215 #define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */
216 #define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */
217 #define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */
218 #define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */
219 #define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */
220 #define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */
221 #define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */
222 #define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */
223 #define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */
224 #define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */
225 #define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */
226 #define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */
227 #define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */
228 #define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */
229 #define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */
230 #define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */
231 #define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */
232 #define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */
233 #if defined(DMA1_Channel6)
234 #define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */
235 #define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */
236 #define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */
237 #define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */
238 #endif
239 #if defined(DMA1_Channel7)
240 #define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */
241 #define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */
242 #define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */
243 #define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */
244 #endif
245 /**
246 * @}
247 */
248
249 /** @defgroup DMA_LL_EC_IT IT Defines
250 * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions
251 * @{
252 */
253 #define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */
254 #define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */
255 #define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */
256 /**
257 * @}
258 */
259
260 /** @defgroup DMA_LL_EC_CHANNEL CHANNEL
261 * @{
262 */
263 #define LL_DMA_CHANNEL_1 0x00000001U /*!< DMA Channel 1 */
264 #define LL_DMA_CHANNEL_2 0x00000002U /*!< DMA Channel 2 */
265 #define LL_DMA_CHANNEL_3 0x00000003U /*!< DMA Channel 3 */
266 #define LL_DMA_CHANNEL_4 0x00000004U /*!< DMA Channel 4 */
267 #define LL_DMA_CHANNEL_5 0x00000005U /*!< DMA Channel 5 */
268 #if defined(DMA1_Channel6)
269 #define LL_DMA_CHANNEL_6 0x00000006U /*!< DMA Channel 6 */
270 #endif
271 #if defined(DMA1_Channel7)
272 #define LL_DMA_CHANNEL_7 0x00000007U /*!< DMA Channel 7 */
273 #endif
274 #if defined(USE_FULL_LL_DRIVER)
275 #define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */
276 #endif /*USE_FULL_LL_DRIVER*/
277 /**
278 * @}
279 */
280
281 /** @defgroup DMA_LL_EC_DIRECTION Transfer Direction
282 * @{
283 */
284 #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */
285 #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */
286 #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */
287 /**
288 * @}
289 */
290
291 /** @defgroup DMA_LL_EC_MODE Transfer mode
292 * @{
293 */
294 #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */
295 #define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */
296 /**
297 * @}
298 */
299
300 /** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode
301 * @{
302 */
303 #define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */
304 #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */
305 /**
306 * @}
307 */
308
309 /** @defgroup DMA_LL_EC_MEMORY Memory increment mode
310 * @{
311 */
312 #define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */
313 #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */
314 /**
315 * @}
316 */
317
318 /** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment
319 * @{
320 */
321 #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */
322 #define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */
323 #define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */
324 /**
325 * @}
326 */
327
328 /** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment
329 * @{
330 */
331 #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */
332 #define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */
333 #define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */
334 /**
335 * @}
336 */
337
338 /** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level
339 * @{
340 */
341 #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */
342 #define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */
343 #define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */
344 #define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */
345 /**
346 * @}
347 */
348
349 /** @defgroup DMA_LL_EC_REQUEST Transfer peripheral request
350 * @{
351 */
352 #define LL_DMA_REQUEST_0 0x00000000U /*!< DMA peripheral request 0 */
353 #define LL_DMA_REQUEST_1 0x00000001U /*!< DMA peripheral request 1 */
354 #define LL_DMA_REQUEST_2 0x00000002U /*!< DMA peripheral request 2 */
355 #define LL_DMA_REQUEST_3 0x00000003U /*!< DMA peripheral request 3 */
356 #define LL_DMA_REQUEST_4 0x00000004U /*!< DMA peripheral request 4 */
357 #define LL_DMA_REQUEST_5 0x00000005U /*!< DMA peripheral request 5 */
358 #define LL_DMA_REQUEST_6 0x00000006U /*!< DMA peripheral request 6 */
359 #define LL_DMA_REQUEST_7 0x00000007U /*!< DMA peripheral request 7 */
360 #define LL_DMA_REQUEST_8 0x00000008U /*!< DMA peripheral request 8 */
361 #define LL_DMA_REQUEST_9 0x00000009U /*!< DMA peripheral request 9 */
362 #define LL_DMA_REQUEST_10 0x0000000AU /*!< DMA peripheral request 10 */
363 #define LL_DMA_REQUEST_11 0x0000000BU /*!< DMA peripheral request 11 */
364 #define LL_DMA_REQUEST_12 0x0000000CU /*!< DMA peripheral request 12 */
365 #define LL_DMA_REQUEST_13 0x0000000DU /*!< DMA peripheral request 13 */
366 #define LL_DMA_REQUEST_14 0x0000000EU /*!< DMA peripheral request 14 */
367 #define LL_DMA_REQUEST_15 0x0000000FU /*!< DMA peripheral request 15 */
368 /**
369 * @}
370 */
371
372 /**
373 * @}
374 */
375
376 /* Exported macro ------------------------------------------------------------*/
377 /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
378 * @{
379 */
380
381 /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros
382 * @{
383 */
384 /**
385 * @brief Write a value in DMA register
386 * @param __INSTANCE__ DMA Instance
387 * @param __REG__ Register to be written
388 * @param __VALUE__ Value to be written in the register
389 * @retval None
390 */
391 #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
392
393 /**
394 * @brief Read a value in DMA register
395 * @param __INSTANCE__ DMA Instance
396 * @param __REG__ Register to be read
397 * @retval Register value
398 */
399 #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
400 /**
401 * @}
402 */
403
404 /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely
405 * @{
406 */
407 /**
408 * @brief Convert DMAx_Channely into DMAx
409 * @param __CHANNEL_INSTANCE__ DMAx_Channely
410 * @retval DMAx
411 */
412 #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1)
413
414 /**
415 * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y
416 * @param __CHANNEL_INSTANCE__ DMAx_Channely
417 * @retval LL_DMA_CHANNEL_y
418 */
419 #if defined (DMA1_Channel6) && defined (DMA1_Channel7)
420 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
421 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
422 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
423 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
424 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
425 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \
426 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \
427 LL_DMA_CHANNEL_7)
428 #elif defined (DMA1_Channel6)
429 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
430 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
431 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
432 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
433 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
434 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \
435 LL_DMA_CHANNEL_6)
436 #else
437 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
438 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
439 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
440 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
441 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
442 LL_DMA_CHANNEL_5)
443 #endif /* DMA1_Channel6 && DMA1_Channel7 */
444
445 /**
446 * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely
447 * @param __DMA_INSTANCE__ DMAx
448 * @param __CHANNEL__ LL_DMA_CHANNEL_y
449 * @retval DMAx_Channely
450 */
451 #if defined (DMA1_Channel6) && defined (DMA1_Channel7)
452 #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
453 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \
454 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \
455 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \
456 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \
457 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \
458 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \
459 DMA1_Channel7)
460 #elif defined (DMA1_Channel6)
461 #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
462 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \
463 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \
464 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \
465 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \
466 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \
467 DMA1_Channel6)
468 #else
469 #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
470 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \
471 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \
472 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \
473 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \
474 DMA1_Channel5)
475 #endif /* DMA1_Channel6 && DMA1_Channel7 */
476
477 /**
478 * @}
479 */
480
481 /**
482 * @}
483 */
484
485 /* Exported functions --------------------------------------------------------*/
486 /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
487 * @{
488 */
489
490 /** @defgroup DMA_LL_EF_Configuration Configuration
491 * @{
492 */
493 /**
494 * @brief Enable DMA channel.
495 * @rmtoll CCR EN LL_DMA_EnableChannel
496 * @param DMAx DMAx Instance
497 * @param Channel This parameter can be one of the following values:
498 * @arg @ref LL_DMA_CHANNEL_1
499 * @arg @ref LL_DMA_CHANNEL_2
500 * @arg @ref LL_DMA_CHANNEL_3
501 * @arg @ref LL_DMA_CHANNEL_4
502 * @arg @ref LL_DMA_CHANNEL_5
503 * @arg @ref LL_DMA_CHANNEL_6
504 * @arg @ref LL_DMA_CHANNEL_7
505 * @retval None
506 */
LL_DMA_EnableChannel(DMA_TypeDef * DMAx,uint32_t Channel)507 __STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel)
508 {
509 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN);
510 }
511
512 /**
513 * @brief Disable DMA channel.
514 * @rmtoll CCR EN LL_DMA_DisableChannel
515 * @param DMAx DMAx Instance
516 * @param Channel This parameter can be one of the following values:
517 * @arg @ref LL_DMA_CHANNEL_1
518 * @arg @ref LL_DMA_CHANNEL_2
519 * @arg @ref LL_DMA_CHANNEL_3
520 * @arg @ref LL_DMA_CHANNEL_4
521 * @arg @ref LL_DMA_CHANNEL_5
522 * @arg @ref LL_DMA_CHANNEL_6
523 * @arg @ref LL_DMA_CHANNEL_7
524 * @retval None
525 */
LL_DMA_DisableChannel(DMA_TypeDef * DMAx,uint32_t Channel)526 __STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel)
527 {
528 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN);
529 }
530
531 /**
532 * @brief Check if DMA channel is enabled or disabled.
533 * @rmtoll CCR EN LL_DMA_IsEnabledChannel
534 * @param DMAx DMAx Instance
535 * @param Channel This parameter can be one of the following values:
536 * @arg @ref LL_DMA_CHANNEL_1
537 * @arg @ref LL_DMA_CHANNEL_2
538 * @arg @ref LL_DMA_CHANNEL_3
539 * @arg @ref LL_DMA_CHANNEL_4
540 * @arg @ref LL_DMA_CHANNEL_5
541 * @arg @ref LL_DMA_CHANNEL_6
542 * @arg @ref LL_DMA_CHANNEL_7
543 * @retval State of bit (1 or 0).
544 */
LL_DMA_IsEnabledChannel(DMA_TypeDef * DMAx,uint32_t Channel)545 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel)
546 {
547 return ((READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
548 DMA_CCR_EN) == (DMA_CCR_EN)) ? 1UL : 0UL);
549 }
550
551 /**
552 * @brief Configure all parameters link to DMA transfer.
553 * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n
554 * CCR MEM2MEM LL_DMA_ConfigTransfer\n
555 * CCR CIRC LL_DMA_ConfigTransfer\n
556 * CCR PINC LL_DMA_ConfigTransfer\n
557 * CCR MINC LL_DMA_ConfigTransfer\n
558 * CCR PSIZE LL_DMA_ConfigTransfer\n
559 * CCR MSIZE LL_DMA_ConfigTransfer\n
560 * CCR PL LL_DMA_ConfigTransfer
561 * @param DMAx DMAx Instance
562 * @param Channel This parameter can be one of the following values:
563 * @arg @ref LL_DMA_CHANNEL_1
564 * @arg @ref LL_DMA_CHANNEL_2
565 * @arg @ref LL_DMA_CHANNEL_3
566 * @arg @ref LL_DMA_CHANNEL_4
567 * @arg @ref LL_DMA_CHANNEL_5
568 * @arg @ref LL_DMA_CHANNEL_6
569 * @arg @ref LL_DMA_CHANNEL_7
570 * @param Configuration This parameter must be a combination of all the following values:
571 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
572 * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR
573 * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT
574 * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT
575 * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD
576 * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD
577 * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH
578 * @retval None
579 */
LL_DMA_ConfigTransfer(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)580 __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
581 {
582 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
583 DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL,
584 Configuration);
585 }
586
587 /**
588 * @brief Set Data transfer direction (read from peripheral or from memory).
589 * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n
590 * CCR MEM2MEM LL_DMA_SetDataTransferDirection
591 * @param DMAx DMAx Instance
592 * @param Channel This parameter can be one of the following values:
593 * @arg @ref LL_DMA_CHANNEL_1
594 * @arg @ref LL_DMA_CHANNEL_2
595 * @arg @ref LL_DMA_CHANNEL_3
596 * @arg @ref LL_DMA_CHANNEL_4
597 * @arg @ref LL_DMA_CHANNEL_5
598 * @arg @ref LL_DMA_CHANNEL_6
599 * @arg @ref LL_DMA_CHANNEL_7
600 * @param Direction This parameter can be one of the following values:
601 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
602 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
603 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
604 * @retval None
605 */
LL_DMA_SetDataTransferDirection(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Direction)606 __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction)
607 {
608 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
609 DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction);
610 }
611
612 /**
613 * @brief Get Data transfer direction (read from peripheral or from memory).
614 * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n
615 * CCR MEM2MEM LL_DMA_GetDataTransferDirection
616 * @param DMAx DMAx Instance
617 * @param Channel This parameter can be one of the following values:
618 * @arg @ref LL_DMA_CHANNEL_1
619 * @arg @ref LL_DMA_CHANNEL_2
620 * @arg @ref LL_DMA_CHANNEL_3
621 * @arg @ref LL_DMA_CHANNEL_4
622 * @arg @ref LL_DMA_CHANNEL_5
623 * @arg @ref LL_DMA_CHANNEL_6
624 * @arg @ref LL_DMA_CHANNEL_7
625 * @retval Returned value can be one of the following values:
626 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
627 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
628 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
629 */
LL_DMA_GetDataTransferDirection(DMA_TypeDef * DMAx,uint32_t Channel)630 __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel)
631 {
632 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
633 DMA_CCR_DIR | DMA_CCR_MEM2MEM));
634 }
635
636 /**
637 * @brief Set DMA mode circular or normal.
638 * @note The circular buffer mode cannot be used if the memory-to-memory
639 * data transfer is configured on the selected Channel.
640 * @rmtoll CCR CIRC LL_DMA_SetMode
641 * @param DMAx DMAx Instance
642 * @param Channel This parameter can be one of the following values:
643 * @arg @ref LL_DMA_CHANNEL_1
644 * @arg @ref LL_DMA_CHANNEL_2
645 * @arg @ref LL_DMA_CHANNEL_3
646 * @arg @ref LL_DMA_CHANNEL_4
647 * @arg @ref LL_DMA_CHANNEL_5
648 * @arg @ref LL_DMA_CHANNEL_6
649 * @arg @ref LL_DMA_CHANNEL_7
650 * @param Mode This parameter can be one of the following values:
651 * @arg @ref LL_DMA_MODE_NORMAL
652 * @arg @ref LL_DMA_MODE_CIRCULAR
653 * @retval None
654 */
LL_DMA_SetMode(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Mode)655 __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode)
656 {
657 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_CIRC,
658 Mode);
659 }
660
661 /**
662 * @brief Get DMA mode circular or normal.
663 * @rmtoll CCR CIRC LL_DMA_GetMode
664 * @param DMAx DMAx Instance
665 * @param Channel This parameter can be one of the following values:
666 * @arg @ref LL_DMA_CHANNEL_1
667 * @arg @ref LL_DMA_CHANNEL_2
668 * @arg @ref LL_DMA_CHANNEL_3
669 * @arg @ref LL_DMA_CHANNEL_4
670 * @arg @ref LL_DMA_CHANNEL_5
671 * @arg @ref LL_DMA_CHANNEL_6
672 * @arg @ref LL_DMA_CHANNEL_7
673 * @retval Returned value can be one of the following values:
674 * @arg @ref LL_DMA_MODE_NORMAL
675 * @arg @ref LL_DMA_MODE_CIRCULAR
676 */
LL_DMA_GetMode(DMA_TypeDef * DMAx,uint32_t Channel)677 __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel)
678 {
679 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
680 DMA_CCR_CIRC));
681 }
682
683 /**
684 * @brief Set Peripheral increment mode.
685 * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode
686 * @param DMAx DMAx Instance
687 * @param Channel This parameter can be one of the following values:
688 * @arg @ref LL_DMA_CHANNEL_1
689 * @arg @ref LL_DMA_CHANNEL_2
690 * @arg @ref LL_DMA_CHANNEL_3
691 * @arg @ref LL_DMA_CHANNEL_4
692 * @arg @ref LL_DMA_CHANNEL_5
693 * @arg @ref LL_DMA_CHANNEL_6
694 * @arg @ref LL_DMA_CHANNEL_7
695 * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values:
696 * @arg @ref LL_DMA_PERIPH_INCREMENT
697 * @arg @ref LL_DMA_PERIPH_NOINCREMENT
698 * @retval None
699 */
LL_DMA_SetPeriphIncMode(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t PeriphOrM2MSrcIncMode)700 __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode)
701 {
702 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PINC,
703 PeriphOrM2MSrcIncMode);
704 }
705
706 /**
707 * @brief Get Peripheral increment mode.
708 * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode
709 * @param DMAx DMAx Instance
710 * @param Channel This parameter can be one of the following values:
711 * @arg @ref LL_DMA_CHANNEL_1
712 * @arg @ref LL_DMA_CHANNEL_2
713 * @arg @ref LL_DMA_CHANNEL_3
714 * @arg @ref LL_DMA_CHANNEL_4
715 * @arg @ref LL_DMA_CHANNEL_5
716 * @arg @ref LL_DMA_CHANNEL_6
717 * @arg @ref LL_DMA_CHANNEL_7
718 * @retval Returned value can be one of the following values:
719 * @arg @ref LL_DMA_PERIPH_INCREMENT
720 * @arg @ref LL_DMA_PERIPH_NOINCREMENT
721 */
LL_DMA_GetPeriphIncMode(DMA_TypeDef * DMAx,uint32_t Channel)722 __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel)
723 {
724 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
725 DMA_CCR_PINC));
726 }
727
728 /**
729 * @brief Set Memory increment mode.
730 * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode
731 * @param DMAx DMAx Instance
732 * @param Channel This parameter can be one of the following values:
733 * @arg @ref LL_DMA_CHANNEL_1
734 * @arg @ref LL_DMA_CHANNEL_2
735 * @arg @ref LL_DMA_CHANNEL_3
736 * @arg @ref LL_DMA_CHANNEL_4
737 * @arg @ref LL_DMA_CHANNEL_5
738 * @arg @ref LL_DMA_CHANNEL_6
739 * @arg @ref LL_DMA_CHANNEL_7
740 * @param MemoryOrM2MDstIncMode This parameter can be one of the following values:
741 * @arg @ref LL_DMA_MEMORY_INCREMENT
742 * @arg @ref LL_DMA_MEMORY_NOINCREMENT
743 * @retval None
744 */
LL_DMA_SetMemoryIncMode(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t MemoryOrM2MDstIncMode)745 __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode)
746 {
747 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MINC,
748 MemoryOrM2MDstIncMode);
749 }
750
751 /**
752 * @brief Get Memory increment mode.
753 * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode
754 * @param DMAx DMAx Instance
755 * @param Channel This parameter can be one of the following values:
756 * @arg @ref LL_DMA_CHANNEL_1
757 * @arg @ref LL_DMA_CHANNEL_2
758 * @arg @ref LL_DMA_CHANNEL_3
759 * @arg @ref LL_DMA_CHANNEL_4
760 * @arg @ref LL_DMA_CHANNEL_5
761 * @arg @ref LL_DMA_CHANNEL_6
762 * @arg @ref LL_DMA_CHANNEL_7
763 * @retval Returned value can be one of the following values:
764 * @arg @ref LL_DMA_MEMORY_INCREMENT
765 * @arg @ref LL_DMA_MEMORY_NOINCREMENT
766 */
LL_DMA_GetMemoryIncMode(DMA_TypeDef * DMAx,uint32_t Channel)767 __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel)
768 {
769 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
770 DMA_CCR_MINC));
771 }
772
773 /**
774 * @brief Set Peripheral size.
775 * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize
776 * @param DMAx DMAx Instance
777 * @param Channel This parameter can be one of the following values:
778 * @arg @ref LL_DMA_CHANNEL_1
779 * @arg @ref LL_DMA_CHANNEL_2
780 * @arg @ref LL_DMA_CHANNEL_3
781 * @arg @ref LL_DMA_CHANNEL_4
782 * @arg @ref LL_DMA_CHANNEL_5
783 * @arg @ref LL_DMA_CHANNEL_6
784 * @arg @ref LL_DMA_CHANNEL_7
785 * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values:
786 * @arg @ref LL_DMA_PDATAALIGN_BYTE
787 * @arg @ref LL_DMA_PDATAALIGN_HALFWORD
788 * @arg @ref LL_DMA_PDATAALIGN_WORD
789 * @retval None
790 */
LL_DMA_SetPeriphSize(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t PeriphOrM2MSrcDataSize)791 __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize)
792 {
793 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PSIZE,
794 PeriphOrM2MSrcDataSize);
795 }
796
797 /**
798 * @brief Get Peripheral size.
799 * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize
800 * @param DMAx DMAx Instance
801 * @param Channel This parameter can be one of the following values:
802 * @arg @ref LL_DMA_CHANNEL_1
803 * @arg @ref LL_DMA_CHANNEL_2
804 * @arg @ref LL_DMA_CHANNEL_3
805 * @arg @ref LL_DMA_CHANNEL_4
806 * @arg @ref LL_DMA_CHANNEL_5
807 * @arg @ref LL_DMA_CHANNEL_6
808 * @arg @ref LL_DMA_CHANNEL_7
809 * @retval Returned value can be one of the following values:
810 * @arg @ref LL_DMA_PDATAALIGN_BYTE
811 * @arg @ref LL_DMA_PDATAALIGN_HALFWORD
812 * @arg @ref LL_DMA_PDATAALIGN_WORD
813 */
LL_DMA_GetPeriphSize(DMA_TypeDef * DMAx,uint32_t Channel)814 __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel)
815 {
816 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
817 DMA_CCR_PSIZE));
818 }
819
820 /**
821 * @brief Set Memory size.
822 * @rmtoll CCR MSIZE LL_DMA_SetMemorySize
823 * @param DMAx DMAx Instance
824 * @param Channel This parameter can be one of the following values:
825 * @arg @ref LL_DMA_CHANNEL_1
826 * @arg @ref LL_DMA_CHANNEL_2
827 * @arg @ref LL_DMA_CHANNEL_3
828 * @arg @ref LL_DMA_CHANNEL_4
829 * @arg @ref LL_DMA_CHANNEL_5
830 * @arg @ref LL_DMA_CHANNEL_6
831 * @arg @ref LL_DMA_CHANNEL_7
832 * @param MemoryOrM2MDstDataSize This parameter can be one of the following values:
833 * @arg @ref LL_DMA_MDATAALIGN_BYTE
834 * @arg @ref LL_DMA_MDATAALIGN_HALFWORD
835 * @arg @ref LL_DMA_MDATAALIGN_WORD
836 * @retval None
837 */
LL_DMA_SetMemorySize(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t MemoryOrM2MDstDataSize)838 __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize)
839 {
840 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MSIZE,
841 MemoryOrM2MDstDataSize);
842 }
843
844 /**
845 * @brief Get Memory size.
846 * @rmtoll CCR MSIZE LL_DMA_GetMemorySize
847 * @param DMAx DMAx Instance
848 * @param Channel This parameter can be one of the following values:
849 * @arg @ref LL_DMA_CHANNEL_1
850 * @arg @ref LL_DMA_CHANNEL_2
851 * @arg @ref LL_DMA_CHANNEL_3
852 * @arg @ref LL_DMA_CHANNEL_4
853 * @arg @ref LL_DMA_CHANNEL_5
854 * @arg @ref LL_DMA_CHANNEL_6
855 * @arg @ref LL_DMA_CHANNEL_7
856 * @retval Returned value can be one of the following values:
857 * @arg @ref LL_DMA_MDATAALIGN_BYTE
858 * @arg @ref LL_DMA_MDATAALIGN_HALFWORD
859 * @arg @ref LL_DMA_MDATAALIGN_WORD
860 */
LL_DMA_GetMemorySize(DMA_TypeDef * DMAx,uint32_t Channel)861 __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel)
862 {
863 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
864 DMA_CCR_MSIZE));
865 }
866
867 /**
868 * @brief Set Channel priority level.
869 * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel
870 * @param DMAx DMAx Instance
871 * @param Channel This parameter can be one of the following values:
872 * @arg @ref LL_DMA_CHANNEL_1
873 * @arg @ref LL_DMA_CHANNEL_2
874 * @arg @ref LL_DMA_CHANNEL_3
875 * @arg @ref LL_DMA_CHANNEL_4
876 * @arg @ref LL_DMA_CHANNEL_5
877 * @arg @ref LL_DMA_CHANNEL_6
878 * @arg @ref LL_DMA_CHANNEL_7
879 * @param Priority This parameter can be one of the following values:
880 * @arg @ref LL_DMA_PRIORITY_LOW
881 * @arg @ref LL_DMA_PRIORITY_MEDIUM
882 * @arg @ref LL_DMA_PRIORITY_HIGH
883 * @arg @ref LL_DMA_PRIORITY_VERYHIGH
884 * @retval None
885 */
LL_DMA_SetChannelPriorityLevel(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Priority)886 __STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority)
887 {
888 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PL,
889 Priority);
890 }
891
892 /**
893 * @brief Get Channel priority level.
894 * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel
895 * @param DMAx DMAx Instance
896 * @param Channel This parameter can be one of the following values:
897 * @arg @ref LL_DMA_CHANNEL_1
898 * @arg @ref LL_DMA_CHANNEL_2
899 * @arg @ref LL_DMA_CHANNEL_3
900 * @arg @ref LL_DMA_CHANNEL_4
901 * @arg @ref LL_DMA_CHANNEL_5
902 * @arg @ref LL_DMA_CHANNEL_6
903 * @arg @ref LL_DMA_CHANNEL_7
904 * @retval Returned value can be one of the following values:
905 * @arg @ref LL_DMA_PRIORITY_LOW
906 * @arg @ref LL_DMA_PRIORITY_MEDIUM
907 * @arg @ref LL_DMA_PRIORITY_HIGH
908 * @arg @ref LL_DMA_PRIORITY_VERYHIGH
909 */
LL_DMA_GetChannelPriorityLevel(DMA_TypeDef * DMAx,uint32_t Channel)910 __STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel)
911 {
912 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
913 DMA_CCR_PL));
914 }
915
916 /**
917 * @brief Set Number of data to transfer.
918 * @note This action has no effect if
919 * channel is enabled.
920 * @rmtoll CNDTR NDT LL_DMA_SetDataLength
921 * @param DMAx DMAx Instance
922 * @param Channel This parameter can be one of the following values:
923 * @arg @ref LL_DMA_CHANNEL_1
924 * @arg @ref LL_DMA_CHANNEL_2
925 * @arg @ref LL_DMA_CHANNEL_3
926 * @arg @ref LL_DMA_CHANNEL_4
927 * @arg @ref LL_DMA_CHANNEL_5
928 * @arg @ref LL_DMA_CHANNEL_6
929 * @arg @ref LL_DMA_CHANNEL_7
930 * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF
931 * @retval None
932 */
LL_DMA_SetDataLength(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t NbData)933 __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData)
934 {
935 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR,
936 DMA_CNDTR_NDT, NbData);
937 }
938
939 /**
940 * @brief Get Number of data to transfer.
941 * @note Once the channel is enabled, the return value indicate the
942 * remaining bytes to be transmitted.
943 * @rmtoll CNDTR NDT LL_DMA_GetDataLength
944 * @param DMAx DMAx Instance
945 * @param Channel This parameter can be one of the following values:
946 * @arg @ref LL_DMA_CHANNEL_1
947 * @arg @ref LL_DMA_CHANNEL_2
948 * @arg @ref LL_DMA_CHANNEL_3
949 * @arg @ref LL_DMA_CHANNEL_4
950 * @arg @ref LL_DMA_CHANNEL_5
951 * @arg @ref LL_DMA_CHANNEL_6
952 * @arg @ref LL_DMA_CHANNEL_7
953 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
954 */
LL_DMA_GetDataLength(DMA_TypeDef * DMAx,uint32_t Channel)955 __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel)
956 {
957 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR,
958 DMA_CNDTR_NDT));
959 }
960
961 /**
962 * @brief Configure the Source and Destination addresses.
963 * @note This API must not be called when the DMA channel is enabled.
964 * @note Each IP using DMA provides an API to get directly the register address (LL_PPP_DMA_GetRegAddr).
965 * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n
966 * CMAR MA LL_DMA_ConfigAddresses
967 * @param DMAx DMAx Instance
968 * @param Channel This parameter can be one of the following values:
969 * @arg @ref LL_DMA_CHANNEL_1
970 * @arg @ref LL_DMA_CHANNEL_2
971 * @arg @ref LL_DMA_CHANNEL_3
972 * @arg @ref LL_DMA_CHANNEL_4
973 * @arg @ref LL_DMA_CHANNEL_5
974 * @arg @ref LL_DMA_CHANNEL_6
975 * @arg @ref LL_DMA_CHANNEL_7
976 * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
977 * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
978 * @param Direction This parameter can be one of the following values:
979 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
980 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
981 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
982 * @retval None
983 */
LL_DMA_ConfigAddresses(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddress,uint32_t DstAddress,uint32_t Direction)984 __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress,
985 uint32_t DstAddress, uint32_t Direction)
986 {
987 /* Direction Memory to Periph */
988 if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH)
989 {
990 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, SrcAddress);
991 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, DstAddress);
992 }
993 /* Direction Periph to Memory and Memory to Memory */
994 else
995 {
996 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, SrcAddress);
997 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, DstAddress);
998 }
999 }
1000
1001 /**
1002 * @brief Set the Memory address.
1003 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
1004 * @note This API must not be called when the DMA channel is enabled.
1005 * @rmtoll CMAR MA LL_DMA_SetMemoryAddress
1006 * @param DMAx DMAx Instance
1007 * @param Channel This parameter can be one of the following values:
1008 * @arg @ref LL_DMA_CHANNEL_1
1009 * @arg @ref LL_DMA_CHANNEL_2
1010 * @arg @ref LL_DMA_CHANNEL_3
1011 * @arg @ref LL_DMA_CHANNEL_4
1012 * @arg @ref LL_DMA_CHANNEL_5
1013 * @arg @ref LL_DMA_CHANNEL_6
1014 * @arg @ref LL_DMA_CHANNEL_7
1015 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1016 * @retval None
1017 */
LL_DMA_SetMemoryAddress(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t MemoryAddress)1018 __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress)
1019 {
1020 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress);
1021 }
1022
1023 /**
1024 * @brief Set the Peripheral address.
1025 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
1026 * @note This API must not be called when the DMA channel is enabled.
1027 * @rmtoll CPAR PA LL_DMA_SetPeriphAddress
1028 * @param DMAx DMAx Instance
1029 * @param Channel This parameter can be one of the following values:
1030 * @arg @ref LL_DMA_CHANNEL_1
1031 * @arg @ref LL_DMA_CHANNEL_2
1032 * @arg @ref LL_DMA_CHANNEL_3
1033 * @arg @ref LL_DMA_CHANNEL_4
1034 * @arg @ref LL_DMA_CHANNEL_5
1035 * @arg @ref LL_DMA_CHANNEL_6
1036 * @arg @ref LL_DMA_CHANNEL_7
1037 * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1038 * @retval None
1039 */
LL_DMA_SetPeriphAddress(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t PeriphAddress)1040 __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress)
1041 {
1042 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, PeriphAddress);
1043 }
1044
1045 /**
1046 * @brief Get Memory address.
1047 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
1048 * @rmtoll CMAR MA LL_DMA_GetMemoryAddress
1049 * @param DMAx DMAx Instance
1050 * @param Channel This parameter can be one of the following values:
1051 * @arg @ref LL_DMA_CHANNEL_1
1052 * @arg @ref LL_DMA_CHANNEL_2
1053 * @arg @ref LL_DMA_CHANNEL_3
1054 * @arg @ref LL_DMA_CHANNEL_4
1055 * @arg @ref LL_DMA_CHANNEL_5
1056 * @arg @ref LL_DMA_CHANNEL_6
1057 * @arg @ref LL_DMA_CHANNEL_7
1058 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1059 */
LL_DMA_GetMemoryAddress(DMA_TypeDef * DMAx,uint32_t Channel)1060 __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel)
1061 {
1062 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR));
1063 }
1064
1065 /**
1066 * @brief Get Peripheral address.
1067 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
1068 * @rmtoll CPAR PA LL_DMA_GetPeriphAddress
1069 * @param DMAx DMAx Instance
1070 * @param Channel This parameter can be one of the following values:
1071 * @arg @ref LL_DMA_CHANNEL_1
1072 * @arg @ref LL_DMA_CHANNEL_2
1073 * @arg @ref LL_DMA_CHANNEL_3
1074 * @arg @ref LL_DMA_CHANNEL_4
1075 * @arg @ref LL_DMA_CHANNEL_5
1076 * @arg @ref LL_DMA_CHANNEL_6
1077 * @arg @ref LL_DMA_CHANNEL_7
1078 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1079 */
LL_DMA_GetPeriphAddress(DMA_TypeDef * DMAx,uint32_t Channel)1080 __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel)
1081 {
1082 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR));
1083 }
1084
1085 /**
1086 * @brief Set the Memory to Memory Source address.
1087 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
1088 * @note This API must not be called when the DMA channel is enabled.
1089 * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress
1090 * @param DMAx DMAx Instance
1091 * @param Channel This parameter can be one of the following values:
1092 * @arg @ref LL_DMA_CHANNEL_1
1093 * @arg @ref LL_DMA_CHANNEL_2
1094 * @arg @ref LL_DMA_CHANNEL_3
1095 * @arg @ref LL_DMA_CHANNEL_4
1096 * @arg @ref LL_DMA_CHANNEL_5
1097 * @arg @ref LL_DMA_CHANNEL_6
1098 * @arg @ref LL_DMA_CHANNEL_7
1099 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1100 * @retval None
1101 */
LL_DMA_SetM2MSrcAddress(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t MemoryAddress)1102 __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress)
1103 {
1104 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, MemoryAddress);
1105 }
1106
1107 /**
1108 * @brief Set the Memory to Memory Destination address.
1109 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
1110 * @note This API must not be called when the DMA channel is enabled.
1111 * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress
1112 * @param DMAx DMAx Instance
1113 * @param Channel This parameter can be one of the following values:
1114 * @arg @ref LL_DMA_CHANNEL_1
1115 * @arg @ref LL_DMA_CHANNEL_2
1116 * @arg @ref LL_DMA_CHANNEL_3
1117 * @arg @ref LL_DMA_CHANNEL_4
1118 * @arg @ref LL_DMA_CHANNEL_5
1119 * @arg @ref LL_DMA_CHANNEL_6
1120 * @arg @ref LL_DMA_CHANNEL_7
1121 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1122 * @retval None
1123 */
LL_DMA_SetM2MDstAddress(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t MemoryAddress)1124 __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress)
1125 {
1126 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress);
1127 }
1128
1129 /**
1130 * @brief Get the Memory to Memory Source address.
1131 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
1132 * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress
1133 * @param DMAx DMAx Instance
1134 * @param Channel This parameter can be one of the following values:
1135 * @arg @ref LL_DMA_CHANNEL_1
1136 * @arg @ref LL_DMA_CHANNEL_2
1137 * @arg @ref LL_DMA_CHANNEL_3
1138 * @arg @ref LL_DMA_CHANNEL_4
1139 * @arg @ref LL_DMA_CHANNEL_5
1140 * @arg @ref LL_DMA_CHANNEL_6
1141 * @arg @ref LL_DMA_CHANNEL_7
1142 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1143 */
LL_DMA_GetM2MSrcAddress(DMA_TypeDef * DMAx,uint32_t Channel)1144 __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel)
1145 {
1146 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR));
1147 }
1148
1149 /**
1150 * @brief Get the Memory to Memory Destination address.
1151 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
1152 * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress
1153 * @param DMAx DMAx Instance
1154 * @param Channel This parameter can be one of the following values:
1155 * @arg @ref LL_DMA_CHANNEL_1
1156 * @arg @ref LL_DMA_CHANNEL_2
1157 * @arg @ref LL_DMA_CHANNEL_3
1158 * @arg @ref LL_DMA_CHANNEL_4
1159 * @arg @ref LL_DMA_CHANNEL_5
1160 * @arg @ref LL_DMA_CHANNEL_6
1161 * @arg @ref LL_DMA_CHANNEL_7
1162 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1163 */
LL_DMA_GetM2MDstAddress(DMA_TypeDef * DMAx,uint32_t Channel)1164 __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel)
1165 {
1166 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR));
1167 }
1168
1169 /**
1170 * @brief Set DMA request for DMA instance on Channel x.
1171 * @note Please refer to Reference Manual to get the available mapping of Request value link to Channel Selection.
1172 * @rmtoll CSELR C1S LL_DMA_SetPeriphRequest\n
1173 * CSELR C2S LL_DMA_SetPeriphRequest\n
1174 * CSELR C3S LL_DMA_SetPeriphRequest\n
1175 * CSELR C4S LL_DMA_SetPeriphRequest\n
1176 * CSELR C5S LL_DMA_SetPeriphRequest\n
1177 * CSELR C6S LL_DMA_SetPeriphRequest\n
1178 * CSELR C7S LL_DMA_SetPeriphRequest
1179 * @param DMAx DMAx Instance
1180 * @param Channel This parameter can be one of the following values:
1181 * @arg @ref LL_DMA_CHANNEL_1
1182 * @arg @ref LL_DMA_CHANNEL_2
1183 * @arg @ref LL_DMA_CHANNEL_3
1184 * @arg @ref LL_DMA_CHANNEL_4
1185 * @arg @ref LL_DMA_CHANNEL_5
1186 * @arg @ref LL_DMA_CHANNEL_6
1187 * @arg @ref LL_DMA_CHANNEL_7
1188 * @param Request This parameter can be one of the following values:
1189 * @arg @ref LL_DMA_REQUEST_0
1190 * @arg @ref LL_DMA_REQUEST_1
1191 * @arg @ref LL_DMA_REQUEST_2
1192 * @arg @ref LL_DMA_REQUEST_3
1193 * @arg @ref LL_DMA_REQUEST_4
1194 * @arg @ref LL_DMA_REQUEST_5
1195 * @arg @ref LL_DMA_REQUEST_6
1196 * @arg @ref LL_DMA_REQUEST_7
1197 * @arg @ref LL_DMA_REQUEST_8
1198 * @arg @ref LL_DMA_REQUEST_9
1199 * @arg @ref LL_DMA_REQUEST_10
1200 * @arg @ref LL_DMA_REQUEST_11
1201 * @arg @ref LL_DMA_REQUEST_12
1202 * @arg @ref LL_DMA_REQUEST_13
1203 * @arg @ref LL_DMA_REQUEST_14
1204 * @arg @ref LL_DMA_REQUEST_15
1205 * @retval None
1206 */
LL_DMA_SetPeriphRequest(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Request)1207 __STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request)
1208 {
1209 MODIFY_REG(((DMA_Request_TypeDef *)((uint32_t)((uint32_t)DMAx + DMA_CSELR_OFFSET)))->CSELR,
1210 DMA_CSELR_C1S << ((Channel - 1U) * 4U), Request << DMA_POSITION_CSELR_CXS);
1211 }
1212
1213 /**
1214 * @brief Get DMA request for DMA instance on Channel x.
1215 * @rmtoll CSELR C1S LL_DMA_GetPeriphRequest\n
1216 * CSELR C2S LL_DMA_GetPeriphRequest\n
1217 * CSELR C3S LL_DMA_GetPeriphRequest\n
1218 * CSELR C4S LL_DMA_GetPeriphRequest\n
1219 * CSELR C5S LL_DMA_GetPeriphRequest\n
1220 * CSELR C6S LL_DMA_GetPeriphRequest\n
1221 * CSELR C7S LL_DMA_GetPeriphRequest
1222 * @param DMAx DMAx Instance
1223 * @param Channel This parameter can be one of the following values:
1224 * @arg @ref LL_DMA_CHANNEL_1
1225 * @arg @ref LL_DMA_CHANNEL_2
1226 * @arg @ref LL_DMA_CHANNEL_3
1227 * @arg @ref LL_DMA_CHANNEL_4
1228 * @arg @ref LL_DMA_CHANNEL_5
1229 * @arg @ref LL_DMA_CHANNEL_6
1230 * @arg @ref LL_DMA_CHANNEL_7
1231 * @retval Returned value can be one of the following values:
1232 * @arg @ref LL_DMA_REQUEST_0
1233 * @arg @ref LL_DMA_REQUEST_1
1234 * @arg @ref LL_DMA_REQUEST_2
1235 * @arg @ref LL_DMA_REQUEST_3
1236 * @arg @ref LL_DMA_REQUEST_4
1237 * @arg @ref LL_DMA_REQUEST_5
1238 * @arg @ref LL_DMA_REQUEST_6
1239 * @arg @ref LL_DMA_REQUEST_7
1240 * @arg @ref LL_DMA_REQUEST_8
1241 * @arg @ref LL_DMA_REQUEST_9
1242 * @arg @ref LL_DMA_REQUEST_10
1243 * @arg @ref LL_DMA_REQUEST_11
1244 * @arg @ref LL_DMA_REQUEST_12
1245 * @arg @ref LL_DMA_REQUEST_13
1246 * @arg @ref LL_DMA_REQUEST_14
1247 * @arg @ref LL_DMA_REQUEST_15
1248 */
LL_DMA_GetPeriphRequest(DMA_TypeDef * DMAx,uint32_t Channel)1249 __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel)
1250 {
1251 return (READ_BIT(((DMA_Request_TypeDef *)((uint32_t)((uint32_t)DMAx + DMA_CSELR_OFFSET)))->CSELR,
1252 DMA_CSELR_C1S << ((Channel - 1U) * 4U)) >> DMA_POSITION_CSELR_CXS);
1253 }
1254
1255 /**
1256 * @}
1257 */
1258
1259 /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management
1260 * @{
1261 */
1262
1263 /**
1264 * @brief Get Channel 1 global interrupt flag.
1265 * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1
1266 * @param DMAx DMAx Instance
1267 * @retval State of bit (1 or 0).
1268 */
LL_DMA_IsActiveFlag_GI1(DMA_TypeDef * DMAx)1269 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef *DMAx)
1270 {
1271 return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)) ? 1UL : 0UL);
1272 }
1273
1274 /**
1275 * @brief Get Channel 2 global interrupt flag.
1276 * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2
1277 * @param DMAx DMAx Instance
1278 * @retval State of bit (1 or 0).
1279 */
LL_DMA_IsActiveFlag_GI2(DMA_TypeDef * DMAx)1280 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef *DMAx)
1281 {
1282 return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)) ? 1UL : 0UL);
1283 }
1284
1285 /**
1286 * @brief Get Channel 3 global interrupt flag.
1287 * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3
1288 * @param DMAx DMAx Instance
1289 * @retval State of bit (1 or 0).
1290 */
LL_DMA_IsActiveFlag_GI3(DMA_TypeDef * DMAx)1291 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef *DMAx)
1292 {
1293 return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)) ? 1UL : 0UL);
1294 }
1295
1296 /**
1297 * @brief Get Channel 4 global interrupt flag.
1298 * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4
1299 * @param DMAx DMAx Instance
1300 * @retval State of bit (1 or 0).
1301 */
LL_DMA_IsActiveFlag_GI4(DMA_TypeDef * DMAx)1302 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef *DMAx)
1303 {
1304 return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)) ? 1UL : 0UL);
1305 }
1306
1307 /**
1308 * @brief Get Channel 5 global interrupt flag.
1309 * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5
1310 * @param DMAx DMAx Instance
1311 * @retval State of bit (1 or 0).
1312 */
LL_DMA_IsActiveFlag_GI5(DMA_TypeDef * DMAx)1313 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef *DMAx)
1314 {
1315 return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)) ? 1UL : 0UL);
1316 }
1317
1318 #if defined(DMA1_Channel6)
1319 /**
1320 * @brief Get Channel 6 global interrupt flag.
1321 * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6
1322 * @param DMAx DMAx Instance
1323 * @retval State of bit (1 or 0).
1324 */
LL_DMA_IsActiveFlag_GI6(DMA_TypeDef * DMAx)1325 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef *DMAx)
1326 {
1327 return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)) ? 1UL : 0UL);
1328 }
1329 #endif
1330
1331 #if defined(DMA1_Channel7)
1332 /**
1333 * @brief Get Channel 7 global interrupt flag.
1334 * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7
1335 * @param DMAx DMAx Instance
1336 * @retval State of bit (1 or 0).
1337 */
LL_DMA_IsActiveFlag_GI7(DMA_TypeDef * DMAx)1338 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef *DMAx)
1339 {
1340 return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)) ? 1UL : 0UL);
1341 }
1342 #endif
1343
1344 /**
1345 * @brief Get Channel 1 transfer complete flag.
1346 * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1
1347 * @param DMAx DMAx Instance
1348 * @retval State of bit (1 or 0).
1349 */
LL_DMA_IsActiveFlag_TC1(DMA_TypeDef * DMAx)1350 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx)
1351 {
1352 return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)) ? 1UL : 0UL);
1353 }
1354
1355 /**
1356 * @brief Get Channel 2 transfer complete flag.
1357 * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2
1358 * @param DMAx DMAx Instance
1359 * @retval State of bit (1 or 0).
1360 */
LL_DMA_IsActiveFlag_TC2(DMA_TypeDef * DMAx)1361 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx)
1362 {
1363 return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)) ? 1UL : 0UL);
1364 }
1365
1366 /**
1367 * @brief Get Channel 3 transfer complete flag.
1368 * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3
1369 * @param DMAx DMAx Instance
1370 * @retval State of bit (1 or 0).
1371 */
LL_DMA_IsActiveFlag_TC3(DMA_TypeDef * DMAx)1372 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx)
1373 {
1374 return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)) ? 1UL : 0UL);
1375 }
1376
1377 /**
1378 * @brief Get Channel 4 transfer complete flag.
1379 * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4
1380 * @param DMAx DMAx Instance
1381 * @retval State of bit (1 or 0).
1382 */
LL_DMA_IsActiveFlag_TC4(DMA_TypeDef * DMAx)1383 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx)
1384 {
1385 return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)) ? 1UL : 0UL);
1386 }
1387
1388 /**
1389 * @brief Get Channel 5 transfer complete flag.
1390 * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5
1391 * @param DMAx DMAx Instance
1392 * @retval State of bit (1 or 0).
1393 */
LL_DMA_IsActiveFlag_TC5(DMA_TypeDef * DMAx)1394 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx)
1395 {
1396 return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)) ? 1UL : 0UL);
1397 }
1398
1399 #if defined(DMA1_Channel6)
1400 /**
1401 * @brief Get Channel 6 transfer complete flag.
1402 * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6
1403 * @param DMAx DMAx Instance
1404 * @retval State of bit (1 or 0).
1405 */
LL_DMA_IsActiveFlag_TC6(DMA_TypeDef * DMAx)1406 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx)
1407 {
1408 return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)) ? 1UL : 0UL);
1409 }
1410 #endif
1411
1412 #if defined(DMA1_Channel7)
1413 /**
1414 * @brief Get Channel 7 transfer complete flag.
1415 * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7
1416 * @param DMAx DMAx Instance
1417 * @retval State of bit (1 or 0).
1418 */
LL_DMA_IsActiveFlag_TC7(DMA_TypeDef * DMAx)1419 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx)
1420 {
1421 return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)) ? 1UL : 0UL);
1422 }
1423 #endif
1424
1425 /**
1426 * @brief Get Channel 1 half transfer flag.
1427 * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1
1428 * @param DMAx DMAx Instance
1429 * @retval State of bit (1 or 0).
1430 */
LL_DMA_IsActiveFlag_HT1(DMA_TypeDef * DMAx)1431 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx)
1432 {
1433 return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)) ? 1UL : 0UL);
1434 }
1435
1436 /**
1437 * @brief Get Channel 2 half transfer flag.
1438 * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2
1439 * @param DMAx DMAx Instance
1440 * @retval State of bit (1 or 0).
1441 */
LL_DMA_IsActiveFlag_HT2(DMA_TypeDef * DMAx)1442 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx)
1443 {
1444 return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)) ? 1UL : 0UL);
1445 }
1446
1447 /**
1448 * @brief Get Channel 3 half transfer flag.
1449 * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3
1450 * @param DMAx DMAx Instance
1451 * @retval State of bit (1 or 0).
1452 */
LL_DMA_IsActiveFlag_HT3(DMA_TypeDef * DMAx)1453 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx)
1454 {
1455 return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)) ? 1UL : 0UL);
1456 }
1457
1458 /**
1459 * @brief Get Channel 4 half transfer flag.
1460 * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4
1461 * @param DMAx DMAx Instance
1462 * @retval State of bit (1 or 0).
1463 */
LL_DMA_IsActiveFlag_HT4(DMA_TypeDef * DMAx)1464 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx)
1465 {
1466 return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)) ? 1UL : 0UL);
1467 }
1468
1469 /**
1470 * @brief Get Channel 5 half transfer flag.
1471 * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5
1472 * @param DMAx DMAx Instance
1473 * @retval State of bit (1 or 0).
1474 */
LL_DMA_IsActiveFlag_HT5(DMA_TypeDef * DMAx)1475 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx)
1476 {
1477 return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)) ? 1UL : 0UL);
1478 }
1479
1480 #if defined(DMA1_Channel6)
1481 /**
1482 * @brief Get Channel 6 half transfer flag.
1483 * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6
1484 * @param DMAx DMAx Instance
1485 * @retval State of bit (1 or 0).
1486 */
LL_DMA_IsActiveFlag_HT6(DMA_TypeDef * DMAx)1487 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx)
1488 {
1489 return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)) ? 1UL : 0UL);
1490 }
1491 #endif
1492
1493 #if defined(DMA1_Channel7)
1494 /**
1495 * @brief Get Channel 7 half transfer flag.
1496 * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7
1497 * @param DMAx DMAx Instance
1498 * @retval State of bit (1 or 0).
1499 */
LL_DMA_IsActiveFlag_HT7(DMA_TypeDef * DMAx)1500 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx)
1501 {
1502 return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)) ? 1UL : 0UL);
1503 }
1504 #endif
1505
1506 /**
1507 * @brief Get Channel 1 transfer error flag.
1508 * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1
1509 * @param DMAx DMAx Instance
1510 * @retval State of bit (1 or 0).
1511 */
LL_DMA_IsActiveFlag_TE1(DMA_TypeDef * DMAx)1512 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx)
1513 {
1514 return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)) ? 1UL : 0UL);
1515 }
1516
1517 /**
1518 * @brief Get Channel 2 transfer error flag.
1519 * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2
1520 * @param DMAx DMAx Instance
1521 * @retval State of bit (1 or 0).
1522 */
LL_DMA_IsActiveFlag_TE2(DMA_TypeDef * DMAx)1523 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx)
1524 {
1525 return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)) ? 1UL : 0UL);
1526 }
1527
1528 /**
1529 * @brief Get Channel 3 transfer error flag.
1530 * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3
1531 * @param DMAx DMAx Instance
1532 * @retval State of bit (1 or 0).
1533 */
LL_DMA_IsActiveFlag_TE3(DMA_TypeDef * DMAx)1534 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx)
1535 {
1536 return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)) ? 1UL : 0UL);
1537 }
1538
1539 /**
1540 * @brief Get Channel 4 transfer error flag.
1541 * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4
1542 * @param DMAx DMAx Instance
1543 * @retval State of bit (1 or 0).
1544 */
LL_DMA_IsActiveFlag_TE4(DMA_TypeDef * DMAx)1545 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx)
1546 {
1547 return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)) ? 1UL : 0UL);
1548 }
1549
1550 /**
1551 * @brief Get Channel 5 transfer error flag.
1552 * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5
1553 * @param DMAx DMAx Instance
1554 * @retval State of bit (1 or 0).
1555 */
LL_DMA_IsActiveFlag_TE5(DMA_TypeDef * DMAx)1556 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx)
1557 {
1558 return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)) ? 1UL : 0UL);
1559 }
1560
1561 #if defined(DMA1_Channel6)
1562 /**
1563 * @brief Get Channel 6 transfer error flag.
1564 * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6
1565 * @param DMAx DMAx Instance
1566 * @retval State of bit (1 or 0).
1567 */
LL_DMA_IsActiveFlag_TE6(DMA_TypeDef * DMAx)1568 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx)
1569 {
1570 return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)) ? 1UL : 0UL);
1571 }
1572 #endif
1573
1574 #if defined(DMA1_Channel7)
1575 /**
1576 * @brief Get Channel 7 transfer error flag.
1577 * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7
1578 * @param DMAx DMAx Instance
1579 * @retval State of bit (1 or 0).
1580 */
LL_DMA_IsActiveFlag_TE7(DMA_TypeDef * DMAx)1581 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx)
1582 {
1583 return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)) ? 1UL : 0UL);
1584 }
1585 #endif
1586
1587 /**
1588 * @brief Clear Channel 1 global interrupt flag.
1589 * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1
1590 * @param DMAx DMAx Instance
1591 * @retval None
1592 */
LL_DMA_ClearFlag_GI1(DMA_TypeDef * DMAx)1593 __STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx)
1594 {
1595 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF1);
1596 }
1597
1598 /**
1599 * @brief Clear Channel 2 global interrupt flag.
1600 * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2
1601 * @param DMAx DMAx Instance
1602 * @retval None
1603 */
LL_DMA_ClearFlag_GI2(DMA_TypeDef * DMAx)1604 __STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx)
1605 {
1606 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF2);
1607 }
1608
1609 /**
1610 * @brief Clear Channel 3 global interrupt flag.
1611 * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3
1612 * @param DMAx DMAx Instance
1613 * @retval None
1614 */
LL_DMA_ClearFlag_GI3(DMA_TypeDef * DMAx)1615 __STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx)
1616 {
1617 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF3);
1618 }
1619
1620 /**
1621 * @brief Clear Channel 4 global interrupt flag.
1622 * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4
1623 * @param DMAx DMAx Instance
1624 * @retval None
1625 */
LL_DMA_ClearFlag_GI4(DMA_TypeDef * DMAx)1626 __STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx)
1627 {
1628 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF4);
1629 }
1630
1631 /**
1632 * @brief Clear Channel 5 global interrupt flag.
1633 * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5
1634 * @param DMAx DMAx Instance
1635 * @retval None
1636 */
LL_DMA_ClearFlag_GI5(DMA_TypeDef * DMAx)1637 __STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx)
1638 {
1639 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF5);
1640 }
1641
1642 #if defined(DMA1_Channel6)
1643 /**
1644 * @brief Clear Channel 6 global interrupt flag.
1645 * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6
1646 * @param DMAx DMAx Instance
1647 * @retval None
1648 */
LL_DMA_ClearFlag_GI6(DMA_TypeDef * DMAx)1649 __STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx)
1650 {
1651 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF6);
1652 }
1653 #endif
1654
1655 #if defined(DMA1_Channel7)
1656 /**
1657 * @brief Clear Channel 7 global interrupt flag.
1658 * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7
1659 * @param DMAx DMAx Instance
1660 * @retval None
1661 */
LL_DMA_ClearFlag_GI7(DMA_TypeDef * DMAx)1662 __STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx)
1663 {
1664 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF7);
1665 }
1666 #endif
1667
1668 /**
1669 * @brief Clear Channel 1 transfer complete flag.
1670 * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1
1671 * @param DMAx DMAx Instance
1672 * @retval None
1673 */
LL_DMA_ClearFlag_TC1(DMA_TypeDef * DMAx)1674 __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx)
1675 {
1676 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF1);
1677 }
1678
1679 /**
1680 * @brief Clear Channel 2 transfer complete flag.
1681 * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2
1682 * @param DMAx DMAx Instance
1683 * @retval None
1684 */
LL_DMA_ClearFlag_TC2(DMA_TypeDef * DMAx)1685 __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx)
1686 {
1687 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF2);
1688 }
1689
1690 /**
1691 * @brief Clear Channel 3 transfer complete flag.
1692 * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3
1693 * @param DMAx DMAx Instance
1694 * @retval None
1695 */
LL_DMA_ClearFlag_TC3(DMA_TypeDef * DMAx)1696 __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx)
1697 {
1698 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF3);
1699 }
1700
1701 /**
1702 * @brief Clear Channel 4 transfer complete flag.
1703 * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4
1704 * @param DMAx DMAx Instance
1705 * @retval None
1706 */
LL_DMA_ClearFlag_TC4(DMA_TypeDef * DMAx)1707 __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx)
1708 {
1709 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF4);
1710 }
1711
1712 /**
1713 * @brief Clear Channel 5 transfer complete flag.
1714 * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5
1715 * @param DMAx DMAx Instance
1716 * @retval None
1717 */
LL_DMA_ClearFlag_TC5(DMA_TypeDef * DMAx)1718 __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx)
1719 {
1720 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF5);
1721 }
1722
1723 #if defined(DMA1_Channel6)
1724 /**
1725 * @brief Clear Channel 6 transfer complete flag.
1726 * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6
1727 * @param DMAx DMAx Instance
1728 * @retval None
1729 */
LL_DMA_ClearFlag_TC6(DMA_TypeDef * DMAx)1730 __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx)
1731 {
1732 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF6);
1733 }
1734 #endif
1735
1736 #if defined(DMA1_Channel7)
1737 /**
1738 * @brief Clear Channel 7 transfer complete flag.
1739 * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7
1740 * @param DMAx DMAx Instance
1741 * @retval None
1742 */
LL_DMA_ClearFlag_TC7(DMA_TypeDef * DMAx)1743 __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx)
1744 {
1745 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF7);
1746 }
1747 #endif
1748
1749 /**
1750 * @brief Clear Channel 1 half transfer flag.
1751 * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1
1752 * @param DMAx DMAx Instance
1753 * @retval None
1754 */
LL_DMA_ClearFlag_HT1(DMA_TypeDef * DMAx)1755 __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx)
1756 {
1757 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF1);
1758 }
1759
1760 /**
1761 * @brief Clear Channel 2 half transfer flag.
1762 * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2
1763 * @param DMAx DMAx Instance
1764 * @retval None
1765 */
LL_DMA_ClearFlag_HT2(DMA_TypeDef * DMAx)1766 __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx)
1767 {
1768 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF2);
1769 }
1770
1771 /**
1772 * @brief Clear Channel 3 half transfer flag.
1773 * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3
1774 * @param DMAx DMAx Instance
1775 * @retval None
1776 */
LL_DMA_ClearFlag_HT3(DMA_TypeDef * DMAx)1777 __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx)
1778 {
1779 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF3);
1780 }
1781
1782 /**
1783 * @brief Clear Channel 4 half transfer flag.
1784 * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4
1785 * @param DMAx DMAx Instance
1786 * @retval None
1787 */
LL_DMA_ClearFlag_HT4(DMA_TypeDef * DMAx)1788 __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx)
1789 {
1790 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF4);
1791 }
1792
1793 /**
1794 * @brief Clear Channel 5 half transfer flag.
1795 * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5
1796 * @param DMAx DMAx Instance
1797 * @retval None
1798 */
LL_DMA_ClearFlag_HT5(DMA_TypeDef * DMAx)1799 __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx)
1800 {
1801 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF5);
1802 }
1803
1804 #if defined(DMA1_Channel6)
1805 /**
1806 * @brief Clear Channel 6 half transfer flag.
1807 * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6
1808 * @param DMAx DMAx Instance
1809 * @retval None
1810 */
LL_DMA_ClearFlag_HT6(DMA_TypeDef * DMAx)1811 __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx)
1812 {
1813 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF6);
1814 }
1815 #endif
1816
1817 #if defined(DMA1_Channel7)
1818 /**
1819 * @brief Clear Channel 7 half transfer flag.
1820 * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7
1821 * @param DMAx DMAx Instance
1822 * @retval None
1823 */
LL_DMA_ClearFlag_HT7(DMA_TypeDef * DMAx)1824 __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx)
1825 {
1826 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF7);
1827 }
1828 #endif
1829
1830 /**
1831 * @brief Clear Channel 1 transfer error flag.
1832 * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1
1833 * @param DMAx DMAx Instance
1834 * @retval None
1835 */
LL_DMA_ClearFlag_TE1(DMA_TypeDef * DMAx)1836 __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx)
1837 {
1838 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF1);
1839 }
1840
1841 /**
1842 * @brief Clear Channel 2 transfer error flag.
1843 * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2
1844 * @param DMAx DMAx Instance
1845 * @retval None
1846 */
LL_DMA_ClearFlag_TE2(DMA_TypeDef * DMAx)1847 __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx)
1848 {
1849 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF2);
1850 }
1851
1852 /**
1853 * @brief Clear Channel 3 transfer error flag.
1854 * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3
1855 * @param DMAx DMAx Instance
1856 * @retval None
1857 */
LL_DMA_ClearFlag_TE3(DMA_TypeDef * DMAx)1858 __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx)
1859 {
1860 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF3);
1861 }
1862
1863 /**
1864 * @brief Clear Channel 4 transfer error flag.
1865 * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4
1866 * @param DMAx DMAx Instance
1867 * @retval None
1868 */
LL_DMA_ClearFlag_TE4(DMA_TypeDef * DMAx)1869 __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx)
1870 {
1871 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF4);
1872 }
1873
1874 /**
1875 * @brief Clear Channel 5 transfer error flag.
1876 * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5
1877 * @param DMAx DMAx Instance
1878 * @retval None
1879 */
LL_DMA_ClearFlag_TE5(DMA_TypeDef * DMAx)1880 __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx)
1881 {
1882 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF5);
1883 }
1884
1885 #if defined(DMA1_Channel6)
1886 /**
1887 * @brief Clear Channel 6 transfer error flag.
1888 * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6
1889 * @param DMAx DMAx Instance
1890 * @retval None
1891 */
LL_DMA_ClearFlag_TE6(DMA_TypeDef * DMAx)1892 __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx)
1893 {
1894 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF6);
1895 }
1896 #endif
1897
1898 #if defined(DMA1_Channel7)
1899 /**
1900 * @brief Clear Channel 7 transfer error flag.
1901 * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7
1902 * @param DMAx DMAx Instance
1903 * @retval None
1904 */
LL_DMA_ClearFlag_TE7(DMA_TypeDef * DMAx)1905 __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx)
1906 {
1907 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF7);
1908 }
1909 #endif
1910
1911 /**
1912 * @}
1913 */
1914
1915 /** @defgroup DMA_LL_EF_IT_Management IT_Management
1916 * @{
1917 */
1918 /**
1919 * @brief Enable Transfer complete interrupt.
1920 * @rmtoll CCR TCIE LL_DMA_EnableIT_TC
1921 * @param DMAx DMAx Instance
1922 * @param Channel This parameter can be one of the following values:
1923 * @arg @ref LL_DMA_CHANNEL_1
1924 * @arg @ref LL_DMA_CHANNEL_2
1925 * @arg @ref LL_DMA_CHANNEL_3
1926 * @arg @ref LL_DMA_CHANNEL_4
1927 * @arg @ref LL_DMA_CHANNEL_5
1928 * @arg @ref LL_DMA_CHANNEL_6
1929 * @arg @ref LL_DMA_CHANNEL_7
1930 * @retval None
1931 */
LL_DMA_EnableIT_TC(DMA_TypeDef * DMAx,uint32_t Channel)1932 __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel)
1933 {
1934 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE);
1935 }
1936
1937 /**
1938 * @brief Enable Half transfer interrupt.
1939 * @rmtoll CCR HTIE LL_DMA_EnableIT_HT
1940 * @param DMAx DMAx Instance
1941 * @param Channel This parameter can be one of the following values:
1942 * @arg @ref LL_DMA_CHANNEL_1
1943 * @arg @ref LL_DMA_CHANNEL_2
1944 * @arg @ref LL_DMA_CHANNEL_3
1945 * @arg @ref LL_DMA_CHANNEL_4
1946 * @arg @ref LL_DMA_CHANNEL_5
1947 * @arg @ref LL_DMA_CHANNEL_6
1948 * @arg @ref LL_DMA_CHANNEL_7
1949 * @retval None
1950 */
LL_DMA_EnableIT_HT(DMA_TypeDef * DMAx,uint32_t Channel)1951 __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel)
1952 {
1953 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE);
1954 }
1955
1956 /**
1957 * @brief Enable Transfer error interrupt.
1958 * @rmtoll CCR TEIE LL_DMA_EnableIT_TE
1959 * @param DMAx DMAx Instance
1960 * @param Channel This parameter can be one of the following values:
1961 * @arg @ref LL_DMA_CHANNEL_1
1962 * @arg @ref LL_DMA_CHANNEL_2
1963 * @arg @ref LL_DMA_CHANNEL_3
1964 * @arg @ref LL_DMA_CHANNEL_4
1965 * @arg @ref LL_DMA_CHANNEL_5
1966 * @arg @ref LL_DMA_CHANNEL_6
1967 * @arg @ref LL_DMA_CHANNEL_7
1968 * @retval None
1969 */
LL_DMA_EnableIT_TE(DMA_TypeDef * DMAx,uint32_t Channel)1970 __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel)
1971 {
1972 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE);
1973 }
1974
1975 /**
1976 * @brief Disable Transfer complete interrupt.
1977 * @rmtoll CCR TCIE LL_DMA_DisableIT_TC
1978 * @param DMAx DMAx Instance
1979 * @param Channel This parameter can be one of the following values:
1980 * @arg @ref LL_DMA_CHANNEL_1
1981 * @arg @ref LL_DMA_CHANNEL_2
1982 * @arg @ref LL_DMA_CHANNEL_3
1983 * @arg @ref LL_DMA_CHANNEL_4
1984 * @arg @ref LL_DMA_CHANNEL_5
1985 * @arg @ref LL_DMA_CHANNEL_6
1986 * @arg @ref LL_DMA_CHANNEL_7
1987 * @retval None
1988 */
LL_DMA_DisableIT_TC(DMA_TypeDef * DMAx,uint32_t Channel)1989 __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel)
1990 {
1991 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE);
1992 }
1993
1994 /**
1995 * @brief Disable Half transfer interrupt.
1996 * @rmtoll CCR HTIE LL_DMA_DisableIT_HT
1997 * @param DMAx DMAx Instance
1998 * @param Channel This parameter can be one of the following values:
1999 * @arg @ref LL_DMA_CHANNEL_1
2000 * @arg @ref LL_DMA_CHANNEL_2
2001 * @arg @ref LL_DMA_CHANNEL_3
2002 * @arg @ref LL_DMA_CHANNEL_4
2003 * @arg @ref LL_DMA_CHANNEL_5
2004 * @arg @ref LL_DMA_CHANNEL_6
2005 * @arg @ref LL_DMA_CHANNEL_7
2006 * @retval None
2007 */
LL_DMA_DisableIT_HT(DMA_TypeDef * DMAx,uint32_t Channel)2008 __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel)
2009 {
2010 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE);
2011 }
2012
2013 /**
2014 * @brief Disable Transfer error interrupt.
2015 * @rmtoll CCR TEIE LL_DMA_DisableIT_TE
2016 * @param DMAx DMAx Instance
2017 * @param Channel This parameter can be one of the following values:
2018 * @arg @ref LL_DMA_CHANNEL_1
2019 * @arg @ref LL_DMA_CHANNEL_2
2020 * @arg @ref LL_DMA_CHANNEL_3
2021 * @arg @ref LL_DMA_CHANNEL_4
2022 * @arg @ref LL_DMA_CHANNEL_5
2023 * @arg @ref LL_DMA_CHANNEL_6
2024 * @arg @ref LL_DMA_CHANNEL_7
2025 * @retval None
2026 */
LL_DMA_DisableIT_TE(DMA_TypeDef * DMAx,uint32_t Channel)2027 __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel)
2028 {
2029 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE);
2030 }
2031
2032 /**
2033 * @brief Check if Transfer complete Interrupt is enabled.
2034 * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC
2035 * @param DMAx DMAx Instance
2036 * @param Channel This parameter can be one of the following values:
2037 * @arg @ref LL_DMA_CHANNEL_1
2038 * @arg @ref LL_DMA_CHANNEL_2
2039 * @arg @ref LL_DMA_CHANNEL_3
2040 * @arg @ref LL_DMA_CHANNEL_4
2041 * @arg @ref LL_DMA_CHANNEL_5
2042 * @arg @ref LL_DMA_CHANNEL_6
2043 * @arg @ref LL_DMA_CHANNEL_7
2044 * @retval State of bit (1 or 0).
2045 */
LL_DMA_IsEnabledIT_TC(DMA_TypeDef * DMAx,uint32_t Channel)2046 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel)
2047 {
2048 return ((READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
2049 DMA_CCR_TCIE) == (DMA_CCR_TCIE)) ? 1UL : 0UL);
2050 }
2051
2052 /**
2053 * @brief Check if Half transfer Interrupt is enabled.
2054 * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT
2055 * @param DMAx DMAx Instance
2056 * @param Channel This parameter can be one of the following values:
2057 * @arg @ref LL_DMA_CHANNEL_1
2058 * @arg @ref LL_DMA_CHANNEL_2
2059 * @arg @ref LL_DMA_CHANNEL_3
2060 * @arg @ref LL_DMA_CHANNEL_4
2061 * @arg @ref LL_DMA_CHANNEL_5
2062 * @arg @ref LL_DMA_CHANNEL_6
2063 * @arg @ref LL_DMA_CHANNEL_7
2064 * @retval State of bit (1 or 0).
2065 */
LL_DMA_IsEnabledIT_HT(DMA_TypeDef * DMAx,uint32_t Channel)2066 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel)
2067 {
2068 return ((READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
2069 DMA_CCR_HTIE) == (DMA_CCR_HTIE)) ? 1UL : 0UL);
2070 }
2071
2072 /**
2073 * @brief Check if Transfer error Interrupt is enabled.
2074 * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE
2075 * @param DMAx DMAx Instance
2076 * @param Channel This parameter can be one of the following values:
2077 * @arg @ref LL_DMA_CHANNEL_1
2078 * @arg @ref LL_DMA_CHANNEL_2
2079 * @arg @ref LL_DMA_CHANNEL_3
2080 * @arg @ref LL_DMA_CHANNEL_4
2081 * @arg @ref LL_DMA_CHANNEL_5
2082 * @arg @ref LL_DMA_CHANNEL_6
2083 * @arg @ref LL_DMA_CHANNEL_7
2084 * @retval State of bit (1 or 0).
2085 */
LL_DMA_IsEnabledIT_TE(DMA_TypeDef * DMAx,uint32_t Channel)2086 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel)
2087 {
2088 return ((READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR,
2089 DMA_CCR_TEIE) == (DMA_CCR_TEIE)) ? 1UL : 0UL);
2090 }
2091
2092 /**
2093 * @}
2094 */
2095
2096 #if defined(USE_FULL_LL_DRIVER)
2097 /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
2098 * @{
2099 */
2100 ErrorStatus LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct);
2101 ErrorStatus LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel);
2102 void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
2103
2104 /**
2105 * @}
2106 */
2107 #endif /* USE_FULL_LL_DRIVER */
2108
2109 /**
2110 * @}
2111 */
2112
2113 /**
2114 * @}
2115 */
2116
2117 #endif /* DMA1 */
2118
2119 /**
2120 * @}
2121 */
2122
2123 #ifdef __cplusplus
2124 }
2125 #endif
2126
2127 #endif /* STM32L0xx_LL_DMA_H */
2128
2129