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