1 /**
2   ******************************************************************************
3   * @file    stm32n6xx_ll_dma.h
4   * @author  MCD Application Team
5   * @brief   Header file of DMA LL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2023 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  @verbatim
18   ==============================================================================
19                         ##### LL DMA driver acronyms #####
20   ==============================================================================
21   [..]  Acronyms table :
22                    =========================================
23                    || Acronym ||                          ||
24                    =========================================
25                    || SRC     ||  Source                  ||
26                    || DEST    ||  Destination             ||
27                    || ADDR    ||  Address                 ||
28                    || ADDRS   ||  Addresses               ||
29                    || INC     ||  Increment / Incremented ||
30                    || DEC     ||  Decrement / Decremented ||
31                    || BLK     ||  Block                   ||
32                    || RPT     ||  Repeat / Repeated       ||
33                    || TRIG    ||  Trigger                 ||
34                    =========================================
35  @endverbatim
36   ******************************************************************************
37   */
38 
39 /* Define to prevent recursive inclusion -------------------------------------*/
40 #ifndef STM32N6xx_LL_DMA_H
41 #define STM32N6xx_LL_DMA_H
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif /* __cplusplus */
46 
47 /* Includes ------------------------------------------------------------------*/
48 #include "stm32n6xx.h"
49 
50 /** @addtogroup STM32N6xx_LL_Driver
51   * @{
52   */
53 
54 #if (defined (GPDMA1) || defined (HPDMA1))
55 
56 /** @defgroup DMA_LL DMA
57   * @{
58   */
59 
60 /* Private types -------------------------------------------------------------*/
61 /* Private variables ---------------------------------------------------------*/
62 
63 /** @defgroup DMA_LL_Private_Variables DMA Private Variables
64   * @{
65   */
66 #define DMA_CHANNEL0_OFFSET  (0x00000050UL)
67 #define DMA_CHANNEL1_OFFSET  (0x000000D0UL)
68 #define DMA_CHANNEL2_OFFSET  (0x00000150UL)
69 #define DMA_CHANNEL3_OFFSET  (0x000001D0UL)
70 #define DMA_CHANNEL4_OFFSET  (0x00000250UL)
71 #define DMA_CHANNEL5_OFFSET  (0x000002D0UL)
72 #define DMA_CHANNEL6_OFFSET  (0x00000350UL)
73 #define DMA_CHANNEL7_OFFSET  (0x000003D0UL)
74 #define DMA_CHANNEL8_OFFSET  (0x00000450UL)
75 #define DMA_CHANNEL9_OFFSET  (0x000004D0UL)
76 #define DMA_CHANNEL10_OFFSET (0x00000550UL)
77 #define DMA_CHANNEL11_OFFSET (0x000005D0UL)
78 #define DMA_CHANNEL12_OFFSET (0x00000650UL)
79 #define DMA_CHANNEL13_OFFSET (0x000006D0UL)
80 #define DMA_CHANNEL14_OFFSET (0x00000750UL)
81 #define DMA_CHANNEL15_OFFSET (0x000007D0UL)
82 
83 /* Array used to get the DMA Channel register offset versus Channel index LL_DMA_CHANNEL_x */
84 static const uint32_t LL_DMA_CH_OFFSET_TAB[] =
85 {
86   DMA_CHANNEL0_OFFSET,  DMA_CHANNEL1_OFFSET,  DMA_CHANNEL2_OFFSET,  DMA_CHANNEL3_OFFSET,
87   DMA_CHANNEL4_OFFSET,  DMA_CHANNEL5_OFFSET,  DMA_CHANNEL6_OFFSET,  DMA_CHANNEL7_OFFSET,
88   DMA_CHANNEL8_OFFSET,  DMA_CHANNEL9_OFFSET,  DMA_CHANNEL10_OFFSET, DMA_CHANNEL11_OFFSET,
89   DMA_CHANNEL12_OFFSET, DMA_CHANNEL13_OFFSET, DMA_CHANNEL14_OFFSET, DMA_CHANNEL15_OFFSET,
90 };
91 
92 /**
93   * @}
94   */
95 
96 /* Private constants ---------------------------------------------------------*/
97 /* Private macros ------------------------------------------------------------*/
98 /* Exported types ------------------------------------------------------------*/
99 
100 #if defined (USE_FULL_LL_DRIVER)
101 /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure
102   * @{
103   */
104 
105 /**
106   * @brief  LL DMA init structure definition.
107   */
108 typedef struct
109 {
110   uint32_t SrcAddress;               /*!< This field specify the data transfer source address.
111                                           Programming this field is mandatory for all available DMA channels.
112                                           This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF.
113                                           This feature can be modified afterwards using unitary function
114                                           @ref LL_DMA_SetSrcAddress().                                                */
115 
116   uint32_t DestAddress;              /*!< This field specify the data transfer destination address.
117                                           Programming this field is mandatory for all available DMA channels.
118                                           This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF.
119                                           This feature can be modified afterwards using unitary function
120                                           @ref LL_DMA_SetDestAddress().                                               */
121 
122   uint32_t Direction;                /*!< This field specify the data transfer direction.
123                                           Programming this field is mandatory for all available DMA channels.
124                                           This parameter can be a value of @ref DMA_LL_EC_TRANSFER_DIRECTION.
125                                           This feature can be modified afterwards using unitary function
126                                           @ref LL_DMA_SetDataTransferDirection().                                     */
127 
128   uint32_t BlkHWRequest;             /*!< This field specify the hardware request unity.
129                                           Programming this field is mandatory for all available DMA channels.
130                                           This parameter can be a value of @ref DMA_LL_EC_BLKHW_REQUEST.
131                                           This feature can be modified afterwards using unitary function
132                                           @ref LL_DMA_SetBlkHWRequest().                                              */
133 
134   uint32_t DataAlignment;            /*!< This field specify the transfer data alignment.
135                                           Programming this field is mandatory for all available DMA channels.
136                                           This parameter can be a value of @ref DMA_LL_EC_DATA_ALIGNMENT.
137                                           This feature can be modified afterwards using unitary function
138                                           @ref LL_DMA_SetDataAlignment().                                             */
139 
140   uint32_t SrcBurstLength;           /*!< This field specify the source burst length of transfer in bytes.
141                                           Programming this field is mandatory for all available DMA channels.
142                                           This parameter must be a value between Min_Data = 1 and Max_Data = 64.
143                                           This feature can be modified afterwards using unitary function
144                                           @ref LL_DMA_SetSrcBurstLength().                                            */
145 
146   uint32_t DestBurstLength;          /*!< This field specify the destination burst length of transfer in bytes.
147                                           Programming this field is mandatory for all available DMA channels.
148                                           This parameter must be a value between Min_Data = 1 and Max_Data = 64.
149                                           This feature can be modified afterwards using unitary function
150                                           @ref LL_DMA_SetDestBurstLength().                                           */
151 
152   uint32_t SrcDataWidth;             /*!< This field specify the source data width.
153                                           Programming this field is mandatory for all available DMA channels.
154                                           This parameter can be a value of @ref DMA_LL_EC_SOURCE_DATA_WIDTH.
155                                           This feature can be modified afterwards using unitary function
156                                           @ref LL_DMA_SetSrcDataWidth().                                              */
157 
158   uint32_t DestDataWidth;            /*!< This field specify the destination data width.
159                                           Programming this field is mandatory for all available DMA channels.
160                                           This parameter can be a value of @ref DMA_LL_EC_DESTINATION_DATA_WIDTH.
161                                           This feature can be modified afterwards using unitary function
162                                           @ref LL_DMA_SetDestDataWidth().                                             */
163 
164   uint32_t SrcIncMode;               /*!< This field specify the source burst increment mode.
165                                           Programming this field is mandatory for all available DMA channels.
166                                           This parameter can be a value of @ref DMA_LL_EC_SOURCE_INCREMENT_MODE.
167                                           This feature can be modified afterwards using unitary function
168                                           @ref LL_DMA_SetSrcIncMode().                                                */
169 
170   uint32_t DestIncMode;              /*!< This field specify the destination burst increment mode.
171                                           Programming this field is mandatory for all available DMA channels.
172                                           This parameter can be a value of @ref DMA_LL_EC_DESTINATION_INCREMENT_MODE.
173                                           This feature can be modified afterwards using unitary function
174                                           @ref LL_DMA_SetDestIncMode().                                               */
175 
176   uint32_t Priority;                 /*!< This field specify the channel priority level.
177                                           Programming this field is mandatory for all available DMA channels.
178                                           This parameter can be a value of @ref DMA_LL_EC_PRIORITY_LEVEL.
179                                           This feature can be modified afterwards using unitary function
180                                           @ref LL_DMA_SetChannelPriorityLevel().                                      */
181 
182   uint32_t BlkDataLength;            /*!< This field specify the length of a block transfer in bytes.
183                                           Programming this field is mandatory for all available DMA channels.
184                                           This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF.
185                                           This feature can be modified afterwards using unitary function
186                                           @ref LL_DMA_SetBlkDataLength().                                             */
187 
188   uint32_t BlkRptCount;              /*!< This field specify the number of repetitions of the current block.
189                                           Programming this field is mandatory only for 2D addressing channels.
190                                           This parameter can be a value between 1 and 2048 Min_Data = 0
191                                           and Max_Data = 0x000007FF.
192                                           This feature can be modified afterwards using unitary function
193                                           @ref LL_DMA_SetBlkRptCount().                                               */
194 
195   uint32_t TriggerMode;              /*!< This field specify the trigger mode.
196                                           Programming this field is mandatory for all available DMA channels.
197                                           This parameter can be a value of @ref DMA_LL_EC_TRIGGER_MODE.
198                                           This feature can be modified afterwards using unitary function
199                                           @ref LL_DMA_SetTriggerMode().                                               */
200 
201   uint32_t TriggerPolarity;          /*!< This field specify the trigger event polarity.
202                                           Programming this field is mandatory for all available DMA channels.
203                                           This parameter can be a value of @ref DMA_LL_EC_TRIGGER_POLARITY.
204                                           This feature can be modified afterwards using unitary function
205                                           @ref LL_DMA_SetTriggerPolarity().                                           */
206 
207   uint32_t TriggerSelection;         /*!< This field specify the trigger event selection.
208                                           Programming this field is mandatory for all available DMA channels.
209                                           This parameter can be a value of @ref DMA_LL_EC_TRIGGER_SELECTION.
210                                           This feature can be modified afterwards using unitary function
211                                           @ref LL_DMA_SetHWTrigger().                                                 */
212 
213   uint32_t Request;                  /*!< This field specify the peripheral request selection.
214                                           Programming this field is mandatory for all available DMA channels.
215                                           This parameter can be a value of @ref DMA_LL_EC_REQUEST_SELECTION.
216                                           This feature can be modified afterwards using unitary function
217                                           @ref LL_DMA_SetPeriphRequest().                                             */
218 
219   uint32_t TransferEventMode;        /*!< This field specify the transfer event mode.
220                                           Programming this field is mandatory for all available DMA channels.
221                                           This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE.
222                                           This feature can be modified afterwards using unitary function
223                                           @ref LL_DMA_SetTransferEventMode().                                         */
224 
225   uint32_t DestWordExchange;         /*!< This field specify the destination  word exchange.
226                                           Programming this field is mandatory for all available HPDMA channels.
227                                           This parameter can be a value of @ref DMA_LL_EC_DEST_WORD_EXCHANGE.
228                                           This feature can be modified afterwards using unitary function
229                                           @ref LL_DMA_SetDestWordExchange().                                          */
230 
231   uint32_t DestHWordExchange;        /*!< This field specify the destination half word exchange.
232                                           Programming this field is mandatory for all available DMA channels.
233                                           This parameter can be a value of @ref DMA_LL_EC_DEST_HALFWORD_EXCHANGE.
234                                           This feature can be modified afterwards using unitary function
235                                           @ref LL_DMA_SetDestHWordExchange().                                         */
236 
237   uint32_t DestByteExchange;         /*!< This field specify the destination byte exchange.
238                                           Programming this field is mandatory for all available DMA channels.
239                                           This parameter can be a value of @ref DMA_LL_EC_DEST_BYTE_EXCHANGE.
240                                           This feature can be modified afterwards using unitary function
241                                           @ref LL_DMA_SetDestByteExchange().                                          */
242 
243   uint32_t SrcByteExchange;          /*!< This field specify the source byte exchange.
244                                           Programming this field is mandatory for all available DMA channels.
245                                           This parameter can be a value of @ref DMA_LL_EC_SRC_BYTE_EXCHANGE.
246                                           This feature can be modified afterwards using unitary function
247                                           @ref LL_DMA_SetSrcByteExchange().                                           */
248 
249   uint32_t SrcAllocatedPort;         /*!< This field specify the source allocated port.
250                                           Programming this field is mandatory for all available DMA channels.
251                                           This parameter can be a value of @ref DMA_LL_EC_SOURCE_ALLOCATED_PORT.
252                                           This feature can be modified afterwards using unitary function
253                                           @ref LL_DMA_SetSrcAllocatedPort().                                          */
254 
255   uint32_t DestAllocatedPort;        /*!< This field specify the destination allocated port.
256                                           Programming this field is mandatory for all available DMA channels.
257                                           This parameter can be a value of @ref DMA_LL_EC_DESTINATION_ALLOCATED_PORT.
258                                           This feature can be modified afterwards using unitary function
259                                           @ref LL_DMA_SetDestAllocatedPort().                                         */
260 
261   uint32_t LinkAllocatedPort;        /*!< This field specify the linked-list allocated port.
262                                           Programming this field is mandatory for all available DMA channels.
263                                           This parameter can be a value of @ref DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT.
264                                           This feature can be modified afterwards using unitary function
265                                           @ref LL_DMA_SetLinkAllocatedPort().                                         */
266 
267   uint32_t LinkStepMode;             /*!< This field specify the link step mode.
268                                           Programming this field is mandatory for all available DMA channels.
269                                           This parameter can be a value of @ref DMA_LL_EC_LINK_STEP_MODE.
270                                           This feature can be modified afterwards using unitary function
271                                           @ref LL_DMA_SetLinkStepMode().                                              */
272 
273   uint32_t SrcAddrUpdateMode;        /*!< This field specify the source address update mode.
274                                           Programming this field is mandatory only for 2D addressing channels.
275                                           This parameter can be a value of @ref DMA_LL_EC_SRC_ADDR_UPDATE_MODE.
276                                           This feature can be modified afterwards using unitary function
277                                           @ref LL_DMA_SetSrcAddrUpdate().                                             */
278 
279   uint32_t DestAddrUpdateMode;       /*!< This field specify the destination address update mode.
280                                           Programming this field is mandatory only for 2D addressing channels.
281                                           This parameter can be a value of @ref DMA_LL_EC_DEST_ADDR_UPDATE_MODE.
282                                           This feature can be modified afterwards using unitary function
283                                           @ref LL_DMA_SetDestAddrUpdate().                                            */
284 
285   uint32_t SrcAddrOffset;            /*!< This field specifies the source address offset.
286                                           Programming this field is mandatory only for 2D addressing channels.
287                                           This parameter can be a value Between 0 to 0x00001FFF.
288                                           This feature can be modified afterwards using unitary function
289                                           @ref LL_DMA_SetSrcAddrUpdateValue().                                        */
290 
291   uint32_t DestAddrOffset;           /*!< This field specifies the destination address offset.
292                                           Programming this field is mandatory only for 2D addressing channels.
293                                           This parameter can be a value Between 0 to 0x00001FFF.
294                                           This feature can be modified afterwards using unitary function
295                                           @ref LL_DMA_SetDestAddrUpdateValue().                                       */
296 
297   uint32_t BlkRptSrcAddrUpdateMode;  /*!< This field specifies the block repeat source address update mode.
298                                           Programming this field is mandatory only for 2D addressing channels.
299                                           This parameter can be a value of @ref DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE.
300                                           This feature can be modified afterwards using unitary function
301                                           @ref LL_DMA_SetBlkRptSrcAddrUpdate().                                       */
302 
303   uint32_t BlkRptDestAddrUpdateMode; /*!< This field specifies the block repeat destination address update mode.
304                                           Programming this field is mandatory only for 2D addressing channels.
305                                           This parameter can be a value of @ref DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE.
306                                           This feature can be modified afterwards using unitary function
307                                           @ref LL_DMA_SetBlkRptDestAddrUpdate().                                      */
308 
309   uint32_t BlkRptSrcAddrOffset;      /*!< This field specifies the block repeat source address offset.
310                                           Programming this field is mandatory only for 2D addressing channels.
311                                           This parameter can be a value Between 0 to 0x0000FFFF.
312                                           This feature can be modified afterwards using unitary function
313                                           @ref LL_DMA_SetBlkRptSrcAddrUpdateValue().                                  */
314 
315   uint32_t BlkRptDestAddrOffset;     /*!< This field specifies the block repeat destination address offset.
316                                           Programming this field is mandatory only for 2D addressing channels.
317                                           This parameter can be a value Between 0 to 0x0000FFFF.
318                                           This feature can be modified afterwards using unitary function
319                                           @ref LL_DMA_SetBlkRptDestAddrUpdateValue().                                 */
320 
321   uint32_t LinkedListBaseAddr;       /*!< This field specify the linked list base address.
322                                           Programming this field is mandatory for all available DMA channels.
323                                           This parameter can be a value Between 0 to 0xFFFF0000 (where the 4 first
324                                           bytes are always forced to 0).
325                                           This feature can be modified afterwards using unitary function
326                                           @ref LL_DMA_SetLinkedListBaseAddr().                                        */
327 
328   uint32_t LinkedListAddrOffset;     /*!< Specifies the linked list address offset.
329                                           Programming this field is mandatory for all available DMA channels.
330                                           This parameter can be a value Between 0 to 0x0000FFFC.
331                                           This feature can be modified afterwards using unitary function
332                                           @ref LL_DMA_SetLinkedListAddrOffset().                                      */
333 
334   uint32_t Mode;                     /*!< Specifies the transfer mode for the DMA channel.
335                                           This parameter can be a value of @ref DMA_LL_TRANSFER_MODE                  */
336 } LL_DMA_InitTypeDef;
337 
338 
339 /**
340   * @brief  LL DMA init linked list structure definition.
341   */
342 typedef struct
343 {
344   uint32_t Priority;             /*!< This field specify the channel priority level.
345                                       Programming this field is mandatory for all available DMA channels.
346                                       This parameter can be a value of @ref DMA_LL_EC_PRIORITY_LEVEL.
347                                       This feature can be modified afterwards using unitary function
348                                       @ref LL_DMA_SetChannelPriorityLevel().                                          */
349 
350   uint32_t LinkStepMode;         /*!< This field specify the link step mode.
351                                       Programming this field is mandatory for all available DMA channels.
352                                       This parameter can be a value of @ref DMA_LL_EC_LINK_STEP_MODE.
353                                       This feature can be modified afterwards using unitary function
354                                       @ref LL_DMA_SetLinkStepMode().                                                  */
355 
356   uint32_t LinkAllocatedPort;    /*!< This field specify the linked-list allocated port.
357                                       Programming this field is mandatory for all available DMA channels.
358                                       This parameter can be a value of @ref DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT.
359                                       This feature can be modified afterwards using unitary function
360                                       @ref LL_DMA_SetLinkAllocatedPort().                                             */
361 
362   uint32_t TransferEventMode;    /*!< This field specify the transfer event mode.
363                                       Programming this field is mandatory for all available DMA channels.
364                                       This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE.
365                                       This feature can be modified afterwards using unitary function
366                                       @ref LL_DMA_SetTransferEventMode().                                             */
367 } LL_DMA_InitLinkedListTypeDef;
368 
369 
370 /**
371   * @brief  LL DMA node init structure definition.
372   */
373 typedef struct
374 {
375   /* CTR1 register fields ******************************************************
376      If any CTR1 fields need to be updated comparing to previous node, it is
377      mandatory to update the new value in CTR1 register fields and enable update
378      CTR1 register in UpdateRegisters fields if it is not enabled in the
379      previous node.
380 
381   */
382 #if defined (CPU_IN_SECURE_STATE)
383   uint32_t DestSecure;           /*!< This field specify the destination secure.
384                                       This parameter can be a value of @ref DMA_LL_EC_DESTINATION_SECURITY_ATTRIBUTE. */
385 #endif /* CPU_IN_SECURE_STATE */
386 
387   uint32_t DestAllocatedPort;    /*!< This field specify the destination allocated port.
388                                       This parameter can be a value of @ref DMA_LL_EC_DESTINATION_ALLOCATED_PORT.     */
389 
390   uint32_t DestWordExchange;     /*!< This field specify the destination word exchange.
391                                       This parameter can be a value of @ref DMA_LL_EC_DEST_WORD_EXCHANGE.             */
392 
393   uint32_t DestHWordExchange;    /*!< This field specify the destination half word exchange.
394                                       This parameter can be a value of @ref DMA_LL_EC_DEST_HALFWORD_EXCHANGE.         */
395 
396   uint32_t DestByteExchange;     /*!< This field specify the destination byte exchange.
397                                       This parameter can be a value of @ref DMA_LL_EC_DEST_BYTE_EXCHANGE.             */
398 
399   uint32_t DestBurstLength;      /*!< This field specify the destination burst length of transfer in bytes.
400                                       This parameter must be a value between Min_Data = 1 and Max_Data = 64.          */
401 
402   uint32_t DestIncMode;          /*!< This field specify the destination increment mode.
403                                       This parameter can be a value of @ref DMA_LL_EC_DESTINATION_INCREMENT_MODE.     */
404 
405   uint32_t DestDataWidth;        /*!< This field specify the destination data width.
406                                       This parameter can be a value of @ref DMA_LL_EC_DESTINATION_DATA_WIDTH.         */
407 
408 #if defined (CPU_IN_SECURE_STATE)
409   uint32_t SrcSecure;            /*!< This field specify the source secure.
410                                       This parameter can be a value of @ref DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE.      */
411 #endif /* CPU_IN_SECURE_STATE */
412 
413   uint32_t SrcAllocatedPort;     /*!< This field specify the source allocated port.
414                                       This parameter can be a value of @ref DMA_LL_EC_SOURCE_ALLOCATED_PORT.          */
415 
416   uint32_t SrcByteExchange;      /*!< This field specify the source byte exchange.
417                                       This parameter can be a value of @ref DMA_LL_EC_SRC_BYTE_EXCHANGE.              */
418 
419   uint32_t DataAlignment;        /*!< This field specify the transfer data alignment.
420                                       This parameter can be a value of @ref DMA_LL_EC_DATA_ALIGNMENT.                 */
421 
422   uint32_t SrcBurstLength;       /*!< This field specify the source burst length of transfer in bytes.
423                                       This parameter must be a value between Min_Data = 1 and Max_Data = 64.          */
424 
425   uint32_t SrcIncMode;           /*!< This field specify the source increment mode.
426                                       This parameter can be a value of @ref DMA_LL_EC_SOURCE_INCREMENT_MODE.          */
427 
428   uint32_t SrcDataWidth;         /*!< This field specify the source data width.
429                                       This parameter can be a value of @ref DMA_LL_EC_SOURCE_DATA_WIDTH.              */
430 
431 
432   /* CTR2 register fields ******************************************************
433      If any CTR2 fields need to be updated comparing to previous node, it is
434      mandatory to update the new value in CTR2 register fields and enable update
435      CTR2 register in UpdateRegisters fields if it is not enabled in the
436      previous node.
437 
438      For all node created, filling all fields is mandatory.
439   */
440   uint32_t TransferEventMode;    /*!< This field specify the transfer event mode.
441                                       This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE.            */
442 
443   uint32_t TriggerPolarity;      /*!< This field specify the trigger event polarity.
444                                       This parameter can be a value of @ref DMA_LL_EC_TRIGGER_POLARITY.               */
445 
446   uint32_t TriggerSelection;     /*!< This field specify the trigger event selection.
447                                       This parameter can be a value of @ref DMA_LL_EC_TRIGGER_SELECTION.              */
448 
449   uint32_t TriggerMode;          /*!< This field specify the trigger mode.
450                                       This parameter can be a value of @ref DMA_LL_EC_TRIGGER_MODE.                   */
451 
452   uint32_t BlkHWRequest;         /*!< This field specify the hardware request unity.
453                                       This parameter can be a value of @ref DMA_LL_EC_BLKHW_REQUEST.                  */
454 
455   uint32_t Direction;            /*!< This field specify the transfer direction.
456                                       This parameter can be a value of @ref DMA_LL_EC_TRANSFER_DIRECTION.             */
457 
458   uint32_t Request;              /*!< This field specify the peripheral request selection.
459                                       This parameter can be a value of @ref DMA_LL_EC_REQUEST_SELECTION.              */
460 
461   uint32_t Mode;                  /*!< This field DMA Transfer Mode.
462                                       This parameter can be a value of @ref DMA_LL_TRANSFER_MODE.                     */
463 
464   /* CBR1 register fields ******************************************************
465      If any CBR1 fields need to be updated comparing to previous node, it is
466      mandatory to update the new value in CBR1 register fields and enable update
467      CBR1 register in UpdateRegisters fields if it is not enabled in the
468      previous node.
469 
470      If the node to be created is not for 2D addressing channels, there is no
471      need to fill the following fields for CBR1 register :
472      - BlkReptDestAddrUpdate.
473      - BlkRptSrcAddrUpdate.
474      - DestAddrUpdate.
475      - SrcAddrUpdate.
476      - BlkRptCount.
477   */
478   uint32_t BlkRptDestAddrUpdateMode; /*!< This field specifies the block repeat destination address update mode.
479                                           This parameter can be a value of
480                                           @ref DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE.                               */
481 
482   uint32_t BlkRptSrcAddrUpdateMode;  /*!< This field specifies the block repeat source address update mode.
483                                           This parameter can be a value of
484                                           @ref DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE.                                */
485 
486   uint32_t DestAddrUpdateMode;       /*!< This field specify the Destination address update mode.
487                                           This parameter can be a value of @ref DMA_LL_EC_DEST_ADDR_UPDATE_MODE.      */
488 
489   uint32_t SrcAddrUpdateMode;        /*!< This field specify the Source address update mode.
490                                           This parameter can be a value of @ref DMA_LL_EC_SRC_ADDR_UPDATE_MODE.       */
491 
492   uint32_t BlkRptCount;              /*!< This field specify the number of repetitions of the current block.
493                                           This parameter can be a value between 1 and 2048 Min_Data = 0
494                                           and Max_Data = 0x000007FF.                                                  */
495 
496   uint32_t BlkDataLength;            /*!< This field specify the length of a block transfer in bytes.
497                                           This parameter must be a value between Min_Data = 0
498                                           and Max_Data = 0x0000FFFF.                                                  */
499 
500   /* CSAR register fields ******************************************************
501      If any CSAR fields need to be updated comparing to previous node, it is
502      mandatory to update the new value in CSAR register fields and enable update
503      CSAR register in UpdateRegisters fields if it is not enabled in the
504      previous node.
505 
506      For all node created, filling all fields is mandatory.
507   */
508   uint32_t SrcAddress;              /*!< This field specify the transfer source address.
509                                          This parameter must be a value between Min_Data = 0
510                                          and Max_Data = 0xFFFFFFFF.                                                   */
511 
512 
513   /* CDAR register fields ******************************************************
514      If any CDAR fields need to be updated comparing to previous node, it is
515      mandatory to update the new value in CDAR register fields and enable update
516      CDAR register in UpdateRegisters fields if it is not enabled in the
517      previous node.
518 
519      For all node created, filling all fields is mandatory.
520   */
521   uint32_t DestAddress;             /*!< This field specify the transfer destination address.
522                                          This parameter must be a value between Min_Data = 0
523                                          and Max_Data = 0xFFFFFFFF.                                                   */
524 
525   /* CTR3 register fields ******************************************************
526      If any CTR3 fields need to be updated comparing to previous node, it is
527      mandatory to update the new value in CTR3 register fields and enable update
528      CTR3 register in UpdateRegisters fields if it is not enabled in the
529      previous node.
530 
531      This register is used only for 2D addressing channels.
532      If used channel is linear addressing, this register will be overwritten by
533      CLLR register in memory.
534      When this register is enabled on UpdateRegisters and the selected channel
535      is linear addressing, LL APIs will discard this register update in memory.
536   */
537   uint32_t DestAddrOffset;       /*!< This field specifies the destination address offset.
538                                       This parameter can be a value Between 0 to 0x00001FFF.                          */
539 
540   uint32_t SrcAddrOffset;        /*!< This field specifies the source address offset.
541                                       This parameter can be a value Between 0 to 0x00001FFF.                          */
542 
543 
544   /* CBR2 register fields ******************************************************
545      If any CBR2 fields need to be updated comparing to previous node, it is
546      mandatory to update the new value in CBR2 register fields and enable update
547      CBR2 register in UpdateRegisters fields if it is not enabled in the
548      previous node.
549 
550      This register is used only for 2D addressing channels.
551      If used channel is linear addressing, this register will be discarded in
552      memory. When this register is enabled on UpdateRegisters and the selected
553      channel is linear addressing, LL APIs will discard this register update in
554      memory.
555   */
556   uint32_t BlkRptDestAddrOffset; /*!< This field specifies the block repeat destination address offset.
557                                       This parameter can be a value Between 0 to 0x0000FFFF.                          */
558 
559   uint32_t BlkRptSrcAddrOffset;  /*!< This field specifies the block repeat source address offset.
560                                       This parameter can be a value Between 0 to 0x0000FFFF.                          */
561 
562   /* CLLR register fields ******************************************************
563      If any CLLR fields need to be updated comparing to previous node, it is
564      mandatory to update the new value in CLLR register fields and enable update
565      CLLR register in UpdateRegisters fields if it is not enabled in the
566      previous node.
567 
568      If used channel is linear addressing, there is no need to enable/disable
569      CTR3 and CBR2 register in UpdateRegisters fields as they will be discarded
570      by LL APIs.
571   */
572   uint32_t UpdateRegisters;      /*!< Specifies the linked list register update.
573                                       This parameter can be a value of @ref DMA_LL_EC_LINKEDLIST_REGISTER_UPDATE.     */
574 
575   /* DMA Node type field *******************************************************
576      This parameter defines node types as node size and node content varies
577      between channels.
578      Thanks to this fields, linked list queue could be created independently
579      from channel selection. So, one queue could be executed by all DMA channels.
580   */
581   uint32_t NodeType;             /*!< Specifies the node type to be created.
582                                       This parameter can be a value of @ref DMA_LL_EC_LINKEDLIST_NODE_TYPE.           */
583 } LL_DMA_InitNodeTypeDef;
584 
585 /**
586   * @brief  LL DMA linked list node structure definition.
587   * @note   For 2D addressing channels, the maximum node size is :
588   *         (4 Bytes * 8 registers = 32 Bytes).
589   *         For GPDMA & HPDMA linear addressing channels, the maximum node size is :
590   *         (4 Bytes * 6 registers = 24 Bytes).
591   */
592 typedef struct
593 {
594   __IO uint32_t LinkRegisters[8U];
595 
596 } LL_DMA_LinkNodeTypeDef;
597 /**
598   * @}
599   */
600 
601 #endif /* USE_FULL_LL_DRIVER */
602 
603 /* Exported constants --------------------------------------------------------*/
604 
605 /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
606   * @{
607   */
608 
609 /** @defgroup DMA_LL_EC_CHANNEL Channel
610   * @{
611   */
612 #define LL_DMA_CHANNEL_0   (0x00U)
613 #define LL_DMA_CHANNEL_1   (0x01U)
614 #define LL_DMA_CHANNEL_2   (0x02U)
615 #define LL_DMA_CHANNEL_3   (0x03U)
616 #define LL_DMA_CHANNEL_4   (0x04U)
617 #define LL_DMA_CHANNEL_5   (0x05U)
618 #define LL_DMA_CHANNEL_6   (0x06U)
619 #define LL_DMA_CHANNEL_7   (0x07U)
620 #define LL_DMA_CHANNEL_8   (0x08U)
621 #define LL_DMA_CHANNEL_9   (0x09U)
622 #define LL_DMA_CHANNEL_10  (0x0AU)
623 #define LL_DMA_CHANNEL_11  (0x0BU)
624 #define LL_DMA_CHANNEL_12  (0x0CU)
625 #define LL_DMA_CHANNEL_13  (0x0DU)
626 #define LL_DMA_CHANNEL_14  (0x0EU)
627 #define LL_DMA_CHANNEL_15  (0x0FU)
628 #if defined (USE_FULL_LL_DRIVER)
629 #define LL_DMA_CHANNEL_ALL (0x10U)
630 #endif /* USE_FULL_LL_DRIVER */
631 /**
632   * @}
633   */
634 
635 #if defined (USE_FULL_LL_DRIVER)
636 /** @defgroup DMA_LL_EC_CLLR_OFFSET CLLR offset
637   * @{
638   */
639 #define LL_DMA_CLLR_OFFSET0 (0x00U)
640 #define LL_DMA_CLLR_OFFSET1 (0x01U)
641 #define LL_DMA_CLLR_OFFSET2 (0x02U)
642 #define LL_DMA_CLLR_OFFSET3 (0x03U)
643 #define LL_DMA_CLLR_OFFSET4 (0x04U)
644 #define LL_DMA_CLLR_OFFSET5 (0x05U)
645 #define LL_DMA_CLLR_OFFSET6 (0x06U)
646 #define LL_DMA_CLLR_OFFSET7 (0x07U)
647 /**
648   * @}
649   */
650 #endif /* USE_FULL_LL_DRIVER */
651 
652 /** @defgroup DMA_LL_EC_CID Priority Level
653   * @{
654   */
655 #define LL_DMA_CHANNEL_STATIC_CID_0             (0U<<DMA_CCIDCFGR_SCID_Pos)         /*!< Channel is assigned to CID0 */
656 #define LL_DMA_CHANNEL_STATIC_CID_1             (1U<<DMA_CCIDCFGR_SCID_Pos)         /*!< Channel is assigned to CID1 */
657 #define LL_DMA_CHANNEL_STATIC_CID_2             (2U<<DMA_CCIDCFGR_SCID_Pos)         /*!< Channel is assigned to CID2 */
658 #define LL_DMA_CHANNEL_STATIC_CID_3             (3U<<DMA_CCIDCFGR_SCID_Pos)         /*!< Channel is assigned to CID3 */
659 #define LL_DMA_CHANNEL_STATIC_CID_4             (4U<<DMA_CCIDCFGR_SCID_Pos)         /*!< Channel is assigned to CID4 */
660 #define LL_DMA_CHANNEL_STATIC_CID_5             (5U<<DMA_CCIDCFGR_SCID_Pos)         /*!< Channel is assigned to CID5 */
661 #define LL_DMA_CHANNEL_STATIC_CID_6             (6U<<DMA_CCIDCFGR_SCID_Pos)         /*!< Channel is assigned to CID6 */
662 /**
663   * @}
664   */
665 
666 /** @defgroup DMA_LL_EC_PRIORITY_LEVEL DMA Priority Level
667   * @{
668   */
669 #define LL_DMA_LOW_PRIORITY_LOW_WEIGHT  0x00000000U    /*!< Priority level : Low Priority, Low Weight  */
670 #define LL_DMA_LOW_PRIORITY_MID_WEIGHT  DMA_CCR_PRIO_0 /*!< Priority level : Low Priority, Mid Weight  */
671 #define LL_DMA_LOW_PRIORITY_HIGH_WEIGHT DMA_CCR_PRIO_1 /*!< Priority level : Low Priority, High Weight */
672 #define LL_DMA_HIGH_PRIORITY            DMA_CCR_PRIO   /*!< Priority level : High Priority             */
673 /**
674   * @}
675   */
676 
677 /** @defgroup DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT Linked List Allocated Port
678   * @{
679   */
680 #define LL_DMA_LINK_ALLOCATED_PORT0 0x00000000U /*!< Linked List Allocated Port 0 */
681 #define LL_DMA_LINK_ALLOCATED_PORT1 DMA_CCR_LAP /*!< Linked List Allocated Port 1 */
682 /**
683   * @}
684   */
685 
686 /** @defgroup DMA_LL_EC_LINK_STEP_MODE Link Step Mode
687   * @{
688   */
689 #define LL_DMA_LSM_FULL_EXECUTION  0x00000000U /*!< Channel execute the full linked list        */
690 #define LL_DMA_LSM_1LINK_EXECUTION DMA_CCR_LSM /*!< Channel execute one node of the linked list */
691 /**
692   * @}
693   */
694 
695 /** @defgroup DMA_LL_EC_DEST_WORD_EXCHANGE Destination Word Exchange
696   * @{
697   */
698 #define LL_DMA_DEST_WORD_PRESERVE     0x00000000U  /*!< No destination Word exchange when destination data width
699                                                         is double-word                                                */
700 #define LL_DMA_DEST_WORD_EXCHANGE     DMA_CTR1_DWX /*!< Destination Word exchange when destination data width
701                                                         is double-word                                                */
702 /**
703   * @}
704   */
705 
706 /** @defgroup DMA_LL_EC_DEST_HALFWORD_EXCHANGE Destination Half-Word Exchange
707   * @{
708   */
709 #define LL_DMA_DEST_HALFWORD_PRESERVE 0x00000000U  /*!< No destination Half-Word exchange when destination data width
710                                                         is word                                                       */
711 #define LL_DMA_DEST_HALFWORD_EXCHANGE DMA_CTR1_DHX /*!< Destination Half-Word exchange when destination data width
712                                                         is word                                                       */
713 /**
714   * @}
715   */
716 
717 /** @defgroup DMA_LL_EC_DEST_BYTE_EXCHANGE Destination Byte Exchange
718   * @{
719   */
720 #define LL_DMA_DEST_BYTE_PRESERVE 0x00000000U  /*!< No destination Byte exchange when destination data width > Byte */
721 #define LL_DMA_DEST_BYTE_EXCHANGE DMA_CTR1_DBX /*!< Destination Byte exchange when destination data width > Byte    */
722 /**
723   * @}
724   */
725 
726 /** @defgroup DMA_LL_EC_SRC_BYTE_EXCHANGE Source Byte Exchange
727   * @{
728   */
729 #define LL_DMA_SRC_BYTE_PRESERVE 0x00000000U  /*!< No source Byte exchange when source data width is word */
730 #define LL_DMA_SRC_BYTE_EXCHANGE DMA_CTR1_SBX /*!< Source Byte exchange when source data width is word    */
731 /**
732   * @}
733   */
734 
735 /** @defgroup DMA_LL_EC_SOURCE_ALLOCATED_PORT Source Allocated Port
736   * @{
737   */
738 #define LL_DMA_SRC_ALLOCATED_PORT0 0x00000000U  /*!< Source Allocated Port 0 */
739 #define LL_DMA_SRC_ALLOCATED_PORT1 DMA_CTR1_SAP /*!< Source Allocated Port 1 */
740 /**
741   * @}
742   */
743 
744 /** @defgroup DMA_LL_EC_DESTINATION_ALLOCATED_PORT Destination Allocated Port
745   * @{
746   */
747 #define LL_DMA_DEST_ALLOCATED_PORT0 0x00000000U  /*!< Destination Allocated Port 0 */
748 #define LL_DMA_DEST_ALLOCATED_PORT1 DMA_CTR1_DAP /*!< Destination Allocated Port 1 */
749 /**
750   * @}
751   */
752 
753 /** @defgroup DMA_LL_EC_DESTINATION_INCREMENT_MODE Destination Increment Mode
754   * @{
755   */
756 #define LL_DMA_DEST_FIXED       0x00000000U   /*!< Destination fixed single/burst       */
757 #define LL_DMA_DEST_INCREMENT   DMA_CTR1_DINC /*!< Destination incremented single/burst */
758 /**
759   * @}
760   */
761 
762 /** @defgroup DMA_LL_EC_DESTINATION_DATA_WIDTH Destination Data Width
763   * @{
764   */
765 #define LL_DMA_DEST_DATAWIDTH_BYTE       0x00000000U         /*!< Destination Data Width : Byte       */
766 #define LL_DMA_DEST_DATAWIDTH_HALFWORD   DMA_CTR1_DDW_LOG2_0 /*!< Destination Data Width : HalfWord   */
767 #define LL_DMA_DEST_DATAWIDTH_WORD       DMA_CTR1_DDW_LOG2_1 /*!< Destination Data Width : Word       */
768 #define LL_DMA_DEST_DATAWIDTH_DOUBLEWORD DMA_CTR1_DDW_LOG2   /*!< Destination Data Width : DoubleWord */
769 /**
770   * @}
771   */
772 
773 /** @defgroup DMA_LL_EC_DATA_ALIGNMENT Data Alignment
774   * @{
775   */
776 #define LL_DMA_DATA_ALIGN_ZEROPADD    0x00000000U    /*!< If src data width < dest data width :
777                                                           => Right Aligned padded with 0 up to destination
778                                                              data width.
779                                                           If src data width > dest data width :
780                                                           => Right Aligned Left Truncated down to destination
781                                                              data width.                                              */
782 #define LL_DMA_DATA_ALIGN_SIGNEXTPADD DMA_CTR1_PAM_0 /*!< If src data width < dest data width :
783                                                           => Right Aligned padded with sign extended up to destination
784                                                              data width.
785                                                           If src data width > dest data width :
786                                                           => Left Aligned Right Truncated down to the destination
787                                                              data width                                               */
788 #define LL_DMA_DATA_PACK_UNPACK       DMA_CTR1_PAM_1 /*!< If src data width < dest data width :
789                                                           => Packed at the destination data width
790                                                           If src data width > dest data width :
791                                                           => Unpacked at the destination data width                   */
792 /**
793   * @}
794   */
795 
796 /** @defgroup DMA_LL_EC_SOURCE_INCREMENT_MODE Source Increment Mode
797   * @{
798   */
799 #define LL_DMA_SRC_FIXED     0x00000000U   /*!< Source fixed single/burst */
800 #define LL_DMA_SRC_INCREMENT DMA_CTR1_SINC /*!< Source incremented single/burst    */
801 /**
802   * @}
803   */
804 
805 /** @defgroup DMA_LL_EC_SOURCE_DATA_WIDTH Source Data Width
806   * @{
807   */
808 #define LL_DMA_SRC_DATAWIDTH_BYTE        0x00000000U         /*!< Source Data Width : Byte       */
809 #define LL_DMA_SRC_DATAWIDTH_HALFWORD    DMA_CTR1_SDW_LOG2_0 /*!< Source Data Width : HalfWord   */
810 #define LL_DMA_SRC_DATAWIDTH_WORD        DMA_CTR1_SDW_LOG2_1 /*!< Source Data Width : Word       */
811 #define LL_DMA_SRC_DATAWIDTH_DOUBLEWORD  DMA_CTR1_SDW_LOG2   /*!< Source Data Width : DoubleWord */
812 /**
813   * @}
814   */
815 
816 /** @defgroup DMA_LL_EC_BLKHW_REQUEST Block Hardware Request
817   * @{
818   */
819 #define LL_DMA_HWREQUEST_SINGLEBURST 0x00000000U   /*!< Hardware request is driven by a peripheral with a hardware
820                                                         request/acknowledge protocol at a burst level                 */
821 #define LL_DMA_HWREQUEST_BLK         DMA_CTR2_BREQ /*!< Hardware request is driven by a peripheral with a hardware
822                                                         request/acknowledge protocol at a block level                 */
823 /**
824   * @}
825   */
826 
827 /** @defgroup DMA_LL_EC_TRANSFER_EVENT_MODE Transfer Event Mode
828   * @{
829   */
830 #define LL_DMA_TCEM_BLK_TRANSFER         0x00000000U       /*!< The TC (and the HT) event is generated at the
831                                                                 (respectively half) end of each block                 */
832 #define LL_DMA_TCEM_RPT_BLK_TRANSFER     DMA_CTR2_TCEM_0   /*!< The TC (and the HT) event is generated at the
833                                                                 (respectively half) end of the repeated block         */
834 #define LL_DMA_TCEM_EACH_LLITEM_TRANSFER DMA_CTR2_TCEM_1   /*!< The TC (and the HT) event is generated at the
835                                                                 (respectively half) end of each linked-list item      */
836 #define LL_DMA_TCEM_LAST_LLITEM_TRANSFER DMA_CTR2_TCEM     /*!< The TC (and the HT) event is generated at the
837                                                                 (respectively half) end of the last linked-list item  */
838 /**
839   * @}
840   */
841 
842 /** @defgroup DMA_LL_EC_TRIGGER_POLARITY Trigger Polarity
843   * @{
844   */
845 #define LL_DMA_TRIG_POLARITY_MASKED    0x00000000U         /*!< No trigger of the selected DMA request.
846                                                                 Masked trigger event                                  */
847 #define LL_DMA_TRIG_POLARITY_RISING    DMA_CTR2_TRIGPOL_0  /*!< Trigger of the selected DMA request on the rising
848                                                                 edge of the selected trigger event input              */
849 #define LL_DMA_TRIG_POLARITY_FALLING   DMA_CTR2_TRIGPOL_1  /*!< Trigger of the selected DMA request on the falling
850                                                                 edge of the selected trigger event input              */
851 /**
852   * @}
853   */
854 
855 /** @defgroup DMA_LL_EC_TRIGGER_MODE Transfer Trigger Mode
856   * @{
857   */
858 #define LL_DMA_TRIGM_BLK_TRANSFER        0x00000000U      /*!< A block transfer is conditioned by (at least)
859                                                                one hit trigger                                        */
860 #define LL_DMA_TRIGM_RPT_BLK_TRANSFER    DMA_CTR2_TRIGM_0 /*!< A repeated block transfer is conditioned by (at least)
861                                                                one hit trigger                                        */
862 #define LL_DMA_TRIGM_LLI_LINK_TRANSFER   DMA_CTR2_TRIGM_1 /*!< A LLI link transfer is conditioned by (at least)
863                                                                one hit trigger                                        */
864 #define LL_DMA_TRIGM_SINGLBURST_TRANSFER DMA_CTR2_TRIGM   /*!< A Single/Burst transfer is conditioned by (at least)
865                                                                one hit trigger                                        */
866 /**
867   * @}
868   */
869 
870 /** @defgroup DMA_LL_EC_TRANSFER_DIRECTION Transfer Direction
871   * @{
872   */
873 #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CTR2_SWREQ /*!< Memory to memory direction     */
874 #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U    /*!< Peripheral to memory direction */
875 #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CTR2_DREQ  /*!< Memory to peripheral direction */
876 /**
877   * @}
878   */
879 
880 /** @defgroup DMA_LL_TRANSFER_MODE Transfer Mode
881   * @{
882   */
883 #define LL_DMA_NORMAL          0x00000000U       /*!< Normal DMA transfer                     */
884 #define LL_DMA_PFCTRL       DMA_CTR2_PFREQ       /*!< HW request peripheral flow control mode */
885 /**
886   * @}
887   */
888 
889 /** @defgroup DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE Block Repeat Source Address Update Mode
890   * @{
891   */
892 #define LL_DMA_BLKRPT_SRC_ADDR_INCREMENT 0x00000000U     /*!< Source address pointer is incremented after each block
893                                                               transfer by source update value                         */
894 #define LL_DMA_BLKRPT_SRC_ADDR_DECREMENT DMA_CBR1_BRSDEC /*!< Source address pointer is decremented after each block
895                                                               transfer by source update value                         */
896 /**
897   * @}
898   */
899 
900 /** @defgroup DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE Block Repeat Destination Address Update Mode
901   * @{
902   */
903 #define LL_DMA_BLKRPT_DEST_ADDR_INCREMENT 0x00000000U     /*!< Destination address is incremented after each block
904                                                                transfer by destination update value                   */
905 #define LL_DMA_BLKRPT_DEST_ADDR_DECREMENT DMA_CBR1_BRDDEC /*!< Destination address is decremented after each block
906                                                                transfer by destination update value                   */
907 /**
908   * @}
909   */
910 
911 /** @defgroup DMA_LL_EC_SRC_ADDR_UPDATE_MODE Burst Source Address Update Mode
912   * @{
913   */
914 #define LL_DMA_BURST_SRC_ADDR_INCREMENT 0x00000000U   /*!< Source address pointer is incremented after each burst
915                                                            transfer by source update value                            */
916 #define LL_DMA_BURST_SRC_ADDR_DECREMENT DMA_CBR1_SDEC /*!< Source address pointer is decremented after each burst
917                                                            transfer by source update value                            */
918 /**
919   * @}
920   */
921 
922 /** @defgroup DMA_LL_EC_DEST_ADDR_UPDATE_MODE Burst Destination Address Update Mode
923   * @{
924   */
925 #define LL_DMA_BURST_DEST_ADDR_INCREMENT 0x00000000U   /*!< Destination address pointer is incremented after each
926                                                             burst transfer by destination update value                */
927 #define LL_DMA_BURST_DEST_ADDR_DECREMENT DMA_CBR1_DDEC /*!< Destination address pointer is decremented after each
928                                                             burst transfer by destination update value                */
929 /**
930   * @}
931   */
932 
933 #if defined (CPU_IN_SECURE_STATE)
934 /** @defgroup DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE Source Security Attribute
935   * @{
936   */
937 #define LL_DMA_CHANNEL_NSEC 0x00000000U /*!< NSecure channel */
938 #define LL_DMA_CHANNEL_SEC  0x00000001U /*!< Secure channel  */
939 /**
940   * @}
941   */
942 
943 /** @defgroup DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE Source Security Attribute
944   * @{
945   */
946 #define LL_DMA_CHANNEL_SRC_NSEC 0x00000000U   /*!< NSecure transfer from the source */
947 #define LL_DMA_CHANNEL_SRC_SEC  DMA_CTR1_SSEC /*!< Secure transfer from the source  */
948 /**
949   * @}
950   */
951 
952 /** @defgroup DMA_LL_EC_DESTINATION_SECURITY_ATTRIBUTE Destination Security Attribute
953   * @{
954   */
955 #define LL_DMA_CHANNEL_DEST_NSEC 0x00000000U   /*!< NSecure transfer from the destination */
956 #define LL_DMA_CHANNEL_DEST_SEC  DMA_CTR1_DSEC /*!< Secure transfer from the destination  */
957 /**
958   * @}
959   */
960 #endif /* CPU_IN_SECURE_STATE */
961 
962 /** @defgroup DMA_LL_EC_LINKEDLIST_NODE_TYPE Linked list node type
963   * @{
964   */
965 #define LL_DMA_GPDMA_LINEAR_NODE 0x01U /*!< GPDMA node : linear addressing node      */
966 #define LL_DMA_GPDMA_2D_NODE     0x02U /*!< GPDMA node : 2 dimension addressing node */
967 #define LL_DMA_HPDMA_LINEAR_NODE 0x04U /*!< HPDMA node : linear addressing node      */
968 #define LL_DMA_HPDMA_2D_NODE     0x08U /*!< HPDMA node : 2 dimension addressing node */
969 
970 /**
971   * @}
972   */
973 
974 /** @defgroup DMA_LL_EC_LINKEDLIST_REGISTER_UPDATE Linked list register update
975   * @{
976   */
977 #define LL_DMA_UPDATE_CTR1 DMA_CLLR_UT1 /*!< Update CTR1 register from memory :
978                                              available for all DMA channels                */
979 #define LL_DMA_UPDATE_CTR2 DMA_CLLR_UT2 /*!< Update CTR2 register from memory :
980                                              available for all DMA channels                */
981 #define LL_DMA_UPDATE_CBR1 DMA_CLLR_UB1 /*!< Update CBR1 register from memory :
982                                              available for all DMA channels                */
983 #define LL_DMA_UPDATE_CSAR DMA_CLLR_USA /*!< Update CSAR register from memory :
984                                              available for all DMA channels                */
985 #define LL_DMA_UPDATE_CDAR DMA_CLLR_UDA /*!< Update CDAR register from memory :
986                                              available for all DMA channels                */
987 #define LL_DMA_UPDATE_CTR3 DMA_CLLR_UT3 /*!< Update CTR3 register from memory :
988                                              available only for 2D addressing DMA channels */
989 #define LL_DMA_UPDATE_CBR2 DMA_CLLR_UB2 /*!< Update CBR2 register from memory :
990                                              available only for 2D addressing DMA channels */
991 #define LL_DMA_UPDATE_CLLR DMA_CLLR_ULL /*!< Update CLLR register from memory :
992                                              available for all DMA channels                */
993 /**
994   * @}
995   */
996 
997 /** @defgroup DMA_LL_EC_REQUEST_SELECTION Request Selection
998   * @{
999   */
1000 /* HPDMA1 requests */
1001 #define LL_HPDMA1_REQUEST_JPEG_RX       0U       /*!< HPDMA1 HW request is JPEG_RX        */
1002 #define LL_HPDMA1_REQUEST_JPEG_TX       1U       /*!< HPDMA1 HW request is JPEG_TX        */
1003 #define LL_HPDMA1_REQUEST_OCTOSPI1      2U       /*!< HPDMA1 HW request is OCTOSPI1       */
1004 #define LL_HPDMA1_REQUEST_OCTOSPI2      3U       /*!< HPDMA1 HW request is OCTOSPI2       */
1005 #define LL_HPDMA1_REQUEST_OCTOSPI3      4U       /*!< HPDMA1 HW request is OCTOSPI3       */
1006 #define LL_HPDMA1_REQUEST_FMC2_TXRX     5U       /*!< HPDMA1 HW request is FMC2_TXRX      */
1007 #define LL_HPDMA1_REQUEST_FMC2_BCH      6U       /*!< HPDMA1 HW request is FMC2_BCH       */
1008 #define LL_HPDMA1_REQUEST_ADC1          7U       /*!< HPDMA1 HW request is ADC1           */
1009 #define LL_HPDMA1_REQUEST_ADC2          8U       /*!< HPDMA1 HW request is ADC2           */
1010 #define LL_HPDMA1_REQUEST_CRYP_IN       9U       /*!< HPDMA1 HW request is CRYP_IN        */
1011 #define LL_HPDMA1_REQUEST_CRYP_OUT      10U      /*!< HPDMA1 HW request is CRYP_OUT       */
1012 #define LL_HPDMA1_REQUEST_SAES_OUT      11U      /*!< HPDMA1 HW request is SAES_OUT       */
1013 #define LL_HPDMA1_REQUEST_SAES_IN       12U      /*!< HPDMA1 HW request is SAES_IN        */
1014 #define LL_HPDMA1_REQUEST_HASH_IN       13U      /*!< HPDMA1 HW request is HASH_IN        */
1015 
1016 #define LL_HPDMA1_REQUEST_TIM1_CH1      14U      /*!< HPDMA1 HW request is TIM1_CH1       */
1017 #define LL_HPDMA1_REQUEST_TIM1_CH2      15U      /*!< HPDMA1 HW request is TIM1_CH2       */
1018 #define LL_HPDMA1_REQUEST_TIM1_CH3      16U      /*!< HPDMA1 HW request is TIM1_CH3       */
1019 #define LL_HPDMA1_REQUEST_TIM1_CH4      17U      /*!< HPDMA1 HW request is TIM1_CH4       */
1020 #define LL_HPDMA1_REQUEST_TIM1_UP       18U      /*!< HPDMA1 HW request is TIM1_UP        */
1021 #define LL_HPDMA1_REQUEST_TIM1_TRIG     19U      /*!< HPDMA1 HW request is TIM1_TRIG      */
1022 #define LL_HPDMA1_REQUEST_TIM1_COM      20U      /*!< HPDMA1 HW request is TIM1_COM       */
1023 
1024 #define LL_HPDMA1_REQUEST_TIM2_CH1      21U      /*!< HPDMA1 HW request is TIM2_CH1       */
1025 #define LL_HPDMA1_REQUEST_TIM2_CH2      22U      /*!< HPDMA1 HW request is TIM2_CH2       */
1026 #define LL_HPDMA1_REQUEST_TIM2_CH3      23U      /*!< HPDMA1 HW request is TIM2_CH3       */
1027 #define LL_HPDMA1_REQUEST_TIM2_CH4      24U      /*!< HPDMA1 HW request is TIM2_CH4       */
1028 #define LL_HPDMA1_REQUEST_TIM2_UP       25U      /*!< HPDMA1 HW request is TIM2_UP        */
1029 #define LL_HPDMA1_REQUEST_TIM2_TRIG     26U      /*!< HPDMA1 HW request is TIM2_TRIG      */
1030 
1031 #define LL_HPDMA1_REQUEST_TIM3_CH1      27U      /*!< HPDMA1 HW request is TIM3_CH1       */
1032 #define LL_HPDMA1_REQUEST_TIM3_CH2      28U      /*!< HPDMA1 HW request is TIM3_CH2       */
1033 #define LL_HPDMA1_REQUEST_TIM3_CH3      29U      /*!< HPDMA1 HW request is TIM3_CH3       */
1034 #define LL_HPDMA1_REQUEST_TIM3_CH4      30U      /*!< HPDMA1 HW request is TIM3_CH4       */
1035 #define LL_HPDMA1_REQUEST_TIM3_UP       31U      /*!< HPDMA1 HW request is TIM3_UP        */
1036 #define LL_HPDMA1_REQUEST_TIM3_TRIG     32U      /*!< HPDMA1 HW request is TIM3_TRIG      */
1037 
1038 #define LL_HPDMA1_REQUEST_TIM4_CH1      33U      /*!< HPDMA1 HW request is TIM4_CH1       */
1039 #define LL_HPDMA1_REQUEST_TIM4_CH2      34U      /*!< HPDMA1 HW request is TIM4_CH2       */
1040 #define LL_HPDMA1_REQUEST_TIM4_CH3      35U      /*!< HPDMA1 HW request is TIM4_CH3       */
1041 #define LL_HPDMA1_REQUEST_TIM4_CH4      36U      /*!< HPDMA1 HW request is TIM4_CH4       */
1042 #define LL_HPDMA1_REQUEST_TIM4_UP       37U      /*!< HPDMA1 HW request is TIM4_UP        */
1043 #define LL_HPDMA1_REQUEST_TIM4_TRIG     38U      /*!< HPDMA1 HW request is TIM4_TRIG      */
1044 
1045 #define LL_HPDMA1_REQUEST_TIM5_CH1      39U      /*!< HPDMA1 HW request is TIM5_CH1       */
1046 #define LL_HPDMA1_REQUEST_TIM5_CH2      40U      /*!< HPDMA1 HW request is TIM5_CH2       */
1047 #define LL_HPDMA1_REQUEST_TIM5_CH3      41U      /*!< HPDMA1 HW request is TIM5_CH3       */
1048 #define LL_HPDMA1_REQUEST_TIM5_CH4      42U      /*!< HPDMA1 HW request is TIM5_CH4       */
1049 #define LL_HPDMA1_REQUEST_TIM5_UP       43U      /*!< HPDMA1 HW request is TIM5_UP        */
1050 #define LL_HPDMA1_REQUEST_TIM5_TRIG     44U      /*!< HPDMA1 HW request is TIM5_TRIG      */
1051 
1052 #define LL_HPDMA1_REQUEST_TIM6_UP       45U      /*!< HPDMA1 HW request is TIM6_UP        */
1053 #define LL_HPDMA1_REQUEST_TIM7_UP       46U      /*!< HPDMA1 HW request is TIM7_UP        */
1054 
1055 #define LL_HPDMA1_REQUEST_TIM8_CH1      47U      /*!< HPDMA1 HW request is TIM8_CH1       */
1056 #define LL_HPDMA1_REQUEST_TIM8_CH2      48U      /*!< HPDMA1 HW request is TIM8_CH2       */
1057 #define LL_HPDMA1_REQUEST_TIM8_CH3      49U      /*!< HPDMA1 HW request is TIM8_CH3       */
1058 #define LL_HPDMA1_REQUEST_TIM8_CH4      50U      /*!< HPDMA1 HW request is TIM8_CH4       */
1059 #define LL_HPDMA1_REQUEST_TIM8_UP       51U      /*!< HPDMA1 HW request is TIM8_UP        */
1060 #define LL_HPDMA1_REQUEST_TIM8_TRIG     52U      /*!< HPDMA1 HW request is TIM8_TRIG      */
1061 #define LL_HPDMA1_REQUEST_TIM8_COM      53U      /*!< HPDMA1 HW request is TIM8_COM       */
1062 
1063 /* reserved                             54U                                               */
1064 /* reserved                             55U                                               */
1065 
1066 #define LL_HPDMA1_REQUEST_TIM15_CH1     56U      /*!< HPDMA1 HW request is TIM15_CH1      */
1067 #define LL_HPDMA1_REQUEST_TIM15_CH2     57U      /*!< HPDMA1 HW request is TIM15_CH2      */
1068 #define LL_HPDMA1_REQUEST_TIM15_UP      58U      /*!< HPDMA1 HW request is TIM15_UP       */
1069 #define LL_HPDMA1_REQUEST_TIM15_TRIG    59U      /*!< HPDMA1 HW request is TIM15_TRIG     */
1070 #define LL_HPDMA1_REQUEST_TIM15_COM     60U      /*!< HPDMA1 HW request is TIM15_COM      */
1071 
1072 #define LL_HPDMA1_REQUEST_TIM16_CH1     61U      /*!< HPDMA1 HW request is TIM16_CH1      */
1073 #define LL_HPDMA1_REQUEST_TIM16_UP      62U      /*!< HPDMA1 HW request is TIM16_UP       */
1074 #define LL_HPDMA1_REQUEST_TIM16_COM     63U      /*!< HPDMA1 HW request is TIM16_COM      */
1075 
1076 #define LL_HPDMA1_REQUEST_TIM17_CH1     64U      /*!< HPDMA1 HW request is TIM17_CH1      */
1077 #define LL_HPDMA1_REQUEST_TIM17_UP      65U      /*!< HPDMA1 HW request is TIM17_UP       */
1078 #define LL_HPDMA1_REQUEST_TIM17_COM     66U      /*!< HPDMA1 HW request is TIM17_COM      */
1079 
1080 #define LL_HPDMA1_REQUEST_TIM18_CH1     67U      /*!< HPDMA1 HW request is TIM18_CH1      */
1081 #define LL_HPDMA1_REQUEST_TIM18_UP      68U      /*!< HPDMA1 HW request is TIM18_UP       */
1082 #define LL_HPDMA1_REQUEST_TIM18_COM     69U      /*!< HPDMA1 HW request is TIM18_COM      */
1083 
1084 #define LL_HPDMA1_REQUEST_LPTIM1_IC1    70U      /*!< HPDMA1 HW request is LPTIM1_IC1     */
1085 #define LL_HPDMA1_REQUEST_LPTIM1_IC2    71U      /*!< HPDMA1 HW request is LPTIM1_IC2     */
1086 #define LL_HPDMA1_REQUEST_LPTIM1_UE     72U      /*!< HPDMA1 HW request is LPTIM1_UE      */
1087 #define LL_HPDMA1_REQUEST_LPTIM2_IC1    73U      /*!< HPDMA1 HW request is LPTIM2_IC1     */
1088 #define LL_HPDMA1_REQUEST_LPTIM2_IC2    74U      /*!< HPDMA1 HW request is LPTIM2_IC2     */
1089 #define LL_HPDMA1_REQUEST_LPTIM2_UE     75U      /*!< HPDMA1 HW request is LPTIM2_UE      */
1090 #define LL_HPDMA1_REQUEST_LPTIM3_IC1    76U      /*!< HPDMA1 HW request is LPTIM3_IC1     */
1091 #define LL_HPDMA1_REQUEST_LPTIM3_IC2    77U      /*!< HPDMA1 HW request is LPTIM3_IC2     */
1092 #define LL_HPDMA1_REQUEST_LPTIM3_UE     78U      /*!< HPDMA1 HW request is LPTIM3_UE      */
1093 
1094 #define LL_HPDMA1_REQUEST_SPI1_RX       79U      /*!< HPDMA1 HW request is SPI1_RX        */
1095 #define LL_HPDMA1_REQUEST_SPI1_TX       80U      /*!< HPDMA1 HW request is SPI1_TX        */
1096 #define LL_HPDMA1_REQUEST_SPI2_RX       81U      /*!< HPDMA1 HW request is SPI2_RX        */
1097 #define LL_HPDMA1_REQUEST_SPI2_TX       82U      /*!< HPDMA1 HW request is SPI2_TX        */
1098 #define LL_HPDMA1_REQUEST_SPI3_RX       83U      /*!< HPDMA1 HW request is SPI3_RX        */
1099 #define LL_HPDMA1_REQUEST_SPI3_TX       84U      /*!< HPDMA1 HW request is SPI3_TX        */
1100 #define LL_HPDMA1_REQUEST_SPI4_RX       85U      /*!< HPDMA1 HW request is SPI4_RX        */
1101 #define LL_HPDMA1_REQUEST_SPI4_TX       86U      /*!< HPDMA1 HW request is SPI4_TX        */
1102 #define LL_HPDMA1_REQUEST_SPI5_RX       87U      /*!< HPDMA1 HW request is SPI5_RX        */
1103 #define LL_HPDMA1_REQUEST_SPI5_TX       88U      /*!< HPDMA1 HW request is SPI5_TX        */
1104 #define LL_HPDMA1_REQUEST_SPI6_RX       89U      /*!< HPDMA1 HW request is SPI6_RX        */
1105 #define LL_HPDMA1_REQUEST_SPI6_TX       90U      /*!< HPDMA1 HW request is SPI6_TX        */
1106 
1107 #define LL_HPDMA1_REQUEST_SAI1_A        91U      /*!< HPDMA1 HW request is SAI1_A         */
1108 #define LL_HPDMA1_REQUEST_SAI1_B        92U      /*!< HPDMA1 HW request is SAI1_B         */
1109 #define LL_HPDMA1_REQUEST_SAI2_A        93U      /*!< HPDMA1 HW request is SAI2_A         */
1110 #define LL_HPDMA1_REQUEST_SAI2_B        94U      /*!< HPDMA1 HW request is SAI2_B         */
1111 
1112 #define LL_HPDMA1_REQUEST_I2C1_RX       95U      /*!< HPDMA1 HW request is I2C1_RX        */
1113 #define LL_HPDMA1_REQUEST_I2C1_TX       96U      /*!< HPDMA1 HW request is I2C1_TX        */
1114 #define LL_HPDMA1_REQUEST_I2C2_RX       97U      /*!< HPDMA1 HW request is I2C2_RX        */
1115 #define LL_HPDMA1_REQUEST_I2C2_TX       98U      /*!< HPDMA1 HW request is I2C2_TX        */
1116 #define LL_HPDMA1_REQUEST_I2C3_RX       99U      /*!< HPDMA1 HW request is I2C3_RX        */
1117 #define LL_HPDMA1_REQUEST_I2C3_TX       100U     /*!< HPDMA1 HW request is I2C3_TX        */
1118 
1119 #define LL_HPDMA1_REQUEST_I2C4_RX       101U     /*!< HPDMA1 HW request is I2C4_RX        */
1120 #define LL_HPDMA1_REQUEST_I2C4_TX       102U     /*!< HPDMA1 HW request is I2C4_TX        */
1121 
1122 #define LL_HPDMA1_REQUEST_I3C1_RX       103U     /*!< HPDMA1 HW request is I3C1_RX        */
1123 #define LL_HPDMA1_REQUEST_I3C1_TX       104U     /*!< HPDMA1 HW request is I3C1_TX        */
1124 #define LL_HPDMA1_REQUEST_I3C2_RX       105U     /*!< HPDMA1 HW request is I3C2_RX        */
1125 #define LL_HPDMA1_REQUEST_I3C2_TX       106U     /*!< HPDMA1 HW request is I3C2_TX        */
1126 
1127 #define LL_HPDMA1_REQUEST_USART1_RX     107U     /*!< HPDMA1 HW request is USART1_RX      */
1128 #define LL_HPDMA1_REQUEST_USART1_TX     108U     /*!< HPDMA1 HW request is USART1_TX      */
1129 #define LL_HPDMA1_REQUEST_USART2_RX     109U     /*!< HPDMA1 HW request is USART2_RX      */
1130 #define LL_HPDMA1_REQUEST_USART2_TX     110U     /*!< HPDMA1 HW request is USART2_TX      */
1131 #define LL_HPDMA1_REQUEST_USART3_RX     111U     /*!< HPDMA1 HW request is USART3_RX      */
1132 #define LL_HPDMA1_REQUEST_USART3_TX     112U     /*!< HPDMA1 HW request is USART3_TX      */
1133 #define LL_HPDMA1_REQUEST_UART4_RX      113U     /*!< HPDMA1 HW request is UART4_RX       */
1134 #define LL_HPDMA1_REQUEST_UART4_TX      114U     /*!< HPDMA1 HW request is UART4_TX       */
1135 #define LL_HPDMA1_REQUEST_UART5_RX      115U     /*!< HPDMA1 HW request is UART5_RX       */
1136 #define LL_HPDMA1_REQUEST_UART5_TX      116U     /*!< HPDMA1 HW request is UART5_TX       */
1137 #define LL_HPDMA1_REQUEST_USART6_RX     117U     /*!< HPDMA1 HW request is USART6_RX      */
1138 #define LL_HPDMA1_REQUEST_USART6_TX     118U     /*!< HPDMA1 HW request is USART6_TX      */
1139 #define LL_HPDMA1_REQUEST_UART7_RX      119U     /*!< HPDMA1 HW request is UART7_RX       */
1140 #define LL_HPDMA1_REQUEST_UART7_TX      120U     /*!< HPDMA1 HW request is UART7_TX       */
1141 #define LL_HPDMA1_REQUEST_UART8_RX      121U     /*!< HPDMA1 HW request is UART8_RX       */
1142 #define LL_HPDMA1_REQUEST_UART8_TX      122U     /*!< HPDMA1 HW request is UART8_TX       */
1143 #define LL_HPDMA1_REQUEST_UART9_RX      123U     /*!< HPDMA1 HW request is UART9_RX       */
1144 #define LL_HPDMA1_REQUEST_UART9_TX      124U     /*!< HPDMA1 HW request is UART9_TX       */
1145 #define LL_HPDMA1_REQUEST_USART10_RX    125U     /*!< HPDMA1 HW request is USART10_RX     */
1146 #define LL_HPDMA1_REQUEST_USART10_TX    126U     /*!< HPDMA1 HW request is USART10_TX     */
1147 
1148 #define LL_HPDMA1_REQUEST_LPUART1_RX    127U     /*!< HPDMA1 HW request is LPUART1_RX     */
1149 #define LL_HPDMA1_REQUEST_LPUART1_TX    128U     /*!< HPDMA1 HW request is LPUART1_TX     */
1150 
1151 #define LL_HPDMA1_REQUEST_SPDIFRX_CS    129U     /*!< HPDMA1 HW request is SPDIFRX_CS     */
1152 #define LL_HPDMA1_REQUEST_SPDIFRX_DT    130U     /*!< HPDMA1 HW request is SPDIFRX_DT     */
1153 
1154 #define LL_HPDMA1_REQUEST_ADF1_FLT0     131U     /*!< HPDMA1 HW request is ADF1_FLT0      */
1155 
1156 #define LL_HPDMA1_REQUEST_MDF1_FLT0     132U     /*!< HPDMA1 HW request is MDF1_FLT0      */
1157 #define LL_HPDMA1_REQUEST_MDF1_FLT1     133U     /*!< HPDMA1 HW request is MDF1_FLT1      */
1158 #define LL_HPDMA1_REQUEST_MDF1_FLT2     134U     /*!< HPDMA1 HW request is MDF1_FLT2      */
1159 #define LL_HPDMA1_REQUEST_MDF1_FLT3     135U     /*!< HPDMA1 HW request is MDF1_FLT3      */
1160 #define LL_HPDMA1_REQUEST_MDF1_FLT4     136U     /*!< HPDMA1 HW request is MDF1_FLT4      */
1161 #define LL_HPDMA1_REQUEST_MDF1_FLT5     137U     /*!< HPDMA1 HW request is MDF1_FLT5      */
1162 
1163 #define LL_HPDMA1_REQUEST_UCPD1_TX      138U     /*!< HPDMA1 HW request is UCPD1_TX       */
1164 #define LL_HPDMA1_REQUEST_UCPD1_RX      139U     /*!< HPDMA1 HW request is UCPD1_RX       */
1165 
1166 #define LL_HPDMA1_REQUEST_DCMI_PSSI     140U     /*!< HPDMA1 HW request is DCMI_PSSI      */
1167 
1168 #define LL_HPDMA1_REQUEST_I3C1_TC       141U     /*!< HPDMA1 HW request is I3C1_TC        */
1169 #define LL_HPDMA1_REQUEST_I3C1_RS       142U     /*!< HPDMA1 HW request is I3C1_RS        */
1170 
1171 #define LL_HPDMA1_REQUEST_I3C2_TC       143U     /*!< HPDMA1 HW request is I3C2_TC        */
1172 #define LL_HPDMA1_REQUEST_I3C2_RS       144U     /*!< HPDMA1 HW request is I3C2_RS        */
1173 
1174 
1175 /* GPDMA1 requests */
1176 #define LL_GPDMA1_REQUEST_JPEG_RX       0U       /*!< GPDMA1 HW request is JPEG_DMA_RX    */
1177 #define LL_GPDMA1_REQUEST_JPEG_TX       1U       /*!< GPDMA1 HW request is JPEG_DMA_TX    */
1178 #define LL_GPDMA1_REQUEST_OCTOSPI1      2U       /*!< GPDMA1 HW request is OCTOSPI1       */
1179 #define LL_GPDMA1_REQUEST_OCTOSPI2      3U       /*!< GPDMA1 HW request is OCTOSPI2       */
1180 #define LL_GPDMA1_REQUEST_OCTOSPI3      4U       /*!< GPDMA1 HW request is OCTOSPI3       */
1181 #define LL_GPDMA1_REQUEST_FMC2_TXRX     5U       /*!< GPDMA1 HW request is FMC2_TXRX      */
1182 #define LL_GPDMA1_REQUEST_FMC2_BCH      6U       /*!< GPDMA1 HW request is FMC2_BCH       */
1183 #define LL_GPDMA1_REQUEST_ADC1          7U       /*!< GPDMA1 HW request is ADC1           */
1184 #define LL_GPDMA1_REQUEST_ADC2          8U       /*!< GPDMA1 HW request is ADC2           */
1185 #define LL_GPDMA1_REQUEST_CRYP_IN       9U       /*!< GPDMA1 HW request is CRYP_IN        */
1186 #define LL_GPDMA1_REQUEST_CRYP_OUT      10U      /*!< GPDMA1 HW request is CRYP_OUT       */
1187 #define LL_GPDMA1_REQUEST_SAES_OUT      11U      /*!< GPDMA1 HW request is SAES_OUT       */
1188 #define LL_GPDMA1_REQUEST_SAES_IN       12U      /*!< GPDMA1 HW request is SAES_IN        */
1189 #define LL_GPDMA1_REQUEST_HASH_IN       13U      /*!< GPDMA1 HW request is HASH_IN        */
1190 
1191 #define LL_GPDMA1_REQUEST_TIM1_CH1      14U      /*!< GPDMA1 HW request is TIM1_CH1       */
1192 #define LL_GPDMA1_REQUEST_TIM1_CH2      15U      /*!< GPDMA1 HW request is TIM1_CH2       */
1193 #define LL_GPDMA1_REQUEST_TIM1_CH3      16U      /*!< GPDMA1 HW request is TIM1_CH3       */
1194 #define LL_GPDMA1_REQUEST_TIM1_CH4      17U      /*!< GPDMA1 HW request is TIM1_CH4       */
1195 #define LL_GPDMA1_REQUEST_TIM1_UP       18U      /*!< GPDMA1 HW request is TIM1_UP        */
1196 #define LL_GPDMA1_REQUEST_TIM1_TRIG     19U      /*!< GPDMA1 HW request is TIM1_TRIG      */
1197 #define LL_GPDMA1_REQUEST_TIM1_COM      20U      /*!< GPDMA1 HW request is TIM1_COM       */
1198 
1199 #define LL_GPDMA1_REQUEST_TIM2_CH1      21U      /*!< GPDMA1 HW request is TIM2_CH1       */
1200 #define LL_GPDMA1_REQUEST_TIM2_CH2      22U      /*!< GPDMA1 HW request is TIM2_CH2       */
1201 #define LL_GPDMA1_REQUEST_TIM2_CH3      23U      /*!< GPDMA1 HW request is TIM2_CH3       */
1202 #define LL_GPDMA1_REQUEST_TIM2_CH4      24U      /*!< GPDMA1 HW request is TIM2_CH4       */
1203 #define LL_GPDMA1_REQUEST_TIM2_UP       25U      /*!< GPDMA1 HW request is TIM2_UP        */
1204 #define LL_GPDMA1_REQUEST_TIM2_TRIG     26U      /*!< GPDMA1 HW request is TIM2_TRIG      */
1205 
1206 #define LL_GPDMA1_REQUEST_TIM3_CH1      27U      /*!< GPDMA1 HW request is TIM3_CH1       */
1207 #define LL_GPDMA1_REQUEST_TIM3_CH2      28U      /*!< GPDMA1 HW request is TIM3_CH2       */
1208 #define LL_GPDMA1_REQUEST_TIM3_CH3      29U      /*!< GPDMA1 HW request is TIM3_CH3       */
1209 #define LL_GPDMA1_REQUEST_TIM3_CH4      30U      /*!< GPDMA1 HW request is TIM3_CH4       */
1210 #define LL_GPDMA1_REQUEST_TIM3_UP       31U      /*!< GPDMA1 HW request is TIM3_UP        */
1211 #define LL_GPDMA1_REQUEST_TIM3_TRIG     32U      /*!< GPDMA1 HW request is TIM3_TRIG      */
1212 
1213 #define LL_GPDMA1_REQUEST_TIM4_CH1      33U      /*!< GPDMA1 HW request is TIM4_CH1       */
1214 #define LL_GPDMA1_REQUEST_TIM4_CH2      34U      /*!< GPDMA1 HW request is TIM4_CH2       */
1215 #define LL_GPDMA1_REQUEST_TIM4_CH3      35U      /*!< GPDMA1 HW request is TIM4_CH3       */
1216 #define LL_GPDMA1_REQUEST_TIM4_CH4      36U      /*!< GPDMA1 HW request is TIM4_CH4       */
1217 #define LL_GPDMA1_REQUEST_TIM4_UP       37U      /*!< GPDMA1 HW request is TIM4_UP        */
1218 #define LL_GPDMA1_REQUEST_TIM4_TRIG     38U      /*!< GPDMA1 HW request is TIM4_TRIG      */
1219 
1220 #define LL_GPDMA1_REQUEST_TIM5_CH1      39U      /*!< GPDMA1 HW request is TIM5_CH1       */
1221 #define LL_GPDMA1_REQUEST_TIM5_CH2      40U      /*!< GPDMA1 HW request is TIM5_CH2       */
1222 #define LL_GPDMA1_REQUEST_TIM5_CH3      41U      /*!< GPDMA1 HW request is TIM5_CH3       */
1223 #define LL_GPDMA1_REQUEST_TIM5_CH4      42U      /*!< GPDMA1 HW request is TIM5_CH4       */
1224 #define LL_GPDMA1_REQUEST_TIM5_UP       43U      /*!< GPDMA1 HW request is TIM5_UP        */
1225 #define LL_GPDMA1_REQUEST_TIM5_TRIG     44U      /*!< GPDMA1 HW request is TIM5_TRIG      */
1226 
1227 #define LL_GPDMA1_REQUEST_TIM6_UP       45U      /*!< GPDMA1 HW request is TIM6_UP        */
1228 #define LL_GPDMA1_REQUEST_TIM7_UP       46U      /*!< GPDMA1 HW request is TIM6_UP        */
1229 
1230 #define LL_GPDMA1_REQUEST_TIM8_CH1      47U      /*!< GPDMA1 HW request is TIM8_CH1       */
1231 #define LL_GPDMA1_REQUEST_TIM8_CH2      48U      /*!< GPDMA1 HW request is TIM8_CH2       */
1232 #define LL_GPDMA1_REQUEST_TIM8_CH3      49U      /*!< GPDMA1 HW request is TIM8_CH3       */
1233 #define LL_GPDMA1_REQUEST_TIM8_CH4      50U      /*!< GPDMA1 HW request is TIM8_CH4       */
1234 #define LL_GPDMA1_REQUEST_TIM8_UP       51U      /*!< GPDMA1 HW request is TIM8_UP        */
1235 #define LL_GPDMA1_REQUEST_TIM8_TRIG     52U      /*!< GPDMA1 HW request is TIM8_TRIG      */
1236 #define LL_GPDMA1_REQUEST_TIM8_COM      53U      /*!< GPDMA1 HW request is TIM8_COM       */
1237 
1238 /* reserved                             54U                                               */
1239 /* reserved                             55U                                               */
1240 
1241 #define LL_GPDMA1_REQUEST_TIM15_CH1     56U      /*!< GPDMA1 HW request is TIM15_CH1      */
1242 #define LL_GPDMA1_REQUEST_TIM15_CH2     57U      /*!< GPDMA1 HW request is TIM15_CH2      */
1243 #define LL_GPDMA1_REQUEST_TIM15_UP      58U      /*!< GPDMA1 HW request is TIM15_UP       */
1244 #define LL_GPDMA1_REQUEST_TIM15_TRIG    59U      /*!< GPDMA1 HW request is TIM15_TRIG     */
1245 #define LL_GPDMA1_REQUEST_TIM15_COM     60U      /*!< GPDMA1 HW request is TIM15_COM      */
1246 
1247 #define LL_GPDMA1_REQUEST_TIM16_CH1     61U      /*!< GPDMA1 HW request is TIM16_CH1      */
1248 #define LL_GPDMA1_REQUEST_TIM16_UP      62U      /*!< GPDMA1 HW request is TIM16_UP       */
1249 #define LL_GPDMA1_REQUEST_TIM16_COM     63U      /*!< GPDMA1 HW request is TIM16_COM      */
1250 
1251 #define LL_GPDMA1_REQUEST_TIM17_CH1     64U      /*!< GPDMA1 HW request is TIM17_CH1      */
1252 #define LL_GPDMA1_REQUEST_TIM17_UP      65U      /*!< GPDMA1 HW request is TIM17_UP       */
1253 #define LL_GPDMA1_REQUEST_TIM17_COM     66U      /*!< GPDMA1 HW request is TIM17_COM      */
1254 
1255 #define LL_GPDMA1_REQUEST_TIM18_CH1     67U      /*!< GPDMA1 HW request is TIM18_CH1      */
1256 #define LL_GPDMA1_REQUEST_TIM18_UP      68U      /*!< GPDMA1 HW request is TIM18_UP       */
1257 #define LL_GPDMA1_REQUEST_TIM18_COM     69U      /*!< GPDMA1 HW request is TIM18_COM      */
1258 
1259 #define LL_GPDMA1_REQUEST_LPTIM1_IC1    70U      /*!< GPDMA1 HW request is LPTIM1_IC1     */
1260 #define LL_GPDMA1_REQUEST_LPTIM1_IC2    71U      /*!< GPDMA1 HW request is LPTIM1_IC2     */
1261 #define LL_GPDMA1_REQUEST_LPTIM1_UE     72U      /*!< GPDMA1 HW request is LPTIM1_UE      */
1262 #define LL_GPDMA1_REQUEST_LPTIM2_IC1    73U      /*!< GPDMA1 HW request is LPTIM2_IC1     */
1263 #define LL_GPDMA1_REQUEST_LPTIM2_IC2    74U      /*!< GPDMA1 HW request is LPTIM2_IC2     */
1264 #define LL_GPDMA1_REQUEST_LPTIM2_UE     75U      /*!< GPDMA1 HW request is LPTIM2_UE      */
1265 #define LL_GPDMA1_REQUEST_LPTIM3_IC1    76U      /*!< GPDMA1 HW request is LPTIM3_IC1     */
1266 #define LL_GPDMA1_REQUEST_LPTIM3_IC2    77U      /*!< GPDMA1 HW request is LPTIM3_IC2     */
1267 #define LL_GPDMA1_REQUEST_LPTIM3_UE     78U      /*!< GPDMA1 HW request is LPTIM3_UE      */
1268 
1269 #define LL_GPDMA1_REQUEST_SPI1_RX       79U      /*!< GPDMA1 HW request is SPI1_RX        */
1270 #define LL_GPDMA1_REQUEST_SPI1_TX       80U      /*!< GPDMA1 HW request is SPI1_TX        */
1271 #define LL_GPDMA1_REQUEST_SPI2_RX       81U      /*!< GPDMA1 HW request is SPI2_RX        */
1272 #define LL_GPDMA1_REQUEST_SPI2_TX       82U      /*!< GPDMA1 HW request is SPI2_TX        */
1273 #define LL_GPDMA1_REQUEST_SPI3_RX       83U      /*!< GPDMA1 HW request is SPI3_RX        */
1274 #define LL_GPDMA1_REQUEST_SPI3_TX       84U      /*!< GPDMA1 HW request is SPI3_TX        */
1275 #define LL_GPDMA1_REQUEST_SPI4_RX       85U      /*!< GPDMA1 HW request is SPI4_RX        */
1276 #define LL_GPDMA1_REQUEST_SPI4_TX       86U      /*!< GPDMA1 HW request is SPI4_TX        */
1277 #define LL_GPDMA1_REQUEST_SPI5_RX       87U      /*!< GPDMA1 HW request is SPI5_RX        */
1278 #define LL_GPDMA1_REQUEST_SPI5_TX       88U      /*!< GPDMA1 HW request is SPI5_TX        */
1279 #define LL_GPDMA1_REQUEST_SPI6_RX       89U      /*!< GPDMA1 HW request is SPI6_RX        */
1280 #define LL_GPDMA1_REQUEST_SPI6_TX       90U      /*!< GPDMA1 HW request is SPI6_TX        */
1281 
1282 #define LL_GPDMA1_REQUEST_SAI1_A        91U      /*!< GPDMA1 HW request is SAI1_A         */
1283 #define LL_GPDMA1_REQUEST_SAI1_B        92U      /*!< GPDMA1 HW request is SAI1_B         */
1284 #define LL_GPDMA1_REQUEST_SAI2_A        93U      /*!< GPDMA1 HW request is SAI2_A         */
1285 #define LL_GPDMA1_REQUEST_SAI2_B        94U      /*!< GPDMA1 HW request is SAI2_B         */
1286 
1287 #define LL_GPDMA1_REQUEST_I2C1_RX       95U      /*!< GPDMA1 HW request is I2C1_RX        */
1288 #define LL_GPDMA1_REQUEST_I2C1_TX       96U      /*!< GPDMA1 HW request is I2C1_TX        */
1289 #define LL_GPDMA1_REQUEST_I2C2_RX       97U      /*!< GPDMA1 HW request is I2C2_RX        */
1290 #define LL_GPDMA1_REQUEST_I2C2_TX       98U      /*!< GPDMA1 HW request is I2C2_TX        */
1291 #define LL_GPDMA1_REQUEST_I2C3_RX       99U      /*!< GPDMA1 HW request is I2C3_RX        */
1292 #define LL_GPDMA1_REQUEST_I2C3_TX       100U     /*!< GPDMA1 HW request is I2C3_TX        */
1293 
1294 #define LL_GPDMA1_REQUEST_I2C4_RX       101U     /*!< GPDMA1 HW request is I2C4_RX        */
1295 #define LL_GPDMA1_REQUEST_I2C4_TX       102U     /*!< GPDMA1 HW request is I2C4_TX        */
1296 
1297 #define LL_GPDMA1_REQUEST_I3C1_RX       103U     /*!< GPDMA1 HW request is I3C1_RX        */
1298 #define LL_GPDMA1_REQUEST_I3C1_TX       104U     /*!< GPDMA1 HW request is I3C1_TX        */
1299 #define LL_GPDMA1_REQUEST_I3C2_RX       105U     /*!< GPDMA1 HW request is I3C2_RX        */
1300 #define LL_GPDMA1_REQUEST_I3C2_TX       106U     /*!< GPDMA1 HW request is I3C2_TX        */
1301 
1302 #define LL_GPDMA1_REQUEST_USART1_RX     107U     /*!< GPDMA1 HW request is USART1_RX      */
1303 #define LL_GPDMA1_REQUEST_USART1_TX     108U     /*!< GPDMA1 HW request is USART1_TX      */
1304 #define LL_GPDMA1_REQUEST_USART2_RX     109U     /*!< GPDMA1 HW request is USART2_RX      */
1305 #define LL_GPDMA1_REQUEST_USART2_TX     110U     /*!< GPDMA1 HW request is USART2_TX      */
1306 #define LL_GPDMA1_REQUEST_USART3_RX     111U     /*!< GPDMA1 HW request is USART3_RX      */
1307 #define LL_GPDMA1_REQUEST_USART3_TX     112U     /*!< GPDMA1 HW request is USART3_TX      */
1308 #define LL_GPDMA1_REQUEST_UART4_RX      113U     /*!< GPDMA1 HW request is UART4_RX       */
1309 #define LL_GPDMA1_REQUEST_UART4_TX      114U     /*!< GPDMA1 HW request is UART4_TX       */
1310 #define LL_GPDMA1_REQUEST_UART5_RX      115U     /*!< GPDMA1 HW request is UART5_RX       */
1311 #define LL_GPDMA1_REQUEST_UART5_TX      116U     /*!< GPDMA1 HW request is UART5_TX       */
1312 #define LL_GPDMA1_REQUEST_USART6_RX     117U     /*!< GPDMA1 HW request is USART6_RX      */
1313 #define LL_GPDMA1_REQUEST_USART6_TX     118U     /*!< GPDMA1 HW request is USART6_TX      */
1314 #define LL_GPDMA1_REQUEST_UART7_RX      119U     /*!< GPDMA1 HW request is UART7_RX       */
1315 #define LL_GPDMA1_REQUEST_UART7_TX      120U     /*!< GPDMA1 HW request is UART7_TX       */
1316 #define LL_GPDMA1_REQUEST_UART8_RX      121U     /*!< GPDMA1 HW request is UART8_RX       */
1317 #define LL_GPDMA1_REQUEST_UART8_TX      122U     /*!< GPDMA1 HW request is UART8_TX       */
1318 #define LL_GPDMA1_REQUEST_UART9_RX      123U     /*!< GPDMA1 HW request is UART9_RX       */
1319 #define LL_GPDMA1_REQUEST_UART9_TX      124U     /*!< GPDMA1 HW request is UART9_TX       */
1320 #define LL_GPDMA1_REQUEST_USART10_RX    125U     /*!< GPDMA1 HW request is USART10_RX     */
1321 #define LL_GPDMA1_REQUEST_USART10_TX    126U     /*!< GPDMA1 HW request is USART10_TX     */
1322 
1323 #define LL_GPDMA1_REQUEST_LPUART1_RX    127U     /*!< GPDMA1 HW request is LPUART1_RX     */
1324 #define LL_GPDMA1_REQUEST_LPUART1_TX    128U     /*!< GPDMA1 HW request is LPUART1_TX     */
1325 
1326 #define LL_GPDMA1_REQUEST_SPDIFRX_CS    129U     /*!< GPDMA1 HW request is SPDIFRX_CS     */
1327 #define LL_GPDMA1_REQUEST_SPDIFRX_DT    130U     /*!< GPDMA1 HW request is SPDIFRX_DT     */
1328 
1329 #define LL_GPDMA1_REQUEST_ADF1_FLT0     131U     /*!< GPDMA1 HW request is ADF1_FLT0      */
1330 
1331 #define LL_GPDMA1_REQUEST_MDF1_FLT0     132U     /*!< GPDMA1 HW request is MDF1_FLT0      */
1332 #define LL_GPDMA1_REQUEST_MDF1_FLT1     133U     /*!< GPDMA1 HW request is MDF1_FLT1      */
1333 #define LL_GPDMA1_REQUEST_MDF1_FLT2     134U     /*!< GPDMA1 HW request is MDF1_FLT2      */
1334 #define LL_GPDMA1_REQUEST_MDF1_FLT3     135U     /*!< GPDMA1 HW request is MDF1_FLT3      */
1335 #define LL_GPDMA1_REQUEST_MDF1_FLT4     136U     /*!< GPDMA1 HW request is MDF1_FLT4      */
1336 #define LL_GPDMA1_REQUEST_MDF1_FLT5     137U     /*!< GPDMA1 HW request is MDF1_FLT5      */
1337 
1338 #define LL_GPDMA1_REQUEST_UCPD1_TX      138U     /*!< GPDMA1 HW request is UCPD1_TX       */
1339 #define LL_GPDMA1_REQUEST_UCPD1_RX      139U     /*!< GPDMA1 HW request is UCPD1_RX       */
1340 
1341 #define LL_GPDMA1_REQUEST_DCMI_PSSI     140U     /*!< GPDMA1 HW request is DCMI_PSSI      */
1342 
1343 #define LL_GPDMA1_REQUEST_I3C1_TC       141U     /*!< GPDMA1 HW request is I3C1_TC        */
1344 #define LL_GPDMA1_REQUEST_I3C1_RS       142U     /*!< GPDMA1 HW request is I3C1_RS        */
1345 
1346 #define LL_GPDMA1_REQUEST_I3C2_TC       143U     /*!< GPDMA1 HW request is I3C2_TC        */
1347 #define LL_GPDMA1_REQUEST_I3C2_RS       144U     /*!< GPDMA1 HW request is I3C2_RS        */
1348 
1349 /**
1350   * @}
1351   */
1352 
1353 /** @defgroup DMA_LL_EC_TRIGGER_SELECTION Trigger Selection
1354   * @{
1355   */
1356 /* HPDMA1 triggers */
1357 #define LL_HPDMA1_TRIGGER_DCMIPP_P0_FEND           0U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P0_FEND           */
1358 #define LL_HPDMA1_TRIGGER_DCMIPP_P0_LEND           1U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P0_LEND           */
1359 #define LL_HPDMA1_TRIGGER_DCMIPP_P0_HSYNC          2U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P0_HSYNC          */
1360 #define LL_HPDMA1_TRIGGER_DCMIPP_P0_VSYNC          3U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P0_VSYNC          */
1361 
1362 #define LL_HPDMA1_TRIGGER_DCMIPP_P1_FEND           4U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P1_FEND           */
1363 #define LL_HPDMA1_TRIGGER_DCMIPP_P1_LEND           5U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P1_LEND           */
1364 #define LL_HPDMA1_TRIGGER_DCMIPP_P1_HSYNC          6U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P1_HSYNC          */
1365 #define LL_HPDMA1_TRIGGER_DCMIPP_P1_VSYNC          7U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P1_VSYNC          */
1366 
1367 #define LL_HPDMA1_TRIGGER_DCMIPP_P2_FEND           8U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P2_FEND           */
1368 #define LL_HPDMA1_TRIGGER_DCMIPP_P2_LEND           9U   /*!< HPDMA1 HW Trigger signal is DCMIPP_P2_LEND           */
1369 #define LL_HPDMA1_TRIGGER_DCMIPP_P2_HSYNC          10U  /*!< HPDMA1 HW Trigger signal is DCMIPP_P2_HSYNC          */
1370 #define LL_HPDMA1_TRIGGER_DCMIPP_P2_VSYNC          11U  /*!< HPDMA1 HW Trigger signal is DCMIPP_P2_VSYNC          */
1371 
1372 #define LL_HPDMA1_TRIGGER_DMA2D_CTC                12U  /*!< HPDMA1 HW Trigger signal is DMA2D_CTC                */
1373 #define LL_HPDMA1_TRIGGER_DMA2D_TC                 13U  /*!< HPDMA1 HW Trigger signal is DMA2D_TC                 */
1374 #define LL_HPDMA1_TRIGGER_DMA2D_TW                 14U  /*!< HPDMA1 HW Trigger signal is DMA2D_TW                 */
1375 
1376 #define LL_HPDMA1_TRIGGER_JPEG_EOC                 15U  /*!< HPDMA1 HW Trigger signal is JPEG_EOC                 */
1377 #define LL_HPDMA1_TRIGGER_JPEG_IFNF                16U  /*!< HPDMA1 HW Trigger signal is JPEG_IFNF                */
1378 #define LL_HPDMA1_TRIGGER_JPEG_IFT                 17U  /*!< HPDMA1 HW Trigger signal is JPEG_IFT                 */
1379 #define LL_HPDMA1_TRIGGER_JPEG_OFNE                18U  /*!< HPDMA1 HW Trigger signal is JPEG_OFNE                */
1380 #define LL_HPDMA1_TRIGGER_JPEG_OFT                 19U  /*!< HPDMA1 HW Trigger signal is JPEG_OFT                 */
1381 
1382 #define LL_HPDMA1_TRIGGER_LCD_LI                   20U  /*!< HPDMA1 HW Trigger signal is LCD_LI                   */
1383 
1384 #define LL_HPDMA1_TRIGGER_GPU2D1_GP_0              21U  /*!< HPDMA1 HW Trigger signal is GPU2D1_GP_0              */
1385 #define LL_HPDMA1_TRIGGER_GPU2D1_GP_1              22U  /*!< HPDMA1 HW Trigger signal is GPU2D1_GP_1              */
1386 #define LL_HPDMA1_TRIGGER_GPU2D1_GP_2              23U  /*!< HPDMA1 HW Trigger signal is GPU2D1_GP_2              */
1387 #define LL_HPDMA1_TRIGGER_GPU2D1_GP_3              24U  /*!< HPDMA1 HW Trigger signal is GPU2D1_GP_3              */
1388 
1389 #define LL_HPDMA1_TRIGGER_GFXTIM_3                 25U  /*!< HPDMA1 HW Trigger signal is GFXTIM_3                 */
1390 #define LL_HPDMA1_TRIGGER_GFXTIM_2                 26U  /*!< HPDMA1 HW Trigger signal is GFXTIM_2                 */
1391 #define LL_HPDMA1_TRIGGER_GFXTIM_1                 27U  /*!< HPDMA1 HW Trigger signal is GFXTIM_1                 */
1392 #define LL_HPDMA1_TRIGGER_GFXTIM_0                 28U  /*!< HPDMA1 HW Trigger signal is GFXTIM_0                 */
1393 
1394 /* reserved                                        29U                                                            */
1395 
1396 #define LL_HPDMA1_TRIGGER_LPTIM1_CH1               30U  /*!< HPDMA1 HW Trigger signal is LPTIM1_CH1               */
1397 #define LL_HPDMA1_TRIGGER_LPTIM1_CH2               31U  /*!< HPDMA1 HW Trigger signal is LPTIM1_CH2               */
1398 #define LL_HPDMA1_TRIGGER_LPTIM2_CH1               32U  /*!< HPDMA1 HW Trigger signal is LPTIM2_CH1               */
1399 #define LL_HPDMA1_TRIGGER_LPTIM2_CH2               33U  /*!< HPDMA1 HW Trigger signal is LPTIM2_CH2               */
1400 #define LL_HPDMA1_TRIGGER_LPTIM3_CH1               34U  /*!< HPDMA1 HW Trigger signal is LPTIM3_CH1               */
1401 #define LL_HPDMA1_TRIGGER_LPTIM3_CH2               35U  /*!< HPDMA1 HW Trigger signal is LPTIM3_CH2               */
1402 #define LL_HPDMA1_TRIGGER_LPTIM4_OUT               36U  /*!< HPDMA1 HW Trigger signal is LPTIM4_OUT               */
1403 #define LL_HPDMA1_TRIGGER_LPTIM5_OUT               37U  /*!< HPDMA1 HW Trigger signal is LPTIM5_OUT               */
1404 
1405 /* reserved                                        38U                                                            */
1406 
1407 #define LL_HPDMA1_TRIGGER_RTC_WKUP                 39U  /*!< HPDMA1 HW Trigger signal is RTC_WKUP                 */
1408 
1409 #define LL_HPDMA1_TRIGGER_LPUART1_IT_R_WUP_ASYNC   40U  /*!< HPDMA1 HW Trigger signal is IT_R_WUP_ASYNC           */
1410 #define LL_HPDMA1_TRIGGER_LPUART1_IT_T_WUP_ASYNC   41U  /*!< HPDMA1 HW Trigger signal is IT_T_WUP_ASYNC           */
1411 
1412 #define LL_HPDMA1_TRIGGER_SPI6_IT_OR_SPI6_AIT_SYNC 42U  /*!< HPDMA1 HW Trigger signal is SPI6_IT_OR_SPI6_AIT_SYNC */
1413 
1414 /* reserved                                        43U                                                            */
1415 
1416 #define LL_HPDMA1_TRIGGER_TIM1_TRGO                44U  /*!< HPDMA1 HW Trigger signal is TIM1_TRGO                */
1417 #define LL_HPDMA1_TRIGGER_TIM1_TRGO2               45U  /*!< HPDMA1 HW Trigger signal is TIM1_TRGO2               */
1418 #define LL_HPDMA1_TRIGGER_TIM2_TRGO                46U  /*!< HPDMA1 HW Trigger signal is TIM2_TRGO                */
1419 #define LL_HPDMA1_TRIGGER_TIM3_TRGO                47U  /*!< HPDMA1 HW Trigger signal is TIM3_TRGO                */
1420 #define LL_HPDMA1_TRIGGER_TIM4_TRGO                48U  /*!< HPDMA1 HW Trigger signal is TIM4_TRGO                */
1421 #define LL_HPDMA1_TRIGGER_TIM5_TRGO                49U  /*!< HPDMA1 HW Trigger signal is TIM5_TRGO                */
1422 #define LL_HPDMA1_TRIGGER_TIM6_TRGO                50U  /*!< HPDMA1 HW Trigger signal is TIM6_TRGO                */
1423 #define LL_HPDMA1_TRIGGER_TIM7_TRGO                51U  /*!< HPDMA1 HW Trigger signal is TIM7_TRGO                */
1424 #define LL_HPDMA1_TRIGGER_TIM8_TRGO                52U  /*!< HPDMA1 HW Trigger signal is TIM8_TRGO                */
1425 #define LL_HPDMA1_TRIGGER_TIM8_TRGO2               53U  /*!< HPDMA1 HW Trigger signal is TIM8_TRGO2               */
1426 
1427 /* reserved                                        54U                                                            */
1428 /* reserved                                        55U                                                            */
1429 /* reserved                                        56U                                                            */
1430 
1431 #define LL_HPDMA1_TRIGGER_TIM12_TRGO               57U  /*!< HPDMA1 HW Trigger signal is TIM12_TRGO               */
1432 #define LL_HPDMA1_TRIGGER_TIM15_TRGO               58U  /*!< HPDMA1 HW Trigger signal is TIM15_TRGO               */
1433 
1434 /* reserved                                        59U                                                            */
1435 
1436 #define LL_HPDMA1_TRIGGER_HPDMA1_CH0_TCF           60U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH0_TCF           */
1437 #define LL_HPDMA1_TRIGGER_HPDMA1_CH1_TCF           61U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH1_TCF           */
1438 #define LL_HPDMA1_TRIGGER_HPDMA1_CH2_TCF           62U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH2_TCF           */
1439 #define LL_HPDMA1_TRIGGER_HPDMA1_CH3_TCF           63U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH3_TCF           */
1440 #define LL_HPDMA1_TRIGGER_HPDMA1_CH4_TCF           64U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH4_TCF           */
1441 #define LL_HPDMA1_TRIGGER_HPDMA1_CH5_TCF           65U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH5_TCF           */
1442 #define LL_HPDMA1_TRIGGER_HPDMA1_CH6_TCF           66U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH6_TCF           */
1443 #define LL_HPDMA1_TRIGGER_HPDMA1_CH7_TCF           67U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH7_TCF           */
1444 #define LL_HPDMA1_TRIGGER_HPDMA1_CH8_TCF           68U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH8_TCF           */
1445 #define LL_HPDMA1_TRIGGER_HPDMA1_CH9_TCF           69U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH9_TCF           */
1446 #define LL_HPDMA1_TRIGGER_HPDMA1_CH10_TCF          70U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH10_TCF          */
1447 #define LL_HPDMA1_TRIGGER_HPDMA1_CH11_TCF          71U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH11_TCF          */
1448 #define LL_HPDMA1_TRIGGER_HPDMA1_CH12_TCF          72U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH12_TCF          */
1449 #define LL_HPDMA1_TRIGGER_HPDMA1_CH13_TCF          73U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH13_TCF          */
1450 #define LL_HPDMA1_TRIGGER_HPDMA1_CH14_TCF          74U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH14_TCF          */
1451 #define LL_HPDMA1_TRIGGER_HPDMA1_CH15_TCF          75U  /*!< HPDMA1 HW Trigger signal is HPDMA1_CH15_TCF          */
1452 
1453 #define LL_HPDMA1_TRIGGER_GPDMA1_CH0_TCF           76U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH0_TCF           */
1454 #define LL_HPDMA1_TRIGGER_GPDMA1_CH1_TCF           77U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH1_TCF           */
1455 #define LL_HPDMA1_TRIGGER_GPDMA1_CH2_TCF           78U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH2_TCF           */
1456 #define LL_HPDMA1_TRIGGER_GPDMA1_CH3_TCF           79U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH3_TCF           */
1457 #define LL_HPDMA1_TRIGGER_GPDMA1_CH4_TCF           80U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH4_TCF           */
1458 #define LL_HPDMA1_TRIGGER_GPDMA1_CH5_TCF           81U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH5_TCF           */
1459 #define LL_HPDMA1_TRIGGER_GPDMA1_CH6_TCF           82U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH6_TCF           */
1460 #define LL_HPDMA1_TRIGGER_GPDMA1_CH7_TCF           83U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH7_TCF           */
1461 #define LL_HPDMA1_TRIGGER_GPDMA1_CH8_TCF           84U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH8_TCF           */
1462 #define LL_HPDMA1_TRIGGER_GPDMA1_CH9_TCF           85U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH9_TCF           */
1463 #define LL_HPDMA1_TRIGGER_GPDMA1_CH10_TCF          86U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH10_TCF          */
1464 #define LL_HPDMA1_TRIGGER_GPDMA1_CH11_TCF          87U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH11_TCF          */
1465 #define LL_HPDMA1_TRIGGER_GPDMA1_CH12_TCF          88U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH12_TCF          */
1466 #define LL_HPDMA1_TRIGGER_GPDMA1_CH13_TCF          89U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH13_TCF          */
1467 #define LL_HPDMA1_TRIGGER_GPDMA1_CH14_TCF          90U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH14_TCF          */
1468 #define LL_HPDMA1_TRIGGER_GPDMA1_CH15_TCF          91U  /*!< HPDMA1 HW Trigger signal is GPDMA1_CH15_TCF          */
1469 
1470 /* reserved                                        92U                                                            */
1471 
1472 #define LL_HPDMA1_TRIGGER_EXTIT0_SYNC              93U  /*!< HPDMA1 HW Trigger signal is EXTIT0_SYNC              */
1473 #define LL_HPDMA1_TRIGGER_EXTIT1_SYNC              94U  /*!< HPDMA1 HW Trigger signal is EXTIT1_SYNC              */
1474 #define LL_HPDMA1_TRIGGER_EXTIT2_SYNC              95U  /*!< HPDMA1 HW Trigger signal is EXTIT2_SYNC              */
1475 #define LL_HPDMA1_TRIGGER_EXTIT3_SYNC              96U  /*!< HPDMA1 HW Trigger signal is EXTIT3_SYNC              */
1476 #define LL_HPDMA1_TRIGGER_EXTIT4_SYNC              97U  /*!< HPDMA1 HW Trigger signal is EXTIT4_SYNC              */
1477 #define LL_HPDMA1_TRIGGER_EXTIT5_SYNC              98U  /*!< HPDMA1 HW Trigger signal is EXTIT5_SYNC              */
1478 #define LL_HPDMA1_TRIGGER_EXTIT6_SYNC              99U  /*!< HPDMA1 HW Trigger signal is EXTIT6_SYNC              */
1479 #define LL_HPDMA1_TRIGGER_EXTIT7_SYNC              100U /*!< HPDMA1 HW Trigger signal is EXTIT7_SYNC              */
1480 #define LL_HPDMA1_TRIGGER_EXTIT8_SYNC              101U /*!< HPDMA1 HW Trigger signal is EXTIT8_SYNC              */
1481 #define LL_HPDMA1_TRIGGER_EXTIT9_SYNC              102U /*!< HPDMA1 HW Trigger signal is EXTIT9_SYNC              */
1482 #define LL_HPDMA1_TRIGGER_EXTIT10_SYNC             103U /*!< HPDMA1 HW Trigger signal is EXTIT10_SYNC             */
1483 #define LL_HPDMA1_TRIGGER_EXTIT11_SYNC             104U /*!< HPDMA1 HW Trigger signal is EXTIT11_SYNC             */
1484 #define LL_HPDMA1_TRIGGER_EXTIT12_SYNC             105U /*!< HPDMA1 HW Trigger signal is EXTIT12_SYNC             */
1485 #define LL_HPDMA1_TRIGGER_EXTIT13_SYNC             106U /*!< HPDMA1 HW Trigger signal is EXTIT13_SYNC             */
1486 #define LL_HPDMA1_TRIGGER_EXTIT14_SYNC             107U /*!< HPDMA1 HW Trigger signal is EXTIT14_SYNC             */
1487 #define LL_HPDMA1_TRIGGER_EXTIT15_SYNC             108U /*!< HPDMA1 HW Trigger signal is EXTIT15_SYNC             */
1488 
1489 
1490 /* GPDMA1 triggers */
1491 #define LL_GPDMA1_TRIGGER_DCMIPP_P0_FEND           0U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P0_FEND           */
1492 #define LL_GPDMA1_TRIGGER_DCMIPP_P0_LEND           1U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P0_LEND           */
1493 #define LL_GPDMA1_TRIGGER_DCMIPP_P0_HSYNC          2U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P0_HSYNC          */
1494 #define LL_GPDMA1_TRIGGER_DCMIPP_P0_VSYNC          3U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P0_VSYNC          */
1495 
1496 #define LL_GPDMA1_TRIGGER_DCMIPP_P1_FEND           4U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P1_FEND           */
1497 #define LL_GPDMA1_TRIGGER_DCMIPP_P1_LEND           5U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P1_LEND           */
1498 #define LL_GPDMA1_TRIGGER_DCMIPP_P1_HSYNC          6U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P1_HSYNC          */
1499 #define LL_GPDMA1_TRIGGER_DCMIPP_P1_VSYNC          7U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P1_VSYNC          */
1500 
1501 #define LL_GPDMA1_TRIGGER_DCMIPP_P2_FEND           8U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P2_FEND           */
1502 #define LL_GPDMA1_TRIGGER_DCMIPP_P2_LEND           9U   /*!< GPDMA1 HW Trigger signal is DCMIPP_P2_LEND           */
1503 #define LL_GPDMA1_TRIGGER_DCMIPP_P2_HSYNC          10U  /*!< GPDMA1 HW Trigger signal is DCMIPP_P2_HSYNC          */
1504 #define LL_GPDMA1_TRIGGER_DCMIPP_P2_VSYNC          11U  /*!< GPDMA1 HW Trigger signal is DCMIPP_P2_VSYNC          */
1505 
1506 #define LL_GPDMA1_TRIGGER_DMA2D_CTC                12U  /*!< GPDMA1 HW Trigger signal is DMA2D_CTC                */
1507 #define LL_GPDMA1_TRIGGER_DMA2D_TC                 13U  /*!< GPDMA1 HW Trigger signal is DMA2D_TC                 */
1508 #define LL_GPDMA1_TRIGGER_DMA2D_TW                 14U  /*!< GPDMA1 HW Trigger signal is DMA2D_TW                 */
1509 
1510 #define LL_GPDMA1_TRIGGER_JPEG_EOC                 15U  /*!< GPDMA1 HW Trigger signal is JPEG_EOC                 */
1511 #define LL_GPDMA1_TRIGGER_JPEG_IFNF                16U  /*!< GPDMA1 HW Trigger signal is JPEG_IFNF                */
1512 #define LL_GPDMA1_TRIGGER_JPEG_IFT                 17U  /*!< GPDMA1 HW Trigger signal is JPEG_IFT                 */
1513 #define LL_GPDMA1_TRIGGER_JPEG_OFNE                18U  /*!< GPDMA1 HW Trigger signal is JPEG_OFNE                */
1514 #define LL_GPDMA1_TRIGGER_JPEG_OFT                 19U  /*!< GPDMA1 HW Trigger signal is JPEG_OFT                 */
1515 
1516 #define LL_GPDMA1_TRIGGER_LCD_LI                   20U  /*!< GPDMA1 HW Trigger signal is LCD_LI                   */
1517 
1518 #define LL_GPDMA1_TRIGGER_GPU2D1_GP_0              21U  /*!< GPDMA1 HW Trigger signal is GPU2D1_GP_0              */
1519 #define LL_GPDMA1_TRIGGER_GPU2D1_GP_1              22U  /*!< GPDMA1 HW Trigger signal is GPU2D1_GP_1              */
1520 #define LL_GPDMA1_TRIGGER_GPU2D1_GP_2              23U  /*!< GPDMA1 HW Trigger signal is GPU2D1_GP_2              */
1521 #define LL_GPDMA1_TRIGGER_GPU2D1_GP_3              24U  /*!< GPDMA1 HW Trigger signal is GPU2D1_GP_3              */
1522 
1523 #define LL_GPDMA1_TRIGGER_GFXTIM_3                 25U  /*!< GPDMA1 HW Trigger signal is GFXTIM_3                 */
1524 #define LL_GPDMA1_TRIGGER_GFXTIM_2                 26U  /*!< GPDMA1 HW Trigger signal is GFXTIM_2                 */
1525 #define LL_GPDMA1_TRIGGER_GFXTIM_1                 27U  /*!< GPDMA1 HW Trigger signal is GFXTIM_1                 */
1526 #define LL_GPDMA1_TRIGGER_GFXTIM_0                 28U  /*!< GPDMA1 HW Trigger signal is GFXTIM_0                 */
1527 
1528 /* reserved                                        29U                                                            */
1529 
1530 #define LL_GPDMA1_TRIGGER_LPTIM1_CH1               30U  /*!< GPDMA1 HW Trigger signal is LPTIM1_CH1               */
1531 #define LL_GPDMA1_TRIGGER_LPTIM1_CH2               31U  /*!< GPDMA1 HW Trigger signal is LPTIM1_CH2               */
1532 #define LL_GPDMA1_TRIGGER_LPTIM2_CH1               32U  /*!< GPDMA1 HW Trigger signal is LPTIM2_CH1               */
1533 #define LL_GPDMA1_TRIGGER_LPTIM2_CH2               33U  /*!< GPDMA1 HW Trigger signal is LPTIM2_CH2               */
1534 #define LL_GPDMA1_TRIGGER_LPTIM3_CH1               34U  /*!< GPDMA1 HW Trigger signal is LPTIM3_CH1               */
1535 #define LL_GPDMA1_TRIGGER_LPTIM3_CH2               35U  /*!< GPDMA1 HW Trigger signal is LPTIM3_CH2               */
1536 #define LL_GPDMA1_TRIGGER_LPTIM4_OUT               36U  /*!< GPDMA1 HW Trigger signal is LPTIM4_OUT               */
1537 #define LL_GPDMA1_TRIGGER_LPTIM5_OUT               37U  /*!< GPDMA1 HW Trigger signal is LPTIM5_OUT               */
1538 
1539 /* reserved                                        38U                                                            */
1540 
1541 #define LL_GPDMA1_TRIGGER_RTC_WKUP                 39U  /*!< GPDMA1 HW Trigger signal is RTC_WKUP                 */
1542 
1543 #define LL_GPDMA1_TRIGGER_LPUART1_IT_R_WUP_ASYNC   40U  /*!< GPDMA1 HW Trigger signal is IT_R_WUP_ASYNC           */
1544 #define LL_GPDMA1_TRIGGER_LPUART1_IT_T_WUP_ASYNC   41U  /*!< GPDMA1 HW Trigger signal is IT_T_WUP_ASYNC           */
1545 
1546 #define LL_GPDMA1_TRIGGER_SPI6_IT_OR_SPI6_AIT_SYNC 42U  /*!< GPDMA1 HW Trigger signal is SPI6_IT_OR_SPI6_AIT_SYNC */
1547 
1548 /* reserved                                        43U                                                            */
1549 
1550 #define LL_GPDMA1_TRIGGER_TIM1_TRGO                44U  /*!< GPDMA1 HW Trigger signal is TIM1_TRGO                */
1551 #define LL_GPDMA1_TRIGGER_TIM1_TRGO2               45U  /*!< GPDMA1 HW Trigger signal is TIM1_TRGO2               */
1552 #define LL_GPDMA1_TRIGGER_TIM2_TRGO                46U  /*!< GPDMA1 HW Trigger signal is TIM2_TRGO                */
1553 #define LL_GPDMA1_TRIGGER_TIM3_TRGO                47U  /*!< GPDMA1 HW Trigger signal is TIM3_TRGO                */
1554 #define LL_GPDMA1_TRIGGER_TIM4_TRGO                48U  /*!< GPDMA1 HW Trigger signal is TIM4_TRGO                */
1555 #define LL_GPDMA1_TRIGGER_TIM5_TRGO                49U  /*!< GPDMA1 HW Trigger signal is TIM5_TRGO                */
1556 #define LL_GPDMA1_TRIGGER_TIM6_TRGO                50U  /*!< GPDMA1 HW Trigger signal is TIM6_TRGO                */
1557 #define LL_GPDMA1_TRIGGER_TIM7_TRGO                51U  /*!< GPDMA1 HW Trigger signal is TIM7_TRGO                */
1558 #define LL_GPDMA1_TRIGGER_TIM8_TRGO                52U  /*!< GPDMA1 HW Trigger signal is TIM8_TRGO                */
1559 #define LL_GPDMA1_TRIGGER_TIM8_TRGO2               53U  /*!< GPDMA1 HW Trigger signal is TIM8_TRGO2               */
1560 
1561 /* reserved                                        54U                                                            */
1562 /* reserved                                        55U                                                            */
1563 /* reserved                                        56U                                                            */
1564 
1565 #define LL_GPDMA1_TRIGGER_TIM12_TRGO               57U  /*!< GPDMA1 HW Trigger signal is TIM12_TRGO               */
1566 #define LL_GPDMA1_TRIGGER_TIM15_TRGO               58U  /*!< GPDMA1 HW Trigger signal is TIM15_TRGO               */
1567 
1568 /* reserved                                        59U                                                            */
1569 
1570 #define LL_GPDMA1_TRIGGER_HPDMA1_CH0_TCF           60U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH0_TCF           */
1571 #define LL_GPDMA1_TRIGGER_HPDMA1_CH1_TCF           61U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH1_TCF           */
1572 #define LL_GPDMA1_TRIGGER_HPDMA1_CH2_TCF           62U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH2_TCF           */
1573 #define LL_GPDMA1_TRIGGER_HPDMA1_CH3_TCF           63U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH3_TCF           */
1574 #define LL_GPDMA1_TRIGGER_HPDMA1_CH4_TCF           64U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH4_TCF           */
1575 #define LL_GPDMA1_TRIGGER_HPDMA1_CH5_TCF           65U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH5_TCF           */
1576 #define LL_GPDMA1_TRIGGER_HPDMA1_CH6_TCF           66U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH6_TCF           */
1577 #define LL_GPDMA1_TRIGGER_HPDMA1_CH7_TCF           67U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH7_TCF           */
1578 #define LL_GPDMA1_TRIGGER_HPDMA1_CH8_TCF           68U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH8_TCF           */
1579 #define LL_GPDMA1_TRIGGER_HPDMA1_CH9_TCF           69U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH9_TCF           */
1580 #define LL_GPDMA1_TRIGGER_HPDMA1_CH10_TCF          70U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH10_TCF          */
1581 #define LL_GPDMA1_TRIGGER_HPDMA1_CH11_TCF          71U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH11_TCF          */
1582 #define LL_GPDMA1_TRIGGER_HPDMA1_CH12_TCF          72U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH12_TCF          */
1583 #define LL_GPDMA1_TRIGGER_HPDMA1_CH13_TCF          73U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH13_TCF          */
1584 #define LL_GPDMA1_TRIGGER_HPDMA1_CH14_TCF          74U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH14_TCF          */
1585 #define LL_GPDMA1_TRIGGER_HPDMA1_CH15_TCF          75U  /*!< GPDMA1 HW Trigger signal is HPDMA1_CH15_TCF          */
1586 
1587 #define LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF           76U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH0_TCF           */
1588 #define LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF           77U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH1_TCF           */
1589 #define LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF           78U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH2_TCF           */
1590 #define LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF           79U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH3_TCF           */
1591 #define LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF           80U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH4_TCF           */
1592 #define LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF           81U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH5_TCF           */
1593 #define LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF           82U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH6_TCF           */
1594 #define LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF           83U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH7_TCF           */
1595 #define LL_GPDMA1_TRIGGER_GPDMA1_CH8_TCF           84U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH8_TCF           */
1596 #define LL_GPDMA1_TRIGGER_GPDMA1_CH9_TCF           85U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH9_TCF           */
1597 #define LL_GPDMA1_TRIGGER_GPDMA1_CH10_TCF          86U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH10_TCF          */
1598 #define LL_GPDMA1_TRIGGER_GPDMA1_CH11_TCF          87U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH11_TCF          */
1599 #define LL_GPDMA1_TRIGGER_GPDMA1_CH12_TCF          88U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH12_TCF          */
1600 #define LL_GPDMA1_TRIGGER_GPDMA1_CH13_TCF          89U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH13_TCF          */
1601 #define LL_GPDMA1_TRIGGER_GPDMA1_CH14_TCF          90U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH14_TCF          */
1602 #define LL_GPDMA1_TRIGGER_GPDMA1_CH15_TCF          91U  /*!< GPDMA1 HW Trigger signal is GPDMA1_CH15_TCF          */
1603 
1604 /* reserved                                        92U                                                            */
1605 
1606 #define LL_GPDMA1_TRIGGER_EXTIT0_SYNC              93U  /*!< GPDMA1 HW Trigger signal is EXTIT0_SYNC              */
1607 #define LL_GPDMA1_TRIGGER_EXTIT1_SYNC              94U  /*!< GPDMA1 HW Trigger signal is EXTIT1_SYNC              */
1608 #define LL_GPDMA1_TRIGGER_EXTIT2_SYNC              95U  /*!< GPDMA1 HW Trigger signal is EXTIT2_SYNC              */
1609 #define LL_GPDMA1_TRIGGER_EXTIT3_SYNC              96U  /*!< GPDMA1 HW Trigger signal is EXTIT3_SYNC              */
1610 #define LL_GPDMA1_TRIGGER_EXTIT4_SYNC              97U  /*!< GPDMA1 HW Trigger signal is EXTIT4_SYNC              */
1611 #define LL_GPDMA1_TRIGGER_EXTIT5_SYNC              98U  /*!< GPDMA1 HW Trigger signal is EXTIT5_SYNC              */
1612 #define LL_GPDMA1_TRIGGER_EXTIT6_SYNC              99U  /*!< GPDMA1 HW Trigger signal is EXTIT6_SYNC              */
1613 #define LL_GPDMA1_TRIGGER_EXTIT7_SYNC              100U /*!< GPDMA1 HW Trigger signal is EXTIT7_SYNC              */
1614 #define LL_GPDMA1_TRIGGER_EXTIT8_SYNC              101U /*!< GPDMA1 HW Trigger signal is EXTIT8_SYNC              */
1615 #define LL_GPDMA1_TRIGGER_EXTIT9_SYNC              102U /*!< GPDMA1 HW Trigger signal is EXTIT9_SYNC              */
1616 #define LL_GPDMA1_TRIGGER_EXTIT10_SYNC             103U /*!< GPDMA1 HW Trigger signal is EXTIT10_SYNC             */
1617 #define LL_GPDMA1_TRIGGER_EXTIT11_SYNC             104U /*!< GPDMA1 HW Trigger signal is EXTIT11_SYNC             */
1618 #define LL_GPDMA1_TRIGGER_EXTIT12_SYNC             105U /*!< GPDMA1 HW Trigger signal is EXTIT12_SYNC             */
1619 #define LL_GPDMA1_TRIGGER_EXTIT13_SYNC             106U /*!< GPDMA1 HW Trigger signal is EXTIT13_SYNC             */
1620 #define LL_GPDMA1_TRIGGER_EXTIT14_SYNC             107U /*!< GPDMA1 HW Trigger signal is EXTIT14_SYNC             */
1621 #define LL_GPDMA1_TRIGGER_EXTIT15_SYNC             108U /*!< GPDMA1 HW Trigger signal is EXTIT15_SYNC             */
1622 /**
1623   * @}
1624   */
1625 
1626 /**
1627   * @}
1628   */
1629 
1630 /* Exported macro ------------------------------------------------------------*/
1631 
1632 /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
1633   * @{
1634   */
1635 
1636 /** @defgroup DMA_LL_EM_COMMON_WRITE_READ_REGISTERS Common Write and Read Registers macros
1637   * @{
1638   */
1639 /**
1640   * @brief  Write a value in DMA register.
1641   * @param  __INSTANCE__ DMA Instance.
1642   * @param  __REG__      Register to be written.
1643   * @param  __VALUE__    Value to be written in the register.
1644   * @retval None.
1645   */
1646 #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
1647 
1648 /**
1649   * @brief  Read a value in DMA register.
1650   * @param  __INSTANCE__ DMA Instance.
1651   * @param  __REG__      Register to be read.
1652   * @retval Register value.
1653   */
1654 #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
1655 /**
1656   * @}
1657   */
1658 
1659 /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely
1660   * @{
1661   */
1662 /**
1663   * @brief  Convert DMAx_Channely into DMAx.
1664   * @param  __CHANNEL_INSTANCE__ DMAx_Channely.
1665   * @retval DMAx.
1666   */
1667 #define LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \
1668   (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)GPDMA1_Channel15)) ?  HPDMA1 : GPDMA1)
1669 
1670 /**
1671   * @brief  Convert DMAx_Channely into LL_DMA_CHANNEL_y.
1672   * @param  __CHANNEL_INSTANCE__ DMAx_Channely.
1673   * @retval LL_DMA_CHANNEL_y.
1674   */
1675 #define LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
1676   (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel0))  ? LL_DMA_CHANNEL_0  : \
1677    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel0))  ? LL_DMA_CHANNEL_0  : \
1678    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel1))  ? LL_DMA_CHANNEL_1  : \
1679    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel1))  ? LL_DMA_CHANNEL_1  : \
1680    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel2))  ? LL_DMA_CHANNEL_2  : \
1681    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel2))  ? LL_DMA_CHANNEL_2  : \
1682    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel3))  ? LL_DMA_CHANNEL_3  : \
1683    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel3))  ? LL_DMA_CHANNEL_3  : \
1684    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel4))  ? LL_DMA_CHANNEL_4  : \
1685    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel4))  ? LL_DMA_CHANNEL_4  : \
1686    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel5))  ? LL_DMA_CHANNEL_5  : \
1687    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel5))  ? LL_DMA_CHANNEL_5  : \
1688    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel6))  ? LL_DMA_CHANNEL_6  : \
1689    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel6))  ? LL_DMA_CHANNEL_6  : \
1690    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel7))  ? LL_DMA_CHANNEL_7  : \
1691    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel7))  ? LL_DMA_CHANNEL_7  : \
1692    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel8))  ? LL_DMA_CHANNEL_8  : \
1693    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel8))  ? LL_DMA_CHANNEL_8  : \
1694    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel9))  ? LL_DMA_CHANNEL_9  : \
1695    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel9))  ? LL_DMA_CHANNEL_9  : \
1696    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel10)) ? LL_DMA_CHANNEL_10 : \
1697    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel10)) ? LL_DMA_CHANNEL_10 : \
1698    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel11)) ? LL_DMA_CHANNEL_11 : \
1699    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel11)) ? LL_DMA_CHANNEL_11 : \
1700    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel12)) ? LL_DMA_CHANNEL_12 : \
1701    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel12)) ? LL_DMA_CHANNEL_12 : \
1702    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel13)) ? LL_DMA_CHANNEL_13 : \
1703    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel13)) ? LL_DMA_CHANNEL_13 : \
1704    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)HPDMA1_Channel14)) ? LL_DMA_CHANNEL_14 : \
1705    ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel14)) ? LL_DMA_CHANNEL_14 : \
1706    LL_DMA_CHANNEL_15)
1707 
1708 /**
1709   * @brief  Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely.
1710   * @param  __DMA_INSTANCE__ DMAx.
1711   * @param  __CHANNEL__      LL_DMA_CHANNEL_y.
1712   * @retval DMAx_Channely.
1713   */
1714 #define LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
1715   ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_0))) \
1716    ? HPDMA1_Channel0  :                                                                                                \
1717    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_0))) \
1718    ? GPDMA1_Channel0  :                                                                                                \
1719    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) \
1720    ? HPDMA1_Channel1  :                                                                                                \
1721    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) \
1722    ? GPDMA1_Channel1  :                                                                                                \
1723    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) \
1724    ? HPDMA1_Channel2  :                                                                                                \
1725    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) \
1726    ? GPDMA1_Channel2  :                                                                                                \
1727    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) \
1728    ? HPDMA1_Channel3  :                                                                                                \
1729    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) \
1730    ? GPDMA1_Channel3  :                                                                                                \
1731    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) \
1732    ? HPDMA1_Channel4  :                                                                                                \
1733    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) \
1734    ? GPDMA1_Channel4  :                                                                                                \
1735    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) \
1736    ? HPDMA1_Channel5  :                                                                                                \
1737    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) \
1738    ? GPDMA1_Channel5  :                                                                                                \
1739    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) \
1740    ? HPDMA1_Channel6  :                                                                                                \
1741    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) \
1742    ? GPDMA1_Channel6  :                                                                                                \
1743    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_7))) \
1744    ? HPDMA1_Channel7  :                                                                                                \
1745    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_7))) \
1746    ? GPDMA1_Channel7  :                                                                                                \
1747    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_8))) \
1748    ? HPDMA1_Channel8  :                                                                                                \
1749    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_8))) \
1750    ? GPDMA1_Channel8  :                                                                                                \
1751    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_9))) \
1752    ? HPDMA1_Channel9  :                                                                                                \
1753    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_9))) \
1754    ? GPDMA1_Channel9  :                                                                                                \
1755    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_10)))\
1756    ? HPDMA1_Channel10 :                                                                                                \
1757    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_10)))\
1758    ? GPDMA1_Channel10 :                                                                                                \
1759    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_11)))\
1760    ? HPDMA1_Channel11 :                                                                                                \
1761    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_11)))\
1762    ? GPDMA1_Channel11 :                                                                                                \
1763    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_12)))\
1764    ? HPDMA1_Channel12 :                                                                                                \
1765    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_12)))\
1766    ? GPDMA1_Channel12 :                                                                                                \
1767    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_13)))\
1768    ? HPDMA1_Channel13 :                                                                                                \
1769    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_13)))\
1770    ? GPDMA1_Channel13 :                                                                                                \
1771    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_14)))\
1772    ? HPDMA1_Channel14 :                                                                                                \
1773    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_14)))\
1774    ? GPDMA1_Channel14 :                                                                                                \
1775    (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)HPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_15)))\
1776    ? HPDMA1_Channel15 :  GPDMA1_Channel15)
1777 
1778 /**
1779   * @}
1780   */
1781 
1782 /**
1783   * @}
1784   */
1785 
1786 /* Exported functions --------------------------------------------------------*/
1787 
1788 /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
1789   * @{
1790   */
1791 
1792 /** @defgroup DMA_LL_EF_Configuration Configuration
1793   * @{
1794   */
1795 /**
1796   * @brief Enable channel.
1797   * @note  This API is used for all available DMA channels.
1798   * @rmtoll CCR          EN            LL_DMA_EnableChannel
1799   * @param  DMAx DMAx Instance.
1800   * @param  Channel This parameter can be one of the following values:
1801   *         @arg @ref LL_DMA_CHANNEL_0
1802   *         @arg @ref LL_DMA_CHANNEL_1
1803   *         @arg @ref LL_DMA_CHANNEL_2
1804   *         @arg @ref LL_DMA_CHANNEL_3
1805   *         @arg @ref LL_DMA_CHANNEL_4
1806   *         @arg @ref LL_DMA_CHANNEL_5
1807   *         @arg @ref LL_DMA_CHANNEL_6
1808   *         @arg @ref LL_DMA_CHANNEL_7
1809   *         @arg @ref LL_DMA_CHANNEL_8
1810   *         @arg @ref LL_DMA_CHANNEL_9
1811   *         @arg @ref LL_DMA_CHANNEL_10
1812   *         @arg @ref LL_DMA_CHANNEL_11
1813   *         @arg @ref LL_DMA_CHANNEL_12
1814   *         @arg @ref LL_DMA_CHANNEL_13
1815   *         @arg @ref LL_DMA_CHANNEL_14
1816   *         @arg @ref LL_DMA_CHANNEL_15
1817   * @retval None.
1818   */
LL_DMA_EnableChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1819 __STATIC_INLINE void LL_DMA_EnableChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1820 {
1821   uint32_t dma_base_addr = (uint32_t)DMAx;
1822   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN);
1823 }
1824 
1825 /**
1826   * @brief Disable channel.
1827   * @note  This API is used for all available DMA channels.
1828   * @rmtoll CCR          EN            LL_DMA_DisableChannel
1829   * @param  DMAx DMAx Instance.
1830   * @param  Channel This parameter can be one of the following values:
1831   *         @arg @ref LL_DMA_CHANNEL_0
1832   *         @arg @ref LL_DMA_CHANNEL_1
1833   *         @arg @ref LL_DMA_CHANNEL_2
1834   *         @arg @ref LL_DMA_CHANNEL_3
1835   *         @arg @ref LL_DMA_CHANNEL_4
1836   *         @arg @ref LL_DMA_CHANNEL_5
1837   *         @arg @ref LL_DMA_CHANNEL_6
1838   *         @arg @ref LL_DMA_CHANNEL_7
1839   *         @arg @ref LL_DMA_CHANNEL_8
1840   *         @arg @ref LL_DMA_CHANNEL_9
1841   *         @arg @ref LL_DMA_CHANNEL_10
1842   *         @arg @ref LL_DMA_CHANNEL_11
1843   *         @arg @ref LL_DMA_CHANNEL_12
1844   *         @arg @ref LL_DMA_CHANNEL_13
1845   *         @arg @ref LL_DMA_CHANNEL_14
1846   *         @arg @ref LL_DMA_CHANNEL_15
1847   * @retval None.
1848   */
LL_DMA_DisableChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1849 __STATIC_INLINE void LL_DMA_DisableChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1850 {
1851   uint32_t dma_base_addr = (uint32_t)DMAx;
1852   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
1853           (DMA_CCR_SUSP | DMA_CCR_RESET));
1854 }
1855 
1856 /**
1857   * @brief Check if channel is enabled or disabled.
1858   * @note  This API is used for all available DMA channels.
1859   * @rmtoll CCR          EN            LL_DMA_IsEnabledChannel
1860   * @param  DMAx DMAx Instance
1861   * @param  Channel This parameter can be one of the following values:
1862   *         @arg @ref LL_DMA_CHANNEL_0
1863   *         @arg @ref LL_DMA_CHANNEL_1
1864   *         @arg @ref LL_DMA_CHANNEL_2
1865   *         @arg @ref LL_DMA_CHANNEL_3
1866   *         @arg @ref LL_DMA_CHANNEL_4
1867   *         @arg @ref LL_DMA_CHANNEL_5
1868   *         @arg @ref LL_DMA_CHANNEL_6
1869   *         @arg @ref LL_DMA_CHANNEL_7
1870   *         @arg @ref LL_DMA_CHANNEL_8
1871   *         @arg @ref LL_DMA_CHANNEL_9
1872   *         @arg @ref LL_DMA_CHANNEL_10
1873   *         @arg @ref LL_DMA_CHANNEL_11
1874   *         @arg @ref LL_DMA_CHANNEL_12
1875   *         @arg @ref LL_DMA_CHANNEL_13
1876   *         @arg @ref LL_DMA_CHANNEL_14
1877   *         @arg @ref LL_DMA_CHANNEL_15
1878   * @retval State of bit (1 or 0).
1879   */
LL_DMA_IsEnabledChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1880 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1881 {
1882   uint32_t dma_base_addr = (uint32_t)DMAx;
1883   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN)
1884            == (DMA_CCR_EN)) ? 1UL : 0UL);
1885 }
1886 
1887 /**
1888   * @brief Reset channel.
1889   * @note  This API is used for all available DMA channels.
1890   * @rmtoll CCR          RESET            LL_DMA_ResetChannel
1891   * @param  DMAx DMAx Instance
1892   * @param  Channel This parameter can be one of the following values:
1893   *         @arg @ref LL_DMA_CHANNEL_0
1894   *         @arg @ref LL_DMA_CHANNEL_1
1895   *         @arg @ref LL_DMA_CHANNEL_2
1896   *         @arg @ref LL_DMA_CHANNEL_3
1897   *         @arg @ref LL_DMA_CHANNEL_4
1898   *         @arg @ref LL_DMA_CHANNEL_5
1899   *         @arg @ref LL_DMA_CHANNEL_6
1900   *         @arg @ref LL_DMA_CHANNEL_7
1901   *         @arg @ref LL_DMA_CHANNEL_8
1902   *         @arg @ref LL_DMA_CHANNEL_9
1903   *         @arg @ref LL_DMA_CHANNEL_10
1904   *         @arg @ref LL_DMA_CHANNEL_11
1905   *         @arg @ref LL_DMA_CHANNEL_12
1906   *         @arg @ref LL_DMA_CHANNEL_13
1907   *         @arg @ref LL_DMA_CHANNEL_14
1908   *         @arg @ref LL_DMA_CHANNEL_15
1909   * @retval None.
1910   */
LL_DMA_ResetChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1911 __STATIC_INLINE void LL_DMA_ResetChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1912 {
1913   uint32_t dma_base_addr = (uint32_t)DMAx;
1914   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_RESET);
1915 }
1916 
1917 /**
1918   * @brief Suspend channel.
1919   * @note  This API is used for all available DMA channels.
1920   * @rmtoll CCR          SUSP            LL_DMA_SuspendChannel
1921   * @param  DMAx DMAx Instance
1922   * @param  Channel This parameter can be one of the following values:
1923   *         @arg @ref LL_DMA_CHANNEL_0
1924   *         @arg @ref LL_DMA_CHANNEL_1
1925   *         @arg @ref LL_DMA_CHANNEL_2
1926   *         @arg @ref LL_DMA_CHANNEL_3
1927   *         @arg @ref LL_DMA_CHANNEL_4
1928   *         @arg @ref LL_DMA_CHANNEL_5
1929   *         @arg @ref LL_DMA_CHANNEL_6
1930   *         @arg @ref LL_DMA_CHANNEL_7
1931   *         @arg @ref LL_DMA_CHANNEL_8
1932   *         @arg @ref LL_DMA_CHANNEL_9
1933   *         @arg @ref LL_DMA_CHANNEL_10
1934   *         @arg @ref LL_DMA_CHANNEL_11
1935   *         @arg @ref LL_DMA_CHANNEL_12
1936   *         @arg @ref LL_DMA_CHANNEL_13
1937   *         @arg @ref LL_DMA_CHANNEL_14
1938   *         @arg @ref LL_DMA_CHANNEL_15
1939   * @retval None.
1940   */
LL_DMA_SuspendChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1941 __STATIC_INLINE void LL_DMA_SuspendChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1942 {
1943   uint32_t dma_base_addr = (uint32_t)DMAx;
1944   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP);
1945 }
1946 
1947 /**
1948   * @brief Resume channel.
1949   * @note  This API is used for all available DMA channels.
1950   * @rmtoll CCR          SUSP            LL_DMA_ResumeChannel
1951   * @param  DMAx DMAx Instance
1952   * @param  Channel This parameter can be one of the following values:
1953   *         @arg @ref LL_DMA_CHANNEL_0
1954   *         @arg @ref LL_DMA_CHANNEL_1
1955   *         @arg @ref LL_DMA_CHANNEL_2
1956   *         @arg @ref LL_DMA_CHANNEL_3
1957   *         @arg @ref LL_DMA_CHANNEL_4
1958   *         @arg @ref LL_DMA_CHANNEL_5
1959   *         @arg @ref LL_DMA_CHANNEL_6
1960   *         @arg @ref LL_DMA_CHANNEL_7
1961   *         @arg @ref LL_DMA_CHANNEL_8
1962   *         @arg @ref LL_DMA_CHANNEL_9
1963   *         @arg @ref LL_DMA_CHANNEL_10
1964   *         @arg @ref LL_DMA_CHANNEL_11
1965   *         @arg @ref LL_DMA_CHANNEL_12
1966   *         @arg @ref LL_DMA_CHANNEL_13
1967   *         @arg @ref LL_DMA_CHANNEL_14
1968   *         @arg @ref LL_DMA_CHANNEL_15
1969   * @retval None.
1970   */
LL_DMA_ResumeChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1971 __STATIC_INLINE void LL_DMA_ResumeChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1972 {
1973   uint32_t dma_base_addr = (uint32_t)DMAx;
1974   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP);
1975 }
1976 
1977 /**
1978   * @brief Check if channel is suspended.
1979   * @note  This API is used for all available DMA channels.
1980   * @rmtoll CCR          SUSP            LL_DMA_IsSuspendedChannel
1981   * @param  DMAx DMAx Instance
1982   * @param  Channel This parameter can be one of the following values:
1983   *         @arg @ref LL_DMA_CHANNEL_0
1984   *         @arg @ref LL_DMA_CHANNEL_1
1985   *         @arg @ref LL_DMA_CHANNEL_2
1986   *         @arg @ref LL_DMA_CHANNEL_3
1987   *         @arg @ref LL_DMA_CHANNEL_4
1988   *         @arg @ref LL_DMA_CHANNEL_5
1989   *         @arg @ref LL_DMA_CHANNEL_6
1990   *         @arg @ref LL_DMA_CHANNEL_7
1991   *         @arg @ref LL_DMA_CHANNEL_8
1992   *         @arg @ref LL_DMA_CHANNEL_9
1993   *         @arg @ref LL_DMA_CHANNEL_10
1994   *         @arg @ref LL_DMA_CHANNEL_11
1995   *         @arg @ref LL_DMA_CHANNEL_12
1996   *         @arg @ref LL_DMA_CHANNEL_13
1997   *         @arg @ref LL_DMA_CHANNEL_14
1998   *         @arg @ref LL_DMA_CHANNEL_15
1999   * @retval State of bit (1 or 0).
2000   */
LL_DMA_IsSuspendedChannel(const DMA_TypeDef * DMAx,uint32_t Channel)2001 __STATIC_INLINE uint32_t LL_DMA_IsSuspendedChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
2002 {
2003   uint32_t dma_base_addr = (uint32_t)DMAx;
2004   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP)
2005            == (DMA_CCR_SUSP)) ? 1UL : 0UL);
2006 }
2007 
2008 /**
2009   * @brief Set linked-list base address.
2010   * @note  This API is used for all available DMA channels.
2011   * @rmtoll CLBAR          LBA           LL_DMA_SetLinkedListBaseAddr
2012   * @param  DMAx DMAx Instance
2013   * @param  Channel This parameter can be one of the following values:
2014   *         @arg @ref LL_DMA_CHANNEL_0
2015   *         @arg @ref LL_DMA_CHANNEL_1
2016   *         @arg @ref LL_DMA_CHANNEL_2
2017   *         @arg @ref LL_DMA_CHANNEL_3
2018   *         @arg @ref LL_DMA_CHANNEL_4
2019   *         @arg @ref LL_DMA_CHANNEL_5
2020   *         @arg @ref LL_DMA_CHANNEL_6
2021   *         @arg @ref LL_DMA_CHANNEL_7
2022   *         @arg @ref LL_DMA_CHANNEL_8
2023   *         @arg @ref LL_DMA_CHANNEL_9
2024   *         @arg @ref LL_DMA_CHANNEL_10
2025   *         @arg @ref LL_DMA_CHANNEL_11
2026   *         @arg @ref LL_DMA_CHANNEL_12
2027   *         @arg @ref LL_DMA_CHANNEL_13
2028   *         @arg @ref LL_DMA_CHANNEL_14
2029   *         @arg @ref LL_DMA_CHANNEL_15
2030   * @param  LinkedListBaseAddr Between 0 to 0xFFFF0000 (where the 4 LSB bytes
2031   *         are always 0)
2032   * @retval None.
2033   */
LL_DMA_SetLinkedListBaseAddr(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkedListBaseAddr)2034 __STATIC_INLINE void LL_DMA_SetLinkedListBaseAddr(const DMA_TypeDef *DMAx, uint32_t Channel,
2035                                                   uint32_t LinkedListBaseAddr)
2036 {
2037   uint32_t dma_base_addr = (uint32_t)DMAx;
2038   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLBAR, DMA_CLBAR_LBA,
2039              (LinkedListBaseAddr & DMA_CLBAR_LBA));
2040 }
2041 
2042 /**
2043   * @brief Get linked-list base address.
2044   * @note  This API is used for all available DMA channels.
2045   * @rmtoll CLBAR          LBA           LL_DMA_GetLinkedListBaseAddr
2046   * @param  DMAx DMAx Instance
2047   * @param  Channel This parameter can be one of the following values:
2048   *         @arg @ref LL_DMA_CHANNEL_0
2049   *         @arg @ref LL_DMA_CHANNEL_1
2050   *         @arg @ref LL_DMA_CHANNEL_2
2051   *         @arg @ref LL_DMA_CHANNEL_3
2052   *         @arg @ref LL_DMA_CHANNEL_4
2053   *         @arg @ref LL_DMA_CHANNEL_5
2054   *         @arg @ref LL_DMA_CHANNEL_6
2055   *         @arg @ref LL_DMA_CHANNEL_7
2056   *         @arg @ref LL_DMA_CHANNEL_8
2057   *         @arg @ref LL_DMA_CHANNEL_9
2058   *         @arg @ref LL_DMA_CHANNEL_10
2059   *         @arg @ref LL_DMA_CHANNEL_11
2060   *         @arg @ref LL_DMA_CHANNEL_12
2061   *         @arg @ref LL_DMA_CHANNEL_13
2062   *         @arg @ref LL_DMA_CHANNEL_14
2063   *         @arg @ref LL_DMA_CHANNEL_15
2064   * @retval Value between 0 to 0xFFFF0000 (where the 4 LSB bytes are always 0)
2065   */
LL_DMA_GetLinkedListBaseAddr(const DMA_TypeDef * DMAx,uint32_t Channel)2066 __STATIC_INLINE uint32_t LL_DMA_GetLinkedListBaseAddr(const DMA_TypeDef *DMAx, uint32_t Channel)
2067 {
2068   uint32_t dma_base_addr = (uint32_t)DMAx;
2069   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLBAR, DMA_CLBAR_LBA));
2070 }
2071 
2072 /**
2073   * @brief Configure all parameters linked to channel control.
2074   * @note  This API is used for all available DMA channels.
2075   * @rmtoll CCR         PRIO           LL_DMA_ConfigControl\n
2076   *         CCR         LAP            LL_DMA_ConfigControl\n
2077   *         CCR         LSM            LL_DMA_ConfigControl
2078   * @param  DMAx DMAx Instance
2079   * @param  Channel This parameter can be one of the following values:
2080   *         @arg @ref LL_DMA_CHANNEL_0
2081   *         @arg @ref LL_DMA_CHANNEL_1
2082   *         @arg @ref LL_DMA_CHANNEL_2
2083   *         @arg @ref LL_DMA_CHANNEL_3
2084   *         @arg @ref LL_DMA_CHANNEL_4
2085   *         @arg @ref LL_DMA_CHANNEL_5
2086   *         @arg @ref LL_DMA_CHANNEL_6
2087   *         @arg @ref LL_DMA_CHANNEL_7
2088   *         @arg @ref LL_DMA_CHANNEL_8
2089   *         @arg @ref LL_DMA_CHANNEL_9
2090   *         @arg @ref LL_DMA_CHANNEL_10
2091   *         @arg @ref LL_DMA_CHANNEL_11
2092   *         @arg @ref LL_DMA_CHANNEL_12
2093   *         @arg @ref LL_DMA_CHANNEL_13
2094   *         @arg @ref LL_DMA_CHANNEL_14
2095   *         @arg @ref LL_DMA_CHANNEL_15
2096   * @param  Configuration This parameter must be a combination of all the following values:
2097   *         @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT  or @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT or
2098   *              @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT or @ref LL_DMA_HIGH_PRIORITY
2099   *         @arg @ref LL_DMA_LINK_ALLOCATED_PORT0     or @ref LL_DMA_LINK_ALLOCATED_PORT1
2100   *         @arg @ref LL_DMA_LSM_FULL_EXECUTION       or @ref LL_DMA_LSM_1LINK_EXECUTION
2101   *@retval None.
2102   */
LL_DMA_ConfigControl(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)2103 __STATIC_INLINE void LL_DMA_ConfigControl(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
2104 {
2105   uint32_t dma_base_addr = (uint32_t)DMAx;
2106   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
2107              (DMA_CCR_PRIO | DMA_CCR_LAP | DMA_CCR_LSM), Configuration);
2108 }
2109 
2110 /**
2111   * @brief Set priority level.
2112   * @note  This API is used for all available DMA channels.
2113   * @rmtoll CCR          PRIO           LL_DMA_SetChannelPriorityLevel
2114   * @param  DMAx DMAx Instance
2115   * @param  Channel This parameter can be one of the following values:
2116   *         @arg @ref LL_DMA_CHANNEL_0
2117   *         @arg @ref LL_DMA_CHANNEL_1
2118   *         @arg @ref LL_DMA_CHANNEL_2
2119   *         @arg @ref LL_DMA_CHANNEL_3
2120   *         @arg @ref LL_DMA_CHANNEL_4
2121   *         @arg @ref LL_DMA_CHANNEL_5
2122   *         @arg @ref LL_DMA_CHANNEL_6
2123   *         @arg @ref LL_DMA_CHANNEL_7
2124   *         @arg @ref LL_DMA_CHANNEL_8
2125   *         @arg @ref LL_DMA_CHANNEL_9
2126   *         @arg @ref LL_DMA_CHANNEL_10
2127   *         @arg @ref LL_DMA_CHANNEL_11
2128   *         @arg @ref LL_DMA_CHANNEL_12
2129   *         @arg @ref LL_DMA_CHANNEL_13
2130   *         @arg @ref LL_DMA_CHANNEL_14
2131   *         @arg @ref LL_DMA_CHANNEL_15
2132   * @param  Priority This parameter can be one of the following values:
2133   *         @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT
2134   *         @arg @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT
2135   *         @arg @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT
2136   *         @arg @ref LL_DMA_HIGH_PRIORITY
2137   * @retval None.
2138   */
LL_DMA_SetChannelPriorityLevel(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Priority)2139 __STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  Priority)
2140 {
2141   uint32_t dma_base_addr = (uint32_t)DMAx;
2142   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PRIO, Priority);
2143 }
2144 
2145 /**
2146   * @brief Get Channel priority level.
2147   * @note  This API is used for all available DMA channels.
2148   * @rmtoll CCR          PRIO           LL_DMA_GetChannelPriorityLevel
2149   * @param  DMAx DMAx Instance
2150   * @param  Channel This parameter can be one of the following values:
2151   *         @arg @ref LL_DMA_CHANNEL_0
2152   *         @arg @ref LL_DMA_CHANNEL_1
2153   *         @arg @ref LL_DMA_CHANNEL_2
2154   *         @arg @ref LL_DMA_CHANNEL_3
2155   *         @arg @ref LL_DMA_CHANNEL_4
2156   *         @arg @ref LL_DMA_CHANNEL_5
2157   *         @arg @ref LL_DMA_CHANNEL_6
2158   *         @arg @ref LL_DMA_CHANNEL_7
2159   *         @arg @ref LL_DMA_CHANNEL_8
2160   *         @arg @ref LL_DMA_CHANNEL_9
2161   *         @arg @ref LL_DMA_CHANNEL_10
2162   *         @arg @ref LL_DMA_CHANNEL_11
2163   *         @arg @ref LL_DMA_CHANNEL_12
2164   *         @arg @ref LL_DMA_CHANNEL_13
2165   *         @arg @ref LL_DMA_CHANNEL_14
2166   *         @arg @ref LL_DMA_CHANNEL_15
2167   * @retval Returned value can be one of the following values:
2168   *         @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT
2169   *         @arg @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT
2170   *         @arg @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT
2171   *         @arg @ref LL_DMA_HIGH_PRIORITY
2172   */
LL_DMA_GetChannelPriorityLevel(const DMA_TypeDef * DMAx,uint32_t Channel)2173 __STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel)
2174 {
2175   uint32_t dma_base_addr = (uint32_t)DMAx;
2176   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PRIO));
2177 }
2178 
2179 /**
2180   * @brief Set linked-list allocated port.
2181   * @rmtoll CCR          LAP           LL_DMA_SetLinkAllocatedPort
2182   * @param  DMAx DMAx Instance
2183   * @param  Channel This parameter can be one of the following values:
2184   *         @arg @ref LL_DMA_CHANNEL_0
2185   *         @arg @ref LL_DMA_CHANNEL_1
2186   *         @arg @ref LL_DMA_CHANNEL_2
2187   *         @arg @ref LL_DMA_CHANNEL_3
2188   *         @arg @ref LL_DMA_CHANNEL_4
2189   *         @arg @ref LL_DMA_CHANNEL_5
2190   *         @arg @ref LL_DMA_CHANNEL_6
2191   *         @arg @ref LL_DMA_CHANNEL_7
2192   *         @arg @ref LL_DMA_CHANNEL_8
2193   *         @arg @ref LL_DMA_CHANNEL_9
2194   *         @arg @ref LL_DMA_CHANNEL_10
2195   *         @arg @ref LL_DMA_CHANNEL_11
2196   *         @arg @ref LL_DMA_CHANNEL_12
2197   *         @arg @ref LL_DMA_CHANNEL_13
2198   *         @arg @ref LL_DMA_CHANNEL_14
2199   *         @arg @ref LL_DMA_CHANNEL_15
2200   * @param  LinkAllocatedPort This parameter can be one of the following values:
2201   *         @arg @ref LL_DMA_LINK_ALLOCATED_PORT0
2202   *         @arg @ref LL_DMA_LINK_ALLOCATED_PORT1
2203   * @retval None.
2204   */
LL_DMA_SetLinkAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkAllocatedPort)2205 __STATIC_INLINE void LL_DMA_SetLinkAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  LinkAllocatedPort)
2206 {
2207   uint32_t dma_base_addr = (uint32_t)DMAx;
2208   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
2209              DMA_CCR_LAP, LinkAllocatedPort);
2210 }
2211 
2212 /**
2213   * @brief Get linked-list allocated port.
2214   * @rmtoll CCR          LAP           LL_DMA_GetLinkAllocatedPort
2215   * @param  DMAx DMAx Instance
2216   * @param  Channel This parameter can be one of the following values:
2217   *         @arg @ref LL_DMA_CHANNEL_0
2218   *         @arg @ref LL_DMA_CHANNEL_1
2219   *         @arg @ref LL_DMA_CHANNEL_2
2220   *         @arg @ref LL_DMA_CHANNEL_3
2221   *         @arg @ref LL_DMA_CHANNEL_4
2222   *         @arg @ref LL_DMA_CHANNEL_5
2223   *         @arg @ref LL_DMA_CHANNEL_6
2224   *         @arg @ref LL_DMA_CHANNEL_7
2225   *         @arg @ref LL_DMA_CHANNEL_8
2226   *         @arg @ref LL_DMA_CHANNEL_9
2227   *         @arg @ref LL_DMA_CHANNEL_10
2228   *         @arg @ref LL_DMA_CHANNEL_11
2229   *         @arg @ref LL_DMA_CHANNEL_12
2230   *         @arg @ref LL_DMA_CHANNEL_13
2231   *         @arg @ref LL_DMA_CHANNEL_14
2232   *         @arg @ref LL_DMA_CHANNEL_15
2233   * @retval Returned value can be one of the following values:
2234   *         @arg @ref LL_DMA_LINK_ALLOCATED_PORT0
2235   *         @arg @ref LL_DMA_LINK_ALLOCATED_PORT1
2236   */
LL_DMA_GetLinkAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel)2237 __STATIC_INLINE uint32_t LL_DMA_GetLinkAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
2238 {
2239   uint32_t dma_base_addr = (uint32_t)DMAx;
2240   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LAP));
2241 }
2242 
2243 /**
2244   * @brief Set link step mode.
2245   * @note  This API is used for all available DMA channels.
2246   * @rmtoll CCR          LSM           LL_DMA_SetLinkStepMode
2247   * @param  DMAx DMAx Instance
2248   * @param  Channel This parameter can be one of the following values:
2249     *         @arg @ref LL_DMA_CHANNEL_0
2250   *         @arg @ref LL_DMA_CHANNEL_1
2251   *         @arg @ref LL_DMA_CHANNEL_2
2252   *         @arg @ref LL_DMA_CHANNEL_3
2253   *         @arg @ref LL_DMA_CHANNEL_4
2254   *         @arg @ref LL_DMA_CHANNEL_5
2255   *         @arg @ref LL_DMA_CHANNEL_6
2256   *         @arg @ref LL_DMA_CHANNEL_7
2257   *         @arg @ref LL_DMA_CHANNEL_8
2258   *         @arg @ref LL_DMA_CHANNEL_9
2259   *         @arg @ref LL_DMA_CHANNEL_10
2260   *         @arg @ref LL_DMA_CHANNEL_11
2261   *         @arg @ref LL_DMA_CHANNEL_12
2262   *         @arg @ref LL_DMA_CHANNEL_13
2263   *         @arg @ref LL_DMA_CHANNEL_14
2264   *         @arg @ref LL_DMA_CHANNEL_15
2265   * @param  LinkStepMode This parameter can be one of the following values:
2266   *         @arg @ref LL_DMA_LSM_FULL_EXECUTION
2267   *         @arg @ref LL_DMA_LSM_1LINK_EXECUTION
2268   * @retval None.
2269   */
LL_DMA_SetLinkStepMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkStepMode)2270 __STATIC_INLINE void LL_DMA_SetLinkStepMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t LinkStepMode)
2271 {
2272   uint32_t dma_base_addr = (uint32_t)DMAx;
2273   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LSM, LinkStepMode);
2274 }
2275 
2276 /**
2277   * @brief Get Link step mode.
2278   * @note  This API is used for all available DMA channels.
2279   * @rmtoll CCR          LSM           LL_DMA_GetLinkStepMode
2280   * @param  DMAx DMAx Instance
2281   * @param  Channel This parameter can be one of the following values:
2282   *         @arg @ref LL_DMA_CHANNEL_0
2283   *         @arg @ref LL_DMA_CHANNEL_1
2284   *         @arg @ref LL_DMA_CHANNEL_2
2285   *         @arg @ref LL_DMA_CHANNEL_3
2286   *         @arg @ref LL_DMA_CHANNEL_4
2287   *         @arg @ref LL_DMA_CHANNEL_5
2288   *         @arg @ref LL_DMA_CHANNEL_6
2289   *         @arg @ref LL_DMA_CHANNEL_7
2290   *         @arg @ref LL_DMA_CHANNEL_8
2291   *         @arg @ref LL_DMA_CHANNEL_9
2292   *         @arg @ref LL_DMA_CHANNEL_10
2293   *         @arg @ref LL_DMA_CHANNEL_11
2294   *         @arg @ref LL_DMA_CHANNEL_12
2295   *         @arg @ref LL_DMA_CHANNEL_13
2296   *         @arg @ref LL_DMA_CHANNEL_14
2297   *         @arg @ref LL_DMA_CHANNEL_15
2298   * @retval Returned value can be one of the following values:
2299   *         @arg @ref LL_DMA_LSM_FULL_EXECUTION
2300   *         @arg @ref LL_DMA_LSM_1LINK_EXECUTION
2301   */
LL_DMA_GetLinkStepMode(const DMA_TypeDef * DMAx,uint32_t Channel)2302 __STATIC_INLINE uint32_t LL_DMA_GetLinkStepMode(const DMA_TypeDef *DMAx, uint32_t Channel)
2303 {
2304   uint32_t dma_base_addr = (uint32_t)DMAx;
2305   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LSM));
2306 }
2307 
2308 /**
2309   * @brief Configure data transfer.
2310   * @note  This API is used for all available DMA channels.
2311   * @rmtoll CTR1          DAP           LL_DMA_ConfigTransfer\n
2312   *         CTR1          DWX           LL_DMA_ConfigTransfer\n
2313   *         CTR1          DHX           LL_DMA_ConfigTransfer\n
2314   *         CTR1          DBX           LL_DMA_ConfigTransfer\n
2315   *         CTR1          DINC          LL_DMA_ConfigTransfer\n
2316   *         CTR1          SAP           LL_DMA_ConfigTransfer\n
2317   *         CTR1          SBX           LL_DMA_ConfigTransfer\n
2318   *         CTR1          PAM           LL_DMA_ConfigTransfer\n
2319   *         CTR1          SINC          LL_DMA_ConfigTransfer
2320   * @param  DMAx DMAx Instance
2321   * @param  Channel This parameter can be one of the following values:
2322   *         @arg @ref LL_DMA_CHANNEL_0
2323   *         @arg @ref LL_DMA_CHANNEL_1
2324   *         @arg @ref LL_DMA_CHANNEL_2
2325   *         @arg @ref LL_DMA_CHANNEL_3
2326   *         @arg @ref LL_DMA_CHANNEL_4
2327   *         @arg @ref LL_DMA_CHANNEL_5
2328   *         @arg @ref LL_DMA_CHANNEL_6
2329   *         @arg @ref LL_DMA_CHANNEL_7
2330   *         @arg @ref LL_DMA_CHANNEL_8
2331   *         @arg @ref LL_DMA_CHANNEL_9
2332   *         @arg @ref LL_DMA_CHANNEL_10
2333   *         @arg @ref LL_DMA_CHANNEL_11
2334   *         @arg @ref LL_DMA_CHANNEL_12
2335   *         @arg @ref LL_DMA_CHANNEL_13
2336   *         @arg @ref LL_DMA_CHANNEL_14
2337   *         @arg @ref LL_DMA_CHANNEL_15
2338   * @param  Configuration This parameter must be a combination of all the following values:
2339   *         @arg @ref LL_DMA_DEST_ALLOCATED_PORT0     or @ref LL_DMA_DEST_ALLOCATED_PORT1
2340   *         @arg @ref LL_DMA_DEST_WORD_PRESERVE       or @ref LL_DMA_DEST_WORD_EXCHANGE
2341   *         @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE   or @ref LL_DMA_DEST_HALFWORD_EXCHANGE
2342   *         @arg @ref LL_DMA_DEST_BYTE_PRESERVE       or @ref LL_DMA_DEST_BYTE_EXCHANGE
2343   *         @arg @ref LL_DMA_SRC_BYTE_PRESERVE        or @ref LL_DMA_SRC_BYTE_EXCHANGE
2344   *         @arg @ref LL_DMA_DEST_FIXED               or @ref LL_DMA_DEST_INCREMENT
2345   *         @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE      or @ref LL_DMA_DEST_DATAWIDTH_HALFWORD or
2346   *              @ref LL_DMA_DEST_DATAWIDTH_WORD      or @ref LL_DMA_DEST_DATAWIDTH_DOUBLEWORD
2347   *         @arg @ref LL_DMA_SRC_ALLOCATED_PORT0      or @ref LL_DMA_SRC_ALLOCATED_PORT1
2348   *         @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD      or @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD  or
2349   *              @ref LL_DMA_DATA_PACK_UNPACK
2350   *         @arg @ref LL_DMA_SRC_FIXED                or @ref LL_DMA_SRC_INCREMENT
2351   *         @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE       or @ref LL_DMA_SRC_DATAWIDTH_HALFWORD  or
2352   *              @ref LL_DMA_SRC_DATAWIDTH_WORD       or @ref LL_DMA_SRC_DATAWIDTH_DOUBLEWORD
2353   *@retval None.
2354   */
LL_DMA_ConfigTransfer(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)2355 __STATIC_INLINE void LL_DMA_ConfigTransfer(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
2356 {
2357   uint32_t dma_base_addr = (uint32_t)DMAx;
2358   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
2359              DMA_CTR1_DAP | DMA_CTR1_DWX | DMA_CTR1_DHX | DMA_CTR1_DBX | DMA_CTR1_SBX | DMA_CTR1_DINC | \
2360              DMA_CTR1_SINC | DMA_CTR1_SAP | DMA_CTR1_PAM | DMA_CTR1_DDW_LOG2 | DMA_CTR1_SDW_LOG2, Configuration);
2361 }
2362 
2363 /**
2364   * @brief Configure source and destination burst length.
2365   * @rmtoll CTR1          DBL_1           LL_DMA_SetDestBurstLength\n
2366   * @rmtoll CTR1          SBL_1           LL_DMA_SetDestBurstLength
2367   * @param  DMAx DMAx Instance
2368   * @param  Channel This parameter can be one of the following values:
2369   *         @arg @ref LL_DMA_CHANNEL_0
2370   *         @arg @ref LL_DMA_CHANNEL_1
2371   *         @arg @ref LL_DMA_CHANNEL_2
2372   *         @arg @ref LL_DMA_CHANNEL_3
2373   *         @arg @ref LL_DMA_CHANNEL_4
2374   *         @arg @ref LL_DMA_CHANNEL_5
2375   *         @arg @ref LL_DMA_CHANNEL_6
2376   *         @arg @ref LL_DMA_CHANNEL_7
2377   *         @arg @ref LL_DMA_CHANNEL_8
2378   *         @arg @ref LL_DMA_CHANNEL_9
2379   *         @arg @ref LL_DMA_CHANNEL_10
2380   *         @arg @ref LL_DMA_CHANNEL_11
2381   *         @arg @ref LL_DMA_CHANNEL_12
2382   *         @arg @ref LL_DMA_CHANNEL_13
2383   *         @arg @ref LL_DMA_CHANNEL_14
2384   *         @arg @ref LL_DMA_CHANNEL_15
2385   * @param  SrcBurstLength Between 1 to 64
2386   * @param  DestBurstLength Between 1 to 64
2387   * @retval None.
2388   */
LL_DMA_ConfigBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcBurstLength,uint32_t DestBurstLength)2389 __STATIC_INLINE void LL_DMA_ConfigBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcBurstLength,
2390                                               uint32_t DestBurstLength)
2391 {
2392   uint32_t dma_base_addr = (uint32_t)DMAx;
2393   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
2394              (DMA_CTR1_SBL_1 | DMA_CTR1_DBL_1), (((SrcBurstLength - 1U) << DMA_CTR1_SBL_1_Pos) & DMA_CTR1_SBL_1) | \
2395              (((DestBurstLength - 1U) << DMA_CTR1_DBL_1_Pos) & DMA_CTR1_DBL_1));
2396 }
2397 
2398 #if defined(CPU_IN_SECURE_STATE)
2399 /**
2400   * @brief Set the static isolation attribute (CID) of the DMA channel.
2401   * @note  This API is used for HPDMA channels.
2402   * @rmtoll CCIDCFGR      SCID           LL_DMA_SetStaticIsolation\n
2403   * @param  DMAx DMAx Instance
2404   * @param  Channel This parameter can be one of the following values:
2405   *         @arg @ref LL_DMA_CHANNEL_0
2406   *         @arg @ref LL_DMA_CHANNEL_1
2407   *         @arg @ref LL_DMA_CHANNEL_2
2408   *         @arg @ref LL_DMA_CHANNEL_3
2409   *         @arg @ref LL_DMA_CHANNEL_4
2410   *         @arg @ref LL_DMA_CHANNEL_5
2411   *         @arg @ref LL_DMA_CHANNEL_6
2412   *         @arg @ref LL_DMA_CHANNEL_7
2413   *         @arg @ref LL_DMA_CHANNEL_8
2414   *         @arg @ref LL_DMA_CHANNEL_9
2415   *         @arg @ref LL_DMA_CHANNEL_10
2416   *         @arg @ref LL_DMA_CHANNEL_11
2417   *         @arg @ref LL_DMA_CHANNEL_12
2418   *         @arg @ref LL_DMA_CHANNEL_13
2419   *         @arg @ref LL_DMA_CHANNEL_14
2420   *         @arg @ref LL_DMA_CHANNEL_15
2421   * @param  Cid This parameter must be a combination of all the following values:
2422   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_0
2423   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_1
2424   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_2
2425   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_3
2426   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_4
2427   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_5
2428   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_6
2429   * @retval None.
2430   */
LL_DMA_SetStaticIsolation(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Cid)2431 __STATIC_INLINE void LL_DMA_SetStaticIsolation(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Cid)
2432 {
2433   uint32_t dma_base_addr = (uint32_t)DMAx;
2434   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCIDCFGR,
2435              DMA_CCIDCFGR_SCID, Cid);
2436 }
2437 #endif /* CPU_IN_SECURE_STATE */
2438 
2439 /**
2440   * @brief Get the static isolation attribute (CID) of the DMA channel.
2441   * @note  This API is used for HPDMA channels.
2442   * @rmtoll CCIDCFGR      SCID           LL_DMA_GetStaticIsolation\n
2443   * @param  DMAx DMAx Instance
2444   * @param  Channel This parameter can be one of the following values:
2445   *         @arg @ref LL_DMA_CHANNEL_0
2446   *         @arg @ref LL_DMA_CHANNEL_1
2447   *         @arg @ref LL_DMA_CHANNEL_2
2448   *         @arg @ref LL_DMA_CHANNEL_3
2449   *         @arg @ref LL_DMA_CHANNEL_4
2450   *         @arg @ref LL_DMA_CHANNEL_5
2451   *         @arg @ref LL_DMA_CHANNEL_6
2452   *         @arg @ref LL_DMA_CHANNEL_7
2453   *         @arg @ref LL_DMA_CHANNEL_8
2454   *         @arg @ref LL_DMA_CHANNEL_9
2455   *         @arg @ref LL_DMA_CHANNEL_10
2456   *         @arg @ref LL_DMA_CHANNEL_11
2457   *         @arg @ref LL_DMA_CHANNEL_12
2458   *         @arg @ref LL_DMA_CHANNEL_13
2459   *         @arg @ref LL_DMA_CHANNEL_14
2460   *         @arg @ref LL_DMA_CHANNEL_15
2461   * @retval Returned value can be one of the following values:
2462   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_0
2463   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_1
2464   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_2
2465   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_3
2466   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_4
2467   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_5
2468   *         @arg @ref LL_DMA_CHANNEL_STATIC_CID_6
2469   */
LL_DMA_GetStaticIsolation(DMA_TypeDef * DMAx,uint32_t Channel)2470 __STATIC_INLINE uint32_t LL_DMA_GetStaticIsolation(DMA_TypeDef *DMAx, uint32_t Channel)
2471 {
2472   uint32_t dma_base_addr = (uint32_t)DMAx;
2473   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCIDCFGR,
2474                    DMA_CCIDCFGR_SCID));
2475 }
2476 
2477 /**
2478   * @brief Enable the isolation (CID filtering) of the DMA channel.
2479   * @note  This API is used for HPDMA channels.
2480   * @rmtoll CCIDCFGR          CFEN       LL_DMA_EnableIsolation
2481   * @param  DMAx DMAx Instance
2482   * @param  Channel This parameter can be one of the following values:
2483   *         @arg @ref LL_DMA_CHANNEL_0
2484   *         @arg @ref LL_DMA_CHANNEL_1
2485   *         @arg @ref LL_DMA_CHANNEL_2
2486   *         @arg @ref LL_DMA_CHANNEL_3
2487   *         @arg @ref LL_DMA_CHANNEL_4
2488   *         @arg @ref LL_DMA_CHANNEL_5
2489   *         @arg @ref LL_DMA_CHANNEL_6
2490   *         @arg @ref LL_DMA_CHANNEL_7
2491   *         @arg @ref LL_DMA_CHANNEL_8
2492   *         @arg @ref LL_DMA_CHANNEL_9
2493   *         @arg @ref LL_DMA_CHANNEL_10
2494   *         @arg @ref LL_DMA_CHANNEL_11
2495   *         @arg @ref LL_DMA_CHANNEL_12
2496   *         @arg @ref LL_DMA_CHANNEL_13
2497   *         @arg @ref LL_DMA_CHANNEL_14
2498   *         @arg @ref LL_DMA_CHANNEL_15
2499   * @retval None.
2500   */
LL_DMA_EnableIsolation(const DMA_TypeDef * DMAx,uint32_t Channel)2501 __STATIC_INLINE void LL_DMA_EnableIsolation(const DMA_TypeDef *DMAx, uint32_t Channel)
2502 {
2503   uint32_t dma_base_addr = (uint32_t)DMAx;
2504   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCIDCFGR, DMA_CCIDCFGR_CFEN);
2505 }
2506 
2507 /**
2508   * @brief Disable the isolation (CID filtering) of the DMA channel.
2509   * @note  This API is used for HPDMA channels.
2510   * @rmtoll CCIDCFGR          CFEN       LL_DMA_DisableIsolation
2511   * @param  DMAx DMAx Instance
2512   * @param  Channel This parameter can be one of the following values:
2513   *         @arg @ref LL_DMA_CHANNEL_0
2514   *         @arg @ref LL_DMA_CHANNEL_1
2515   *         @arg @ref LL_DMA_CHANNEL_2
2516   *         @arg @ref LL_DMA_CHANNEL_3
2517   *         @arg @ref LL_DMA_CHANNEL_4
2518   *         @arg @ref LL_DMA_CHANNEL_5
2519   *         @arg @ref LL_DMA_CHANNEL_6
2520   *         @arg @ref LL_DMA_CHANNEL_7
2521   *         @arg @ref LL_DMA_CHANNEL_8
2522   *         @arg @ref LL_DMA_CHANNEL_9
2523   *         @arg @ref LL_DMA_CHANNEL_10
2524   *         @arg @ref LL_DMA_CHANNEL_11
2525   *         @arg @ref LL_DMA_CHANNEL_12
2526   *         @arg @ref LL_DMA_CHANNEL_13
2527   *         @arg @ref LL_DMA_CHANNEL_14
2528   *         @arg @ref LL_DMA_CHANNEL_15
2529   * @retval None.
2530   */
LL_DMA_DisableIsolation(const DMA_TypeDef * DMAx,uint32_t Channel)2531 __STATIC_INLINE void LL_DMA_DisableIsolation(const DMA_TypeDef *DMAx, uint32_t Channel)
2532 {
2533   uint32_t dma_base_addr = (uint32_t)DMAx;
2534   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCIDCFGR, DMA_CCIDCFGR_CFEN);
2535 }
2536 
2537 /**
2538   * @brief Check isolation (CID filtering) of the DMA channel.
2539   * @note  This API is used for HPDMA channels.
2540   * @rmtoll CCIDCFGR       CFEN           LL_DMA_IsEnabledIsolation
2541   * @param  DMAx DMAx Instance
2542   * @param  Channel This parameter can be one of the following values:
2543   *         @arg @ref LL_DMA_CHANNEL_0
2544   *         @arg @ref LL_DMA_CHANNEL_1
2545   *         @arg @ref LL_DMA_CHANNEL_2
2546   *         @arg @ref LL_DMA_CHANNEL_3
2547   *         @arg @ref LL_DMA_CHANNEL_4
2548   *         @arg @ref LL_DMA_CHANNEL_5
2549   *         @arg @ref LL_DMA_CHANNEL_6
2550   *         @arg @ref LL_DMA_CHANNEL_7
2551   *         @arg @ref LL_DMA_CHANNEL_8
2552   *         @arg @ref LL_DMA_CHANNEL_9
2553   *         @arg @ref LL_DMA_CHANNEL_10
2554   *         @arg @ref LL_DMA_CHANNEL_11
2555   *         @arg @ref LL_DMA_CHANNEL_12
2556   *         @arg @ref LL_DMA_CHANNEL_13
2557   *         @arg @ref LL_DMA_CHANNEL_14
2558   *         @arg @ref LL_DMA_CHANNEL_15
2559   * @retval State of bit (1 or 0).
2560   */
LL_DMA_IsEnabledIsolation(const DMA_TypeDef * DMAx,uint32_t Channel)2561 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIsolation(const DMA_TypeDef *DMAx, uint32_t Channel)
2562 {
2563   uint32_t dma_base_addr = (uint32_t)DMAx;
2564   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCIDCFGR,
2565                     DMA_CCIDCFGR_CFEN) == (DMA_CCIDCFGR_CFEN)) ? 1UL : 0UL);
2566 }
2567 
2568 #if defined (CPU_IN_SECURE_STATE)
2569 /**
2570   * @brief Configure all secure parameters linked to DMA channel.
2571   * @note  This API is used for all available DMA channels.
2572   * @rmtoll SECCFGR       SEC            LL_DMA_ConfigChannelSecure\n
2573   * @rmtoll CTR1          SSEC           LL_DMA_ConfigChannelSecure\n
2574   * @rmtoll CTR1          DSEC           LL_DMA_ConfigChannelSecure
2575   * @param  DMAx DMAx Instance
2576   * @param  Channel This parameter can be one of the following values:
2577   *         @arg @ref LL_DMA_CHANNEL_0
2578   *         @arg @ref LL_DMA_CHANNEL_1
2579   *         @arg @ref LL_DMA_CHANNEL_2
2580   *         @arg @ref LL_DMA_CHANNEL_3
2581   *         @arg @ref LL_DMA_CHANNEL_4
2582   *         @arg @ref LL_DMA_CHANNEL_5
2583   *         @arg @ref LL_DMA_CHANNEL_6
2584   *         @arg @ref LL_DMA_CHANNEL_7
2585   *         @arg @ref LL_DMA_CHANNEL_8
2586   *         @arg @ref LL_DMA_CHANNEL_9
2587   *         @arg @ref LL_DMA_CHANNEL_10
2588   *         @arg @ref LL_DMA_CHANNEL_11
2589   *         @arg @ref LL_DMA_CHANNEL_12
2590   *         @arg @ref LL_DMA_CHANNEL_13
2591   *         @arg @ref LL_DMA_CHANNEL_14
2592   *         @arg @ref LL_DMA_CHANNEL_15
2593   * @param  Configuration This parameter must be a combination of all the following values:
2594   *         @arg @ref LL_DMA_CHANNEL_NSEC      or @ref LL_DMA_CHANNEL_SEC
2595   *         @arg @ref LL_DMA_CHANNEL_SRC_NSEC  or @ref LL_DMA_CHANNEL_SRC_SEC
2596   *         @arg @ref LL_DMA_CHANNEL_DEST_NSEC or @ref LL_DMA_CHANNEL_DEST_SEC
2597   * @retval None.
2598   */
LL_DMA_ConfigChannelSecure(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)2599 __STATIC_INLINE void LL_DMA_ConfigChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
2600 {
2601   uint32_t dma_base_addr = (uint32_t)DMAx;
2602   MODIFY_REG(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << Channel), ((Configuration & LL_DMA_CHANNEL_SEC) << Channel));
2603   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
2604              (DMA_CTR1_SSEC | DMA_CTR1_DSEC), (Configuration & (~LL_DMA_CHANNEL_SEC)));
2605 }
2606 
2607 /**
2608   * @brief Enable security attribute of the DMA transfer to the destination.
2609   * @note  This API is used for all available DMA channels.
2610   * @rmtoll CTR1          DSEC           LL_DMA_EnableChannelDestSecure
2611   * @param  DMAx DMAx Instance
2612   * @param  Channel This parameter can be one of the following values:
2613   *         @arg @ref LL_DMA_CHANNEL_0
2614   *         @arg @ref LL_DMA_CHANNEL_1
2615   *         @arg @ref LL_DMA_CHANNEL_2
2616   *         @arg @ref LL_DMA_CHANNEL_3
2617   *         @arg @ref LL_DMA_CHANNEL_4
2618   *         @arg @ref LL_DMA_CHANNEL_5
2619   *         @arg @ref LL_DMA_CHANNEL_6
2620   *         @arg @ref LL_DMA_CHANNEL_7
2621   *         @arg @ref LL_DMA_CHANNEL_8
2622   *         @arg @ref LL_DMA_CHANNEL_9
2623   *         @arg @ref LL_DMA_CHANNEL_10
2624   *         @arg @ref LL_DMA_CHANNEL_11
2625   *         @arg @ref LL_DMA_CHANNEL_12
2626   *         @arg @ref LL_DMA_CHANNEL_13
2627   *         @arg @ref LL_DMA_CHANNEL_14
2628   *         @arg @ref LL_DMA_CHANNEL_15
2629   * @retval None.
2630   */
LL_DMA_EnableChannelDestSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2631 __STATIC_INLINE void LL_DMA_EnableChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2632 {
2633   uint32_t dma_base_addr = (uint32_t)DMAx;
2634   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC);
2635 }
2636 
2637 /**
2638   * @brief Disable security attribute of the DMA transfer to the destination.
2639   * @note  This API is used for all available DMA channels.
2640   * @rmtoll CTR1          DSEC           LL_DMA_DisableChannelDestSecure
2641   * @param  DMAx DMAx Instance
2642   * @param  Channel This parameter can be one of the following values:
2643   *         @arg @ref LL_DMA_CHANNEL_0
2644   *         @arg @ref LL_DMA_CHANNEL_1
2645   *         @arg @ref LL_DMA_CHANNEL_2
2646   *         @arg @ref LL_DMA_CHANNEL_3
2647   *         @arg @ref LL_DMA_CHANNEL_4
2648   *         @arg @ref LL_DMA_CHANNEL_5
2649   *         @arg @ref LL_DMA_CHANNEL_6
2650   *         @arg @ref LL_DMA_CHANNEL_7
2651   *         @arg @ref LL_DMA_CHANNEL_8
2652   *         @arg @ref LL_DMA_CHANNEL_9
2653   *         @arg @ref LL_DMA_CHANNEL_10
2654   *         @arg @ref LL_DMA_CHANNEL_11
2655   *         @arg @ref LL_DMA_CHANNEL_12
2656   *         @arg @ref LL_DMA_CHANNEL_13
2657   *         @arg @ref LL_DMA_CHANNEL_14
2658   *         @arg @ref LL_DMA_CHANNEL_15
2659   * @retval None.
2660   */
LL_DMA_DisableChannelDestSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2661 __STATIC_INLINE void LL_DMA_DisableChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2662 {
2663   uint32_t dma_base_addr = (uint32_t)DMAx;
2664   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC);
2665 }
2666 #endif /* CPU_IN_SECURE_STATE */
2667 
2668 /**
2669   * @brief Check security attribute of the DMA transfer to the destination.
2670   * @note  This API is used for all available DMA channels.
2671   * @rmtoll CTR1          DSEC           LL_DMA_IsEnabledChannelDestSecure
2672   * @param  DMAx DMAx Instance
2673   * @param  Channel This parameter can be one of the following values:
2674   *         @arg @ref LL_DMA_CHANNEL_0
2675   *         @arg @ref LL_DMA_CHANNEL_1
2676   *         @arg @ref LL_DMA_CHANNEL_2
2677   *         @arg @ref LL_DMA_CHANNEL_3
2678   *         @arg @ref LL_DMA_CHANNEL_4
2679   *         @arg @ref LL_DMA_CHANNEL_5
2680   *         @arg @ref LL_DMA_CHANNEL_6
2681   *         @arg @ref LL_DMA_CHANNEL_7
2682   *         @arg @ref LL_DMA_CHANNEL_8
2683   *         @arg @ref LL_DMA_CHANNEL_9
2684   *         @arg @ref LL_DMA_CHANNEL_10
2685   *         @arg @ref LL_DMA_CHANNEL_11
2686   *         @arg @ref LL_DMA_CHANNEL_12
2687   *         @arg @ref LL_DMA_CHANNEL_13
2688   *         @arg @ref LL_DMA_CHANNEL_14
2689   *         @arg @ref LL_DMA_CHANNEL_15
2690   * @retval State of bit (1 or 0).
2691   */
LL_DMA_IsEnabledChannelDestSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2692 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2693 {
2694   uint32_t dma_base_addr = (uint32_t)DMAx;
2695   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC)
2696            == (DMA_CTR1_DSEC)) ? 1UL : 0UL);
2697 }
2698 
2699 #if defined (CPU_IN_SECURE_STATE)
2700 /**
2701   * @brief Enable security attribute of the DMA transfer from the source.
2702   * @note  This API is used for all available DMA channels.
2703   * @rmtoll CTR1          SSEC           LL_DMA_EnableChannelSrcSecure
2704   * @param  DMAx DMAx Instance
2705   * @param  Channel This parameter can be one of the following values:
2706   *         @arg @ref LL_DMA_CHANNEL_0
2707   *         @arg @ref LL_DMA_CHANNEL_1
2708   *         @arg @ref LL_DMA_CHANNEL_2
2709   *         @arg @ref LL_DMA_CHANNEL_3
2710   *         @arg @ref LL_DMA_CHANNEL_4
2711   *         @arg @ref LL_DMA_CHANNEL_5
2712   *         @arg @ref LL_DMA_CHANNEL_6
2713   *         @arg @ref LL_DMA_CHANNEL_7
2714   *         @arg @ref LL_DMA_CHANNEL_8
2715   *         @arg @ref LL_DMA_CHANNEL_9
2716   *         @arg @ref LL_DMA_CHANNEL_10
2717   *         @arg @ref LL_DMA_CHANNEL_11
2718   *         @arg @ref LL_DMA_CHANNEL_12
2719   *         @arg @ref LL_DMA_CHANNEL_13
2720   *         @arg @ref LL_DMA_CHANNEL_14
2721   *         @arg @ref LL_DMA_CHANNEL_15
2722   * @retval None.
2723   */
LL_DMA_EnableChannelSrcSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2724 __STATIC_INLINE void LL_DMA_EnableChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2725 {
2726   uint32_t dma_base_addr = (uint32_t)DMAx;
2727   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC);
2728 }
2729 
2730 /**
2731   * @brief Disable security attribute of the DMA transfer from the source.
2732   * @note  This API is used for all available DMA channels.
2733   * @rmtoll CTR1          SSEC           LL_DMA_DisableChannelSrcSecure
2734   * @param  DMAx DMAx Instance
2735   * @param  Channel This parameter can be one of the following values:
2736   *         @arg @ref LL_DMA_CHANNEL_0
2737   *         @arg @ref LL_DMA_CHANNEL_1
2738   *         @arg @ref LL_DMA_CHANNEL_2
2739   *         @arg @ref LL_DMA_CHANNEL_3
2740   *         @arg @ref LL_DMA_CHANNEL_4
2741   *         @arg @ref LL_DMA_CHANNEL_5
2742   *         @arg @ref LL_DMA_CHANNEL_6
2743   *         @arg @ref LL_DMA_CHANNEL_7
2744   *         @arg @ref LL_DMA_CHANNEL_8
2745   *         @arg @ref LL_DMA_CHANNEL_9
2746   *         @arg @ref LL_DMA_CHANNEL_10
2747   *         @arg @ref LL_DMA_CHANNEL_11
2748   *         @arg @ref LL_DMA_CHANNEL_12
2749   *         @arg @ref LL_DMA_CHANNEL_13
2750   *         @arg @ref LL_DMA_CHANNEL_14
2751   *         @arg @ref LL_DMA_CHANNEL_15
2752   * @retval None.
2753   */
LL_DMA_DisableChannelSrcSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2754 __STATIC_INLINE void LL_DMA_DisableChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2755 {
2756   uint32_t dma_base_addr = (uint32_t)DMAx;
2757   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC);
2758 }
2759 #endif /* CPU_IN_SECURE_STATE */
2760 
2761 /**
2762   * @brief Check security attribute of the DMA transfer from the source.
2763   * @note  This API is used for all available DMA channels.
2764   * @rmtoll CTR1          SSEC           LL_DMA_IsEnabledChannelSrcSecure
2765   * @param  DMAx DMAx Instance
2766   * @param  Channel This parameter can be one of the following values:
2767   *         @arg @ref LL_DMA_CHANNEL_0
2768   *         @arg @ref LL_DMA_CHANNEL_1
2769   *         @arg @ref LL_DMA_CHANNEL_2
2770   *         @arg @ref LL_DMA_CHANNEL_3
2771   *         @arg @ref LL_DMA_CHANNEL_4
2772   *         @arg @ref LL_DMA_CHANNEL_5
2773   *         @arg @ref LL_DMA_CHANNEL_6
2774   *         @arg @ref LL_DMA_CHANNEL_7
2775   *         @arg @ref LL_DMA_CHANNEL_8
2776   *         @arg @ref LL_DMA_CHANNEL_9
2777   *         @arg @ref LL_DMA_CHANNEL_10
2778   *         @arg @ref LL_DMA_CHANNEL_11
2779   *         @arg @ref LL_DMA_CHANNEL_12
2780   *         @arg @ref LL_DMA_CHANNEL_13
2781   *         @arg @ref LL_DMA_CHANNEL_14
2782   *         @arg @ref LL_DMA_CHANNEL_15
2783   * @retval State of bit (1 or 0).
2784   */
LL_DMA_IsEnabledChannelSrcSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2785 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2786 {
2787   uint32_t dma_base_addr = (uint32_t)DMAx;
2788   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC)
2789            == (DMA_CTR1_SSEC)) ? 1UL : 0UL);
2790 }
2791 
2792 /**
2793   * @brief Set destination allocated port.
2794   * @rmtoll CTR1          DAP           LL_DMA_SetDestAllocatedPort
2795   * @param  DMAx DMAx Instance
2796   * @param  Channel This parameter can be one of the following values:
2797   *         @arg @ref LL_DMA_CHANNEL_0
2798   *         @arg @ref LL_DMA_CHANNEL_1
2799   *         @arg @ref LL_DMA_CHANNEL_2
2800   *         @arg @ref LL_DMA_CHANNEL_3
2801   *         @arg @ref LL_DMA_CHANNEL_4
2802   *         @arg @ref LL_DMA_CHANNEL_5
2803   *         @arg @ref LL_DMA_CHANNEL_6
2804   *         @arg @ref LL_DMA_CHANNEL_7
2805   *         @arg @ref LL_DMA_CHANNEL_8
2806   *         @arg @ref LL_DMA_CHANNEL_9
2807   *         @arg @ref LL_DMA_CHANNEL_10
2808   *         @arg @ref LL_DMA_CHANNEL_11
2809   *         @arg @ref LL_DMA_CHANNEL_12
2810   *         @arg @ref LL_DMA_CHANNEL_13
2811   *         @arg @ref LL_DMA_CHANNEL_14
2812   *         @arg @ref LL_DMA_CHANNEL_15
2813   * @param  DestAllocatedPort This parameter can be one of the following values:
2814   *         @arg @ref LL_DMA_DEST_ALLOCATED_PORT0
2815   *         @arg @ref LL_DMA_DEST_ALLOCATED_PORT1
2816   * @retval None.
2817   */
LL_DMA_SetDestAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAllocatedPort)2818 __STATIC_INLINE void LL_DMA_SetDestAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAllocatedPort)
2819 {
2820   uint32_t dma_base_addr = (uint32_t)DMAx;
2821   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DAP,
2822              DestAllocatedPort);
2823 }
2824 
2825 /**
2826   * @brief Get destination allocated port.
2827   * @rmtoll CTR1          DAP           LL_DMA_GetDestAllocatedPort
2828   * @param  DMAx DMAx Instance
2829   * @param  Channel This parameter can be one of the following values:
2830   *         @arg @ref LL_DMA_CHANNEL_0
2831   *         @arg @ref LL_DMA_CHANNEL_1
2832   *         @arg @ref LL_DMA_CHANNEL_2
2833   *         @arg @ref LL_DMA_CHANNEL_3
2834   *         @arg @ref LL_DMA_CHANNEL_4
2835   *         @arg @ref LL_DMA_CHANNEL_5
2836   *         @arg @ref LL_DMA_CHANNEL_6
2837   *         @arg @ref LL_DMA_CHANNEL_7
2838   *         @arg @ref LL_DMA_CHANNEL_8
2839   *         @arg @ref LL_DMA_CHANNEL_9
2840   *         @arg @ref LL_DMA_CHANNEL_10
2841   *         @arg @ref LL_DMA_CHANNEL_11
2842   *         @arg @ref LL_DMA_CHANNEL_12
2843   *         @arg @ref LL_DMA_CHANNEL_13
2844   *         @arg @ref LL_DMA_CHANNEL_14
2845   *         @arg @ref LL_DMA_CHANNEL_15
2846   * @retval Returned value can be one of the following values:
2847   *         @arg @ref LL_DMA_DEST_ALLOCATED_PORT0
2848   *         @arg @ref LL_DMA_DEST_ALLOCATED_PORT1
2849   */
LL_DMA_GetDestAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel)2850 __STATIC_INLINE uint32_t LL_DMA_GetDestAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
2851 {
2852   uint32_t dma_base_addr = (uint32_t)DMAx;
2853   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DAP));
2854 }
2855 
2856 /**
2857   * @brief Set destination word exchange.
2858   * @rmtoll CTR1          DWX            LL_DMA_SetDestWordExchange
2859   * @param  DMAx DMAx Instance
2860   * @param  Channel This parameter can be one of the following values:
2861   *         @arg @ref LL_DMA_CHANNEL_0
2862   *         @arg @ref LL_DMA_CHANNEL_1
2863   *         @arg @ref LL_DMA_CHANNEL_2
2864   *         @arg @ref LL_DMA_CHANNEL_3
2865   *         @arg @ref LL_DMA_CHANNEL_4
2866   *         @arg @ref LL_DMA_CHANNEL_5
2867   *         @arg @ref LL_DMA_CHANNEL_6
2868   *         @arg @ref LL_DMA_CHANNEL_7
2869   *         @arg @ref LL_DMA_CHANNEL_8
2870   *         @arg @ref LL_DMA_CHANNEL_9
2871   *         @arg @ref LL_DMA_CHANNEL_10
2872   *         @arg @ref LL_DMA_CHANNEL_11
2873   *         @arg @ref LL_DMA_CHANNEL_12
2874   *         @arg @ref LL_DMA_CHANNEL_13
2875   *         @arg @ref LL_DMA_CHANNEL_14
2876   *         @arg @ref LL_DMA_CHANNEL_15
2877   * @param  DestWordExchange This parameter can be one of the following values:
2878   *         @arg @ref LL_DMA_DEST_WORD_PRESERVE
2879   *         @arg @ref LL_DMA_DEST_WORD_EXCHANGE
2880   * @retval None.
2881   */
LL_DMA_SetDestWordExchange(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestWordExchange)2882 __STATIC_INLINE void LL_DMA_SetDestWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestWordExchange)
2883 {
2884   uint32_t dma_base_addr = (uint32_t)DMAx;
2885   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DWX,
2886              DestWordExchange);
2887 }
2888 
2889 /**
2890   * @brief Get destination word exchange.
2891   * @rmtoll CTR1          DWX            LL_DMA_GetDestWordExchange
2892   * @param  DMAx DMAx Instance
2893   * @param  Channel This parameter can be one of the following values:
2894   *         @arg @ref LL_DMA_CHANNEL_0
2895   *         @arg @ref LL_DMA_CHANNEL_1
2896   *         @arg @ref LL_DMA_CHANNEL_2
2897   *         @arg @ref LL_DMA_CHANNEL_3
2898   *         @arg @ref LL_DMA_CHANNEL_4
2899   *         @arg @ref LL_DMA_CHANNEL_5
2900   *         @arg @ref LL_DMA_CHANNEL_6
2901   *         @arg @ref LL_DMA_CHANNEL_7
2902   *         @arg @ref LL_DMA_CHANNEL_8
2903   *         @arg @ref LL_DMA_CHANNEL_9
2904   *         @arg @ref LL_DMA_CHANNEL_10
2905   *         @arg @ref LL_DMA_CHANNEL_11
2906   *         @arg @ref LL_DMA_CHANNEL_12
2907   *         @arg @ref LL_DMA_CHANNEL_13
2908   *         @arg @ref LL_DMA_CHANNEL_14
2909   *         @arg @ref LL_DMA_CHANNEL_15
2910   * @retval Returned value can be one of the following values:
2911   *         @arg @ref LL_DMA_DEST_WORD_PRESERVE
2912   *         @arg @ref LL_DMA_DEST_WORD_EXCHANGE
2913   */
LL_DMA_GetDestWordExchange(const DMA_TypeDef * DMAx,uint32_t Channel)2914 __STATIC_INLINE uint32_t LL_DMA_GetDestWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
2915 {
2916   uint32_t dma_base_addr = (uint32_t)DMAx;
2917   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DWX));
2918 }
2919 
2920 /**
2921   * @brief Set destination half-word exchange.
2922   * @rmtoll CTR1          DHX            LL_DMA_SetDestHWordExchange
2923   * @param  DMAx DMAx Instance
2924   * @param  Channel This parameter can be one of the following values:
2925   *         @arg @ref LL_DMA_CHANNEL_0
2926   *         @arg @ref LL_DMA_CHANNEL_1
2927   *         @arg @ref LL_DMA_CHANNEL_2
2928   *         @arg @ref LL_DMA_CHANNEL_3
2929   *         @arg @ref LL_DMA_CHANNEL_4
2930   *         @arg @ref LL_DMA_CHANNEL_5
2931   *         @arg @ref LL_DMA_CHANNEL_6
2932   *         @arg @ref LL_DMA_CHANNEL_7
2933   *         @arg @ref LL_DMA_CHANNEL_8
2934   *         @arg @ref LL_DMA_CHANNEL_9
2935   *         @arg @ref LL_DMA_CHANNEL_10
2936   *         @arg @ref LL_DMA_CHANNEL_11
2937   *         @arg @ref LL_DMA_CHANNEL_12
2938   *         @arg @ref LL_DMA_CHANNEL_13
2939   *         @arg @ref LL_DMA_CHANNEL_14
2940   *         @arg @ref LL_DMA_CHANNEL_15
2941   * @param  DestHWordExchange This parameter can be one of the following values:
2942   *         @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE
2943   *         @arg @ref LL_DMA_DEST_HALFWORD_EXCHANGE
2944   * @retval None.
2945   */
LL_DMA_SetDestHWordExchange(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestHWordExchange)2946 __STATIC_INLINE void LL_DMA_SetDestHWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestHWordExchange)
2947 {
2948   uint32_t dma_base_addr = (uint32_t)DMAx;
2949   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DHX,
2950              DestHWordExchange);
2951 }
2952 
2953 /**
2954   * @brief Get destination half-word exchange.
2955   * @rmtoll CTR1          DHX            LL_DMA_GetDestHWordExchange
2956   * @param  DMAx DMAx Instance
2957   * @param  Channel This parameter can be one of the following values:
2958   *         @arg @ref LL_DMA_CHANNEL_0
2959   *         @arg @ref LL_DMA_CHANNEL_1
2960   *         @arg @ref LL_DMA_CHANNEL_2
2961   *         @arg @ref LL_DMA_CHANNEL_3
2962   *         @arg @ref LL_DMA_CHANNEL_4
2963   *         @arg @ref LL_DMA_CHANNEL_5
2964   *         @arg @ref LL_DMA_CHANNEL_6
2965   *         @arg @ref LL_DMA_CHANNEL_7
2966   *         @arg @ref LL_DMA_CHANNEL_8
2967   *         @arg @ref LL_DMA_CHANNEL_9
2968   *         @arg @ref LL_DMA_CHANNEL_10
2969   *         @arg @ref LL_DMA_CHANNEL_11
2970   *         @arg @ref LL_DMA_CHANNEL_12
2971   *         @arg @ref LL_DMA_CHANNEL_13
2972   *         @arg @ref LL_DMA_CHANNEL_14
2973   *         @arg @ref LL_DMA_CHANNEL_15
2974   * @retval Returned value can be one of the following values:
2975   *         @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE
2976   *         @arg @ref LL_DMA_DEST_HALFWORD_EXCHANGE
2977   */
LL_DMA_GetDestHWordExchange(const DMA_TypeDef * DMAx,uint32_t Channel)2978 __STATIC_INLINE uint32_t LL_DMA_GetDestHWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
2979 {
2980   uint32_t dma_base_addr = (uint32_t)DMAx;
2981   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DHX));
2982 }
2983 
2984 /**
2985   * @brief Set destination byte exchange.
2986   * @rmtoll CTR1          DBX            LL_DMA_SetDestByteExchange
2987   * @param  DMAx DMAx Instance
2988   * @param  Channel This parameter can be one of the following values:
2989   *         @arg @ref LL_DMA_CHANNEL_0
2990   *         @arg @ref LL_DMA_CHANNEL_1
2991   *         @arg @ref LL_DMA_CHANNEL_2
2992   *         @arg @ref LL_DMA_CHANNEL_3
2993   *         @arg @ref LL_DMA_CHANNEL_4
2994   *         @arg @ref LL_DMA_CHANNEL_5
2995   *         @arg @ref LL_DMA_CHANNEL_6
2996   *         @arg @ref LL_DMA_CHANNEL_7
2997   *         @arg @ref LL_DMA_CHANNEL_8
2998   *         @arg @ref LL_DMA_CHANNEL_9
2999   *         @arg @ref LL_DMA_CHANNEL_10
3000   *         @arg @ref LL_DMA_CHANNEL_11
3001   *         @arg @ref LL_DMA_CHANNEL_12
3002   *         @arg @ref LL_DMA_CHANNEL_13
3003   *         @arg @ref LL_DMA_CHANNEL_14
3004   *         @arg @ref LL_DMA_CHANNEL_15
3005   * @param  DestByteExchange This parameter can be one of the following values:
3006   *         @arg @ref LL_DMA_DEST_BYTE_PRESERVE
3007   *         @arg @ref LL_DMA_DEST_BYTE_EXCHANGE
3008   * @retval None.
3009   */
LL_DMA_SetDestByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestByteExchange)3010 __STATIC_INLINE void LL_DMA_SetDestByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestByteExchange)
3011 {
3012   uint32_t dma_base_addr = (uint32_t)DMAx;
3013   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBX,
3014              DestByteExchange);
3015 }
3016 
3017 /**
3018   * @brief Get destination byte exchange.
3019   * @rmtoll CTR1          DBX            LL_DMA_GetDestByteExchange
3020   * @param  DMAx DMAx Instance
3021   * @param  Channel This parameter can be one of the following values:
3022   *         @arg @ref LL_DMA_CHANNEL_0
3023   *         @arg @ref LL_DMA_CHANNEL_1
3024   *         @arg @ref LL_DMA_CHANNEL_2
3025   *         @arg @ref LL_DMA_CHANNEL_3
3026   *         @arg @ref LL_DMA_CHANNEL_4
3027   *         @arg @ref LL_DMA_CHANNEL_5
3028   *         @arg @ref LL_DMA_CHANNEL_6
3029   *         @arg @ref LL_DMA_CHANNEL_7
3030   *         @arg @ref LL_DMA_CHANNEL_8
3031   *         @arg @ref LL_DMA_CHANNEL_9
3032   *         @arg @ref LL_DMA_CHANNEL_10
3033   *         @arg @ref LL_DMA_CHANNEL_11
3034   *         @arg @ref LL_DMA_CHANNEL_12
3035   *         @arg @ref LL_DMA_CHANNEL_13
3036   *         @arg @ref LL_DMA_CHANNEL_14
3037   *         @arg @ref LL_DMA_CHANNEL_15
3038   * @retval Returned value can be one of the following values:
3039   *         @arg @ref LL_DMA_DEST_BYTE_PRESERVE
3040   *         @arg @ref LL_DMA_DEST_BYTE_EXCHANGE
3041   */
LL_DMA_GetDestByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel)3042 __STATIC_INLINE uint32_t LL_DMA_GetDestByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
3043 {
3044   uint32_t dma_base_addr = (uint32_t)DMAx;
3045   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBX));
3046 }
3047 
3048 /**
3049   * @brief Set source byte exchange.
3050   * @rmtoll CTR1          SBX            LL_DMA_SetSrcByteExchange
3051   * @param  DMAx DMAx Instance
3052   * @param  Channel This parameter can be one of the following values:
3053   *         @arg @ref LL_DMA_CHANNEL_0
3054   *         @arg @ref LL_DMA_CHANNEL_1
3055   *         @arg @ref LL_DMA_CHANNEL_2
3056   *         @arg @ref LL_DMA_CHANNEL_3
3057   *         @arg @ref LL_DMA_CHANNEL_4
3058   *         @arg @ref LL_DMA_CHANNEL_5
3059   *         @arg @ref LL_DMA_CHANNEL_6
3060   *         @arg @ref LL_DMA_CHANNEL_7
3061   *         @arg @ref LL_DMA_CHANNEL_8
3062   *         @arg @ref LL_DMA_CHANNEL_9
3063   *         @arg @ref LL_DMA_CHANNEL_10
3064   *         @arg @ref LL_DMA_CHANNEL_11
3065   *         @arg @ref LL_DMA_CHANNEL_12
3066   *         @arg @ref LL_DMA_CHANNEL_13
3067   *         @arg @ref LL_DMA_CHANNEL_14
3068   *         @arg @ref LL_DMA_CHANNEL_15
3069   * @param  SrcByteExchange This parameter can be one of the following values:
3070   *         @arg @ref LL_DMA_SRC_BYTE_PRESERVE
3071   *         @arg @ref LL_DMA_SRC_BYTE_EXCHANGE
3072   * @retval None.
3073   */
LL_DMA_SetSrcByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcByteExchange)3074 __STATIC_INLINE void LL_DMA_SetSrcByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcByteExchange)
3075 {
3076   uint32_t dma_base_addr = (uint32_t)DMAx;
3077   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBX,
3078              SrcByteExchange);
3079 }
3080 
3081 /**
3082   * @brief Get source byte exchange.
3083   * @rmtoll CTR1          SBX            LL_DMA_GetSrcByteExchange
3084   * @param  DMAx DMAx Instance
3085   * @param  Channel This parameter can be one of the following values:
3086   *         @arg @ref LL_DMA_CHANNEL_0
3087   *         @arg @ref LL_DMA_CHANNEL_1
3088   *         @arg @ref LL_DMA_CHANNEL_2
3089   *         @arg @ref LL_DMA_CHANNEL_3
3090   *         @arg @ref LL_DMA_CHANNEL_4
3091   *         @arg @ref LL_DMA_CHANNEL_5
3092   *         @arg @ref LL_DMA_CHANNEL_6
3093   *         @arg @ref LL_DMA_CHANNEL_7
3094   *         @arg @ref LL_DMA_CHANNEL_8
3095   *         @arg @ref LL_DMA_CHANNEL_9
3096   *         @arg @ref LL_DMA_CHANNEL_10
3097   *         @arg @ref LL_DMA_CHANNEL_11
3098   *         @arg @ref LL_DMA_CHANNEL_12
3099   *         @arg @ref LL_DMA_CHANNEL_13
3100   *         @arg @ref LL_DMA_CHANNEL_14
3101   *         @arg @ref LL_DMA_CHANNEL_15
3102   * @retval Returned value can be one of the following values:
3103   *         @arg @ref LL_DMA_SRC_BYTE_PRESERVE
3104   *         @arg @ref LL_DMA_SRC_BYTE_EXCHANGE
3105   */
LL_DMA_GetSrcByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel)3106 __STATIC_INLINE uint32_t LL_DMA_GetSrcByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
3107 {
3108   uint32_t dma_base_addr = (uint32_t)DMAx;
3109   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBX));
3110 }
3111 
3112 /**
3113   * @brief Set destination burst length.
3114   * @rmtoll CTR1          DBL_1           LL_DMA_SetDestBurstLength
3115   * @param  DMAx DMAx Instance
3116   * @param  Channel This parameter can be one of the following values:
3117   *         @arg @ref LL_DMA_CHANNEL_0
3118   *         @arg @ref LL_DMA_CHANNEL_1
3119   *         @arg @ref LL_DMA_CHANNEL_2
3120   *         @arg @ref LL_DMA_CHANNEL_3
3121   *         @arg @ref LL_DMA_CHANNEL_4
3122   *         @arg @ref LL_DMA_CHANNEL_5
3123   *         @arg @ref LL_DMA_CHANNEL_6
3124   *         @arg @ref LL_DMA_CHANNEL_7
3125   *         @arg @ref LL_DMA_CHANNEL_8
3126   *         @arg @ref LL_DMA_CHANNEL_9
3127   *         @arg @ref LL_DMA_CHANNEL_10
3128   *         @arg @ref LL_DMA_CHANNEL_11
3129   *         @arg @ref LL_DMA_CHANNEL_12
3130   *         @arg @ref LL_DMA_CHANNEL_13
3131   *         @arg @ref LL_DMA_CHANNEL_14
3132   *         @arg @ref LL_DMA_CHANNEL_15
3133   * @param  DestBurstLength Between 1 to 64
3134   * @retval None.
3135   */
LL_DMA_SetDestBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestBurstLength)3136 __STATIC_INLINE void LL_DMA_SetDestBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestBurstLength)
3137 {
3138   uint32_t dma_base_addr = (uint32_t)DMAx;
3139   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBL_1,
3140              ((DestBurstLength - 1U) << DMA_CTR1_DBL_1_Pos) & DMA_CTR1_DBL_1);
3141 }
3142 
3143 /**
3144   * @brief Get destination burst length.
3145   * @rmtoll CTR1          DBL_1           LL_DMA_GetDestBurstLength
3146   * @param  DMAx DMAx Instance
3147   * @param  Channel This parameter can be one of the following values:
3148   *         @arg @ref LL_DMA_CHANNEL_0
3149   *         @arg @ref LL_DMA_CHANNEL_1
3150   *         @arg @ref LL_DMA_CHANNEL_2
3151   *         @arg @ref LL_DMA_CHANNEL_3
3152   *         @arg @ref LL_DMA_CHANNEL_4
3153   *         @arg @ref LL_DMA_CHANNEL_5
3154   *         @arg @ref LL_DMA_CHANNEL_6
3155   *         @arg @ref LL_DMA_CHANNEL_7
3156   *         @arg @ref LL_DMA_CHANNEL_8
3157   *         @arg @ref LL_DMA_CHANNEL_9
3158   *         @arg @ref LL_DMA_CHANNEL_10
3159   *         @arg @ref LL_DMA_CHANNEL_11
3160   *         @arg @ref LL_DMA_CHANNEL_12
3161   *         @arg @ref LL_DMA_CHANNEL_13
3162   *         @arg @ref LL_DMA_CHANNEL_14
3163   *         @arg @ref LL_DMA_CHANNEL_15
3164   * @retval Between 1 to 64.
3165   */
LL_DMA_GetDestBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel)3166 __STATIC_INLINE uint32_t LL_DMA_GetDestBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel)
3167 {
3168   uint32_t dma_base_addr = (uint32_t)DMAx;
3169   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
3170                     DMA_CTR1_DBL_1) >> DMA_CTR1_DBL_1_Pos) + 1U);
3171 }
3172 
3173 /**
3174   * @brief Set destination increment mode.
3175   * @rmtoll CTR1          DINC           LL_DMA_SetDestIncMode
3176   * @param  DMAx DMAx Instance
3177   * @param  Channel This parameter can be one of the following values:
3178   *         @arg @ref LL_DMA_CHANNEL_0
3179   *         @arg @ref LL_DMA_CHANNEL_1
3180   *         @arg @ref LL_DMA_CHANNEL_2
3181   *         @arg @ref LL_DMA_CHANNEL_3
3182   *         @arg @ref LL_DMA_CHANNEL_4
3183   *         @arg @ref LL_DMA_CHANNEL_5
3184   *         @arg @ref LL_DMA_CHANNEL_6
3185   *         @arg @ref LL_DMA_CHANNEL_7
3186   *         @arg @ref LL_DMA_CHANNEL_8
3187   *         @arg @ref LL_DMA_CHANNEL_9
3188   *         @arg @ref LL_DMA_CHANNEL_10
3189   *         @arg @ref LL_DMA_CHANNEL_11
3190   *         @arg @ref LL_DMA_CHANNEL_12
3191   *         @arg @ref LL_DMA_CHANNEL_13
3192   *         @arg @ref LL_DMA_CHANNEL_14
3193   *         @arg @ref LL_DMA_CHANNEL_15
3194   * @param  DestInc This parameter can be one of the following values:
3195   *         @arg @ref LL_DMA_DEST_FIXED
3196   *         @arg @ref LL_DMA_DEST_INCREMENT
3197   * @retval None.
3198   */
LL_DMA_SetDestIncMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestInc)3199 __STATIC_INLINE void LL_DMA_SetDestIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestInc)
3200 {
3201   uint32_t dma_base_addr = (uint32_t)DMAx;
3202   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DINC, DestInc);
3203 }
3204 
3205 /**
3206   * @brief Get destination increment mode.
3207   * @note  This API is used for all available DMA channels.
3208   * @rmtoll CTR1          DINC           LL_DMA_GetDestIncMode
3209   * @param  DMAx DMAx Instance
3210   * @param  Channel This parameter can be one of the following values:
3211   *         @arg @ref LL_DMA_CHANNEL_0
3212   *         @arg @ref LL_DMA_CHANNEL_1
3213   *         @arg @ref LL_DMA_CHANNEL_2
3214   *         @arg @ref LL_DMA_CHANNEL_3
3215   *         @arg @ref LL_DMA_CHANNEL_4
3216   *         @arg @ref LL_DMA_CHANNEL_5
3217   *         @arg @ref LL_DMA_CHANNEL_6
3218   *         @arg @ref LL_DMA_CHANNEL_7
3219   *         @arg @ref LL_DMA_CHANNEL_8
3220   *         @arg @ref LL_DMA_CHANNEL_9
3221   *         @arg @ref LL_DMA_CHANNEL_10
3222   *         @arg @ref LL_DMA_CHANNEL_11
3223   *         @arg @ref LL_DMA_CHANNEL_12
3224   *         @arg @ref LL_DMA_CHANNEL_13
3225   *         @arg @ref LL_DMA_CHANNEL_14
3226   *         @arg @ref LL_DMA_CHANNEL_15
3227   * @retval Returned value can be one of the following values:
3228   *         @arg @ref LL_DMA_DEST_FIXED
3229   *         @arg @ref LL_DMA_DEST_INCREMENT
3230   */
LL_DMA_GetDestIncMode(const DMA_TypeDef * DMAx,uint32_t Channel)3231 __STATIC_INLINE uint32_t LL_DMA_GetDestIncMode(const DMA_TypeDef *DMAx, uint32_t Channel)
3232 {
3233   uint32_t dma_base_addr = (uint32_t)DMAx;
3234   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DINC));
3235 }
3236 
3237 /**
3238   * @brief Set destination data width.
3239   * @note  This API is used for all available DMA channels.
3240   * @rmtoll CTR1          DDW_LOG2           LL_DMA_SetDestDataWidth
3241   * @param  DMAx DMAx Instance
3242   * @param  Channel This parameter can be one of the following values:
3243   *         @arg @ref LL_DMA_CHANNEL_0
3244   *         @arg @ref LL_DMA_CHANNEL_1
3245   *         @arg @ref LL_DMA_CHANNEL_2
3246   *         @arg @ref LL_DMA_CHANNEL_3
3247   *         @arg @ref LL_DMA_CHANNEL_4
3248   *         @arg @ref LL_DMA_CHANNEL_5
3249   *         @arg @ref LL_DMA_CHANNEL_6
3250   *         @arg @ref LL_DMA_CHANNEL_7
3251   *         @arg @ref LL_DMA_CHANNEL_8
3252   *         @arg @ref LL_DMA_CHANNEL_9
3253   *         @arg @ref LL_DMA_CHANNEL_10
3254   *         @arg @ref LL_DMA_CHANNEL_11
3255   *         @arg @ref LL_DMA_CHANNEL_12
3256   *         @arg @ref LL_DMA_CHANNEL_13
3257   *         @arg @ref LL_DMA_CHANNEL_14
3258   *         @arg @ref LL_DMA_CHANNEL_15
3259   * @param  DestDataWidth This parameter can be one of the following values:
3260   *         @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE
3261   *         @arg @ref LL_DMA_DEST_DATAWIDTH_HALFWORD
3262   *         @arg @ref LL_DMA_DEST_DATAWIDTH_WORD
3263   *         @arg @ref LL_DMA_DEST_DATAWIDTH_DOUBLEWORD
3264   * @retval None.
3265   */
LL_DMA_SetDestDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestDataWidth)3266 __STATIC_INLINE void LL_DMA_SetDestDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  DestDataWidth)
3267 {
3268   uint32_t dma_base_addr = (uint32_t)DMAx;
3269   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DDW_LOG2,
3270              DestDataWidth);
3271 }
3272 
3273 /**
3274   * @brief Get destination data width.
3275   * @note  This API is used for all available DMA channels.
3276   * @rmtoll CTR1          DDW_LOG2           LL_DMA_GetDestDataWidth
3277   * @param  DMAx DMAx Instance
3278   * @param  Channel This parameter can be one of the following values:
3279   *         @arg @ref LL_DMA_CHANNEL_0
3280   *         @arg @ref LL_DMA_CHANNEL_1
3281   *         @arg @ref LL_DMA_CHANNEL_2
3282   *         @arg @ref LL_DMA_CHANNEL_3
3283   *         @arg @ref LL_DMA_CHANNEL_4
3284   *         @arg @ref LL_DMA_CHANNEL_5
3285   *         @arg @ref LL_DMA_CHANNEL_6
3286   *         @arg @ref LL_DMA_CHANNEL_7
3287   *         @arg @ref LL_DMA_CHANNEL_8
3288   *         @arg @ref LL_DMA_CHANNEL_9
3289   *         @arg @ref LL_DMA_CHANNEL_10
3290   *         @arg @ref LL_DMA_CHANNEL_11
3291   *         @arg @ref LL_DMA_CHANNEL_12
3292   *         @arg @ref LL_DMA_CHANNEL_13
3293   *         @arg @ref LL_DMA_CHANNEL_14
3294   *         @arg @ref LL_DMA_CHANNEL_15
3295   * @retval Returned value can be one of the following values:
3296   *         @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE
3297   *         @arg @ref LL_DMA_DEST_DATAWIDTH_HALFWORD
3298   *         @arg @ref LL_DMA_DEST_DATAWIDTH_WORD
3299   *         @arg @ref LL_DMA_DEST_DATAWIDTH_DOUBLEWORD
3300   */
LL_DMA_GetDestDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel)3301 __STATIC_INLINE uint32_t LL_DMA_GetDestDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel)
3302 {
3303   uint32_t dma_base_addr = (uint32_t)DMAx;
3304   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DDW_LOG2));
3305 }
3306 
3307 /**
3308   * @brief Set source allocated port.
3309   * @rmtoll CTR1          SAP           LL_DMA_SetSrcAllocatedPort
3310   * @param  DMAx DMAx Instance
3311   * @param  Channel This parameter can be one of the following values:
3312   *         @arg @ref LL_DMA_CHANNEL_0
3313   *         @arg @ref LL_DMA_CHANNEL_1
3314   *         @arg @ref LL_DMA_CHANNEL_2
3315   *         @arg @ref LL_DMA_CHANNEL_3
3316   *         @arg @ref LL_DMA_CHANNEL_4
3317   *         @arg @ref LL_DMA_CHANNEL_5
3318   *         @arg @ref LL_DMA_CHANNEL_6
3319   *         @arg @ref LL_DMA_CHANNEL_7
3320   *         @arg @ref LL_DMA_CHANNEL_8
3321   *         @arg @ref LL_DMA_CHANNEL_9
3322   *         @arg @ref LL_DMA_CHANNEL_10
3323   *         @arg @ref LL_DMA_CHANNEL_11
3324   *         @arg @ref LL_DMA_CHANNEL_12
3325   *         @arg @ref LL_DMA_CHANNEL_13
3326   *         @arg @ref LL_DMA_CHANNEL_14
3327   *         @arg @ref LL_DMA_CHANNEL_15
3328   * @param  SrcAllocatedPort This parameter can be one of the following values:
3329   *         @arg @ref LL_DMA_SRC_ALLOCATED_PORT0
3330   *         @arg @ref LL_DMA_SRC_ALLOCATED_PORT1
3331   * @retval None.
3332   */
LL_DMA_SetSrcAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAllocatedPort)3333 __STATIC_INLINE void LL_DMA_SetSrcAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAllocatedPort)
3334 {
3335   uint32_t dma_base_addr = (uint32_t)DMAx;
3336   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SAP,
3337              SrcAllocatedPort);
3338 }
3339 
3340 /**
3341   * @brief Get source allocated port.
3342   * @rmtoll CTR1          SAP           LL_DMA_GetSrcAllocatedPort
3343   * @param  DMAx DMAx Instance
3344   * @param  Channel This parameter can be one of the following values:
3345   *         @arg @ref LL_DMA_CHANNEL_0
3346   *         @arg @ref LL_DMA_CHANNEL_1
3347   *         @arg @ref LL_DMA_CHANNEL_2
3348   *         @arg @ref LL_DMA_CHANNEL_3
3349   *         @arg @ref LL_DMA_CHANNEL_4
3350   *         @arg @ref LL_DMA_CHANNEL_5
3351   *         @arg @ref LL_DMA_CHANNEL_6
3352   *         @arg @ref LL_DMA_CHANNEL_7
3353   *         @arg @ref LL_DMA_CHANNEL_8
3354   *         @arg @ref LL_DMA_CHANNEL_9
3355   *         @arg @ref LL_DMA_CHANNEL_10
3356   *         @arg @ref LL_DMA_CHANNEL_11
3357   *         @arg @ref LL_DMA_CHANNEL_12
3358   *         @arg @ref LL_DMA_CHANNEL_13
3359   *         @arg @ref LL_DMA_CHANNEL_14
3360   *         @arg @ref LL_DMA_CHANNEL_15
3361   * @retval Returned value can be one of the following values:
3362   *         @arg @ref LL_DMA_SRC_ALLOCATED_PORT0
3363   *         @arg @ref LL_DMA_SRC_ALLOCATED_PORT1
3364   */
LL_DMA_GetSrcAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel)3365 __STATIC_INLINE uint32_t LL_DMA_GetSrcAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
3366 {
3367   uint32_t dma_base_addr = (uint32_t)DMAx;
3368   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SAP));
3369 }
3370 
3371 /**
3372   * @brief Set data alignment mode.
3373   * @note  This API is used for all available DMA channels.
3374   * @rmtoll CTR1          PAM           LL_DMA_SetDataAlignment
3375   * @param  DMAx DMAx Instance
3376   * @param  Channel This parameter can be one of the following values:
3377   *         @arg @ref LL_DMA_CHANNEL_0
3378   *         @arg @ref LL_DMA_CHANNEL_1
3379   *         @arg @ref LL_DMA_CHANNEL_2
3380   *         @arg @ref LL_DMA_CHANNEL_3
3381   *         @arg @ref LL_DMA_CHANNEL_4
3382   *         @arg @ref LL_DMA_CHANNEL_5
3383   *         @arg @ref LL_DMA_CHANNEL_6
3384   *         @arg @ref LL_DMA_CHANNEL_7
3385   *         @arg @ref LL_DMA_CHANNEL_8
3386   *         @arg @ref LL_DMA_CHANNEL_9
3387   *         @arg @ref LL_DMA_CHANNEL_10
3388   *         @arg @ref LL_DMA_CHANNEL_11
3389   *         @arg @ref LL_DMA_CHANNEL_12
3390   *         @arg @ref LL_DMA_CHANNEL_13
3391   *         @arg @ref LL_DMA_CHANNEL_14
3392   *         @arg @ref LL_DMA_CHANNEL_15
3393   * @param  DataAlignment This parameter can be one of the following values:
3394   *         @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD
3395   *         @arg @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD
3396   *         @arg @ref LL_DMA_DATA_PACK_UNPACK
3397   * @retval None.
3398   */
LL_DMA_SetDataAlignment(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DataAlignment)3399 __STATIC_INLINE void LL_DMA_SetDataAlignment(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DataAlignment)
3400 {
3401   uint32_t dma_base_addr = (uint32_t)DMAx;
3402   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_PAM,
3403              DataAlignment);
3404 }
3405 
3406 /**
3407   * @brief Get data alignment mode.
3408   * @note  This API is used for all available DMA channels.
3409   * @rmtoll CTR1          PAM           LL_DMA_GetDataAlignment
3410   * @param  DMAx DMAx Instance
3411   * @param  Channel This parameter can be one of the following values:
3412   *         @arg @ref LL_DMA_CHANNEL_0
3413   *         @arg @ref LL_DMA_CHANNEL_1
3414   *         @arg @ref LL_DMA_CHANNEL_2
3415   *         @arg @ref LL_DMA_CHANNEL_3
3416   *         @arg @ref LL_DMA_CHANNEL_4
3417   *         @arg @ref LL_DMA_CHANNEL_5
3418   *         @arg @ref LL_DMA_CHANNEL_6
3419   *         @arg @ref LL_DMA_CHANNEL_7
3420   *         @arg @ref LL_DMA_CHANNEL_8
3421   *         @arg @ref LL_DMA_CHANNEL_9
3422   *         @arg @ref LL_DMA_CHANNEL_10
3423   *         @arg @ref LL_DMA_CHANNEL_11
3424   *         @arg @ref LL_DMA_CHANNEL_12
3425   *         @arg @ref LL_DMA_CHANNEL_13
3426   *         @arg @ref LL_DMA_CHANNEL_14
3427   *         @arg @ref LL_DMA_CHANNEL_15
3428   * @retval Returned value can be one of the following values:
3429   *         @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD
3430   *         @arg @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD
3431   *         @arg @ref LL_DMA_DATA_PACK_UNPACK
3432   */
LL_DMA_GetDataAlignment(const DMA_TypeDef * DMAx,uint32_t Channel)3433 __STATIC_INLINE uint32_t LL_DMA_GetDataAlignment(const DMA_TypeDef *DMAx, uint32_t Channel)
3434 {
3435   uint32_t dma_base_addr = (uint32_t)DMAx;
3436   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_PAM));
3437 }
3438 
3439 /**
3440   * @brief Set source burst length.
3441   * @rmtoll CTR1          SBL_1           LL_DMA_SetSrcBurstLength
3442   * @param  DMAx DMAx Instance
3443   * @param  Channel This parameter can be one of the following values:
3444   *         @arg @ref LL_DMA_CHANNEL_0
3445   *         @arg @ref LL_DMA_CHANNEL_1
3446   *         @arg @ref LL_DMA_CHANNEL_2
3447   *         @arg @ref LL_DMA_CHANNEL_3
3448   *         @arg @ref LL_DMA_CHANNEL_4
3449   *         @arg @ref LL_DMA_CHANNEL_5
3450   *         @arg @ref LL_DMA_CHANNEL_6
3451   *         @arg @ref LL_DMA_CHANNEL_7
3452   *         @arg @ref LL_DMA_CHANNEL_8
3453   *         @arg @ref LL_DMA_CHANNEL_9
3454   *         @arg @ref LL_DMA_CHANNEL_10
3455   *         @arg @ref LL_DMA_CHANNEL_11
3456   *         @arg @ref LL_DMA_CHANNEL_12
3457   *         @arg @ref LL_DMA_CHANNEL_13
3458   *         @arg @ref LL_DMA_CHANNEL_14
3459   *         @arg @ref LL_DMA_CHANNEL_15
3460   * @param  SrcBurstLength Between 1 to 64
3461   * @retval None.
3462   */
LL_DMA_SetSrcBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcBurstLength)3463 __STATIC_INLINE void LL_DMA_SetSrcBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcBurstLength)
3464 {
3465   uint32_t dma_base_addr = (uint32_t)DMAx;
3466   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBL_1,
3467              ((SrcBurstLength - 1U) << DMA_CTR1_SBL_1_Pos) & DMA_CTR1_SBL_1);
3468 }
3469 
3470 /**
3471   * @brief Get source burst length.
3472   * @rmtoll CTR1          SBL_1           LL_DMA_GetSrcBurstLength
3473   * @param  DMAx DMAx Instance
3474   * @param  Channel This parameter can be one of the following values:
3475   *         @arg @ref LL_DMA_CHANNEL_0
3476   *         @arg @ref LL_DMA_CHANNEL_1
3477   *         @arg @ref LL_DMA_CHANNEL_2
3478   *         @arg @ref LL_DMA_CHANNEL_3
3479   *         @arg @ref LL_DMA_CHANNEL_4
3480   *         @arg @ref LL_DMA_CHANNEL_5
3481   *         @arg @ref LL_DMA_CHANNEL_6
3482   *         @arg @ref LL_DMA_CHANNEL_7
3483   *         @arg @ref LL_DMA_CHANNEL_8
3484   *         @arg @ref LL_DMA_CHANNEL_9
3485   *         @arg @ref LL_DMA_CHANNEL_10
3486   *         @arg @ref LL_DMA_CHANNEL_11
3487   *         @arg @ref LL_DMA_CHANNEL_12
3488   *         @arg @ref LL_DMA_CHANNEL_13
3489   *         @arg @ref LL_DMA_CHANNEL_14
3490   *         @arg @ref LL_DMA_CHANNEL_15
3491   * @retval Between 1 to 64
3492   * @retval None.
3493   */
LL_DMA_GetSrcBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel)3494 __STATIC_INLINE uint32_t LL_DMA_GetSrcBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel)
3495 {
3496   uint32_t dma_base_addr = (uint32_t)DMAx;
3497   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
3498                     DMA_CTR1_SBL_1) >> DMA_CTR1_SBL_1_Pos) + 1U);
3499 }
3500 
3501 /**
3502   * @brief Set source increment mode.
3503   * @note  This API is used for all available DMA channels.
3504   * @rmtoll CTR1          SINC           LL_DMA_SetSrcIncMode
3505   * @param  DMAx DMAx Instance
3506   * @param  Channel This parameter can be one of the following values:
3507   *         @arg @ref LL_DMA_CHANNEL_0
3508   *         @arg @ref LL_DMA_CHANNEL_1
3509   *         @arg @ref LL_DMA_CHANNEL_2
3510   *         @arg @ref LL_DMA_CHANNEL_3
3511   *         @arg @ref LL_DMA_CHANNEL_4
3512   *         @arg @ref LL_DMA_CHANNEL_5
3513   *         @arg @ref LL_DMA_CHANNEL_6
3514   *         @arg @ref LL_DMA_CHANNEL_7
3515   *         @arg @ref LL_DMA_CHANNEL_8
3516   *         @arg @ref LL_DMA_CHANNEL_9
3517   *         @arg @ref LL_DMA_CHANNEL_10
3518   *         @arg @ref LL_DMA_CHANNEL_11
3519   *         @arg @ref LL_DMA_CHANNEL_12
3520   *         @arg @ref LL_DMA_CHANNEL_13
3521   *         @arg @ref LL_DMA_CHANNEL_14
3522   *         @arg @ref LL_DMA_CHANNEL_15
3523   * @param  SrcInc This parameter can be one of the following values:
3524   *         @arg @ref LL_DMA_SRC_FIXED
3525   *         @arg @ref LL_DMA_SRC_INCREMENT
3526   * @retval None.
3527   */
LL_DMA_SetSrcIncMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcInc)3528 __STATIC_INLINE void LL_DMA_SetSrcIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcInc)
3529 {
3530   uint32_t dma_base_addr = (uint32_t)DMAx;
3531   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SINC, SrcInc);
3532 }
3533 
3534 /**
3535   * @brief Get source increment mode.
3536   * @note  This API is used for all available DMA channels.
3537   * @rmtoll CTR1          SINC           LL_DMA_GetSrcIncMode
3538   * @param  DMAx DMAx Instance
3539   * @param  Channel This parameter can be one of the following values:
3540   *         @arg @ref LL_DMA_CHANNEL_0
3541   *         @arg @ref LL_DMA_CHANNEL_1
3542   *         @arg @ref LL_DMA_CHANNEL_2
3543   *         @arg @ref LL_DMA_CHANNEL_3
3544   *         @arg @ref LL_DMA_CHANNEL_4
3545   *         @arg @ref LL_DMA_CHANNEL_5
3546   *         @arg @ref LL_DMA_CHANNEL_6
3547   *         @arg @ref LL_DMA_CHANNEL_7
3548   *         @arg @ref LL_DMA_CHANNEL_8
3549   *         @arg @ref LL_DMA_CHANNEL_9
3550   *         @arg @ref LL_DMA_CHANNEL_10
3551   *         @arg @ref LL_DMA_CHANNEL_11
3552   *         @arg @ref LL_DMA_CHANNEL_12
3553   *         @arg @ref LL_DMA_CHANNEL_13
3554   *         @arg @ref LL_DMA_CHANNEL_14
3555   *         @arg @ref LL_DMA_CHANNEL_15
3556   * @retval Returned value can be one of the following values:
3557   *         @arg @ref LL_DMA_SRC_FIXED
3558   *         @arg @ref LL_DMA_SRC_INCREMENT
3559   */
LL_DMA_GetSrcIncMode(const DMA_TypeDef * DMAx,uint32_t Channel)3560 __STATIC_INLINE uint32_t LL_DMA_GetSrcIncMode(const DMA_TypeDef *DMAx, uint32_t Channel)
3561 {
3562   uint32_t dma_base_addr = (uint32_t)DMAx;
3563   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SINC));
3564 }
3565 
3566 /**
3567   * @brief Set source data width.
3568   * @note  This API is used for all available DMA channels.
3569   * @rmtoll CTR1          SDW_LOG2           LL_DMA_SetSrcDataWidth
3570   * @param  DMAx DMAx Instance
3571   * @param  Channel This parameter can be one of the following values:
3572   *         @arg @ref LL_DMA_CHANNEL_0
3573   *         @arg @ref LL_DMA_CHANNEL_1
3574   *         @arg @ref LL_DMA_CHANNEL_2
3575   *         @arg @ref LL_DMA_CHANNEL_3
3576   *         @arg @ref LL_DMA_CHANNEL_4
3577   *         @arg @ref LL_DMA_CHANNEL_5
3578   *         @arg @ref LL_DMA_CHANNEL_6
3579   *         @arg @ref LL_DMA_CHANNEL_7
3580   *         @arg @ref LL_DMA_CHANNEL_8
3581   *         @arg @ref LL_DMA_CHANNEL_9
3582   *         @arg @ref LL_DMA_CHANNEL_10
3583   *         @arg @ref LL_DMA_CHANNEL_11
3584   *         @arg @ref LL_DMA_CHANNEL_12
3585   *         @arg @ref LL_DMA_CHANNEL_13
3586   *         @arg @ref LL_DMA_CHANNEL_14
3587   *         @arg @ref LL_DMA_CHANNEL_15
3588   * @param  SrcDataWidth This parameter can be one of the following values:
3589   *         @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE
3590   *         @arg @ref LL_DMA_SRC_DATAWIDTH_HALFWORD
3591   *         @arg @ref LL_DMA_SRC_DATAWIDTH_WORD
3592   *         @arg @ref LL_DMA_SRC_DATAWIDTH_DOUBLEWORD
3593   * @retval None.
3594   */
LL_DMA_SetSrcDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcDataWidth)3595 __STATIC_INLINE void LL_DMA_SetSrcDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  SrcDataWidth)
3596 {
3597   uint32_t dma_base_addr = (uint32_t)DMAx;
3598   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SDW_LOG2,
3599              SrcDataWidth);
3600 }
3601 
3602 /**
3603   * @brief Get Source Data width.
3604   * @note  This API is used for all available DMA channels.
3605   * @rmtoll CTR1          SDW_LOG2           LL_DMA_GetSrcDataWidth
3606   * @param  DMAx DMAx Instance
3607   * @param  Channel This parameter can be one of the following values:
3608   *         @arg @ref LL_DMA_CHANNEL_0
3609   *         @arg @ref LL_DMA_CHANNEL_1
3610   *         @arg @ref LL_DMA_CHANNEL_2
3611   *         @arg @ref LL_DMA_CHANNEL_3
3612   *         @arg @ref LL_DMA_CHANNEL_4
3613   *         @arg @ref LL_DMA_CHANNEL_5
3614   *         @arg @ref LL_DMA_CHANNEL_6
3615   *         @arg @ref LL_DMA_CHANNEL_7
3616   *         @arg @ref LL_DMA_CHANNEL_8
3617   *         @arg @ref LL_DMA_CHANNEL_9
3618   *         @arg @ref LL_DMA_CHANNEL_10
3619   *         @arg @ref LL_DMA_CHANNEL_11
3620   *         @arg @ref LL_DMA_CHANNEL_12
3621   *         @arg @ref LL_DMA_CHANNEL_13
3622   *         @arg @ref LL_DMA_CHANNEL_14
3623   *         @arg @ref LL_DMA_CHANNEL_15
3624   * @retval Returned value can be one of the following values:
3625   *         @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE
3626   *         @arg @ref LL_DMA_SRC_DATAWIDTH_HALFWORD
3627   *         @arg @ref LL_DMA_SRC_DATAWIDTH_WORD
3628   *         @arg @ref LL_DMA_SRC_DATAWIDTH_DOUBLEWORD
3629   */
LL_DMA_GetSrcDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel)3630 __STATIC_INLINE uint32_t LL_DMA_GetSrcDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel)
3631 {
3632   uint32_t dma_base_addr = (uint32_t)DMAx;
3633   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SDW_LOG2));
3634 }
3635 
3636 /**
3637   * @brief Configure channel transfer.
3638   * @note  This API is used for all available DMA channels.
3639   * @rmtoll CTR2        TCEM               LL_DMA_ConfigChannelTransfer\n
3640   *         CTR2        TRIGPOL            LL_DMA_ConfigChannelTransfer\n
3641   *         CTR2        TRIGM              LL_DMA_ConfigChannelTransfer\n
3642   *         CTR2        BREQ               LL_DMA_ConfigChannelTransfer\n
3643   *         CTR2        DREQ               LL_DMA_ConfigChannelTransfer\n
3644   *         CTR2        SWREQ              LL_DMA_ConfigChannelTransfer\n
3645   *         CTR2        PFREQ              LL_DMA_ConfigChannelTransfer
3646   * @param  DMAx DMAx Instance
3647   * @param  Channel This parameter can be one of the following values:
3648   *         @arg @ref LL_DMA_CHANNEL_0
3649   *         @arg @ref LL_DMA_CHANNEL_1
3650   *         @arg @ref LL_DMA_CHANNEL_2
3651   *         @arg @ref LL_DMA_CHANNEL_3
3652   *         @arg @ref LL_DMA_CHANNEL_4
3653   *         @arg @ref LL_DMA_CHANNEL_5
3654   *         @arg @ref LL_DMA_CHANNEL_6
3655   *         @arg @ref LL_DMA_CHANNEL_7
3656   *         @arg @ref LL_DMA_CHANNEL_8
3657   *         @arg @ref LL_DMA_CHANNEL_9
3658   *         @arg @ref LL_DMA_CHANNEL_10
3659   *         @arg @ref LL_DMA_CHANNEL_11
3660   *         @arg @ref LL_DMA_CHANNEL_12
3661   *         @arg @ref LL_DMA_CHANNEL_13
3662   *         @arg @ref LL_DMA_CHANNEL_14
3663   *         @arg @ref LL_DMA_CHANNEL_15
3664   * @param  Configuration This parameter must be a combination of all the following values:
3665   *         @arg @ref LL_DMA_TCEM_BLK_TRANSFER          or @ref LL_DMA_TCEM_RPT_BLK_TRANSFER      or
3666   *              @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER  or @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
3667   *         @arg @ref LL_DMA_HWREQUEST_SINGLEBURST      or @ref LL_DMA_HWREQUEST_BLK
3668   *         @arg @ref LL_DMA_TRIG_POLARITY_MASKED       or @ref LL_DMA_TRIG_POLARITY_RISING       or
3669   *              @ref LL_DMA_TRIG_POLARITY_FALLING
3670   *         @arg @ref LL_DMA_TRIGM_BLK_TRANSFER         or @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER     or
3671   *              @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER    or @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
3672   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or
3673   *              @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
3674   *         @arg @ref LL_DMA_NORMAL                     or @ref LL_DMA_PFCTRL
3675   *@retval None.
3676   */
LL_DMA_ConfigChannelTransfer(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)3677 __STATIC_INLINE void LL_DMA_ConfigChannelTransfer(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
3678 {
3679   uint32_t dma_base_addr = (uint32_t)DMAx;
3680   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
3681              (DMA_CTR2_TCEM | DMA_CTR2_TRIGPOL | DMA_CTR2_TRIGM | DMA_CTR2_DREQ | DMA_CTR2_SWREQ | DMA_CTR2_BREQ |
3682               DMA_CTR2_PFREQ), Configuration);
3683 }
3684 
3685 /**
3686   * @brief Set transfer event mode.
3687   * @note  This API is used for all available DMA channels.
3688   * @rmtoll CTR2          TCEM           LL_DMA_SetTransferEventMode
3689   * @param  DMAx DMAx Instance
3690   * @param  Channel This parameter can be one of the following values:
3691   *         @arg @ref LL_DMA_CHANNEL_0
3692   *         @arg @ref LL_DMA_CHANNEL_1
3693   *         @arg @ref LL_DMA_CHANNEL_2
3694   *         @arg @ref LL_DMA_CHANNEL_3
3695   *         @arg @ref LL_DMA_CHANNEL_4
3696   *         @arg @ref LL_DMA_CHANNEL_5
3697   *         @arg @ref LL_DMA_CHANNEL_6
3698   *         @arg @ref LL_DMA_CHANNEL_7
3699   *         @arg @ref LL_DMA_CHANNEL_8
3700   *         @arg @ref LL_DMA_CHANNEL_9
3701   *         @arg @ref LL_DMA_CHANNEL_10
3702   *         @arg @ref LL_DMA_CHANNEL_11
3703   *         @arg @ref LL_DMA_CHANNEL_12
3704   *         @arg @ref LL_DMA_CHANNEL_13
3705   *         @arg @ref LL_DMA_CHANNEL_14
3706   *         @arg @ref LL_DMA_CHANNEL_15
3707   * @param  TransferEventMode This parameter can be one of the following values:
3708   *         @arg @ref LL_DMA_TCEM_BLK_TRANSFER
3709   *         @arg @ref LL_DMA_TCEM_RPT_BLK_TRANSFER
3710   *         @arg @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER
3711   *         @arg @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
3712   * @retval None.
3713   */
LL_DMA_SetTransferEventMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t TransferEventMode)3714 __STATIC_INLINE void LL_DMA_SetTransferEventMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  TransferEventMode)
3715 {
3716   uint32_t dma_base_addr = (uint32_t)DMAx;
3717   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TCEM,
3718              TransferEventMode);
3719 }
3720 
3721 /**
3722   * @brief Get transfer event mode.
3723   * @note  This API is used for all available DMA channels.
3724   * @rmtoll CTR2          TCEM           LL_DMA_GetTransferEventMode
3725   * @param  DMAx DMAx Instance
3726   * @param  Channel This parameter can be one of the following values:
3727   *         @arg @ref LL_DMA_CHANNEL_0
3728   *         @arg @ref LL_DMA_CHANNEL_1
3729   *         @arg @ref LL_DMA_CHANNEL_2
3730   *         @arg @ref LL_DMA_CHANNEL_3
3731   *         @arg @ref LL_DMA_CHANNEL_4
3732   *         @arg @ref LL_DMA_CHANNEL_5
3733   *         @arg @ref LL_DMA_CHANNEL_6
3734   *         @arg @ref LL_DMA_CHANNEL_7
3735   *         @arg @ref LL_DMA_CHANNEL_8
3736   *         @arg @ref LL_DMA_CHANNEL_9
3737   *         @arg @ref LL_DMA_CHANNEL_10
3738   *         @arg @ref LL_DMA_CHANNEL_11
3739   *         @arg @ref LL_DMA_CHANNEL_12
3740   *         @arg @ref LL_DMA_CHANNEL_13
3741   *         @arg @ref LL_DMA_CHANNEL_14
3742   *         @arg @ref LL_DMA_CHANNEL_15
3743   * @retval Returned value can be one of the following values:
3744   *         @arg @ref LL_DMA_TCEM_BLK_TRANSFER
3745   *         @arg @ref LL_DMA_TCEM_RPT_BLK_TRANSFER
3746   *         @arg @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER
3747   *         @arg @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
3748   */
LL_DMA_GetTransferEventMode(const DMA_TypeDef * DMAx,uint32_t Channel)3749 __STATIC_INLINE uint32_t LL_DMA_GetTransferEventMode(const DMA_TypeDef *DMAx, uint32_t Channel)
3750 {
3751   uint32_t dma_base_addr = (uint32_t)DMAx;
3752   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TCEM));
3753 }
3754 
3755 /**
3756   * @brief Set trigger polarity.
3757   * @note  This API is used for all available DMA channels.
3758   * @rmtoll CTR2          TRIGPOL            LL_DMA_SetTriggerPolarity
3759   * @param  DMAx DMAx Instance
3760   * @param  Channel This parameter can be one of the following values:
3761   *         @arg @ref LL_DMA_CHANNEL_0
3762   *         @arg @ref LL_DMA_CHANNEL_1
3763   *         @arg @ref LL_DMA_CHANNEL_2
3764   *         @arg @ref LL_DMA_CHANNEL_3
3765   *         @arg @ref LL_DMA_CHANNEL_4
3766   *         @arg @ref LL_DMA_CHANNEL_5
3767   *         @arg @ref LL_DMA_CHANNEL_6
3768   *         @arg @ref LL_DMA_CHANNEL_7
3769   *         @arg @ref LL_DMA_CHANNEL_8
3770   *         @arg @ref LL_DMA_CHANNEL_9
3771   *         @arg @ref LL_DMA_CHANNEL_10
3772   *         @arg @ref LL_DMA_CHANNEL_11
3773   *         @arg @ref LL_DMA_CHANNEL_12
3774   *         @arg @ref LL_DMA_CHANNEL_13
3775   *         @arg @ref LL_DMA_CHANNEL_14
3776   *         @arg @ref LL_DMA_CHANNEL_15
3777   * @param  TriggerPolarity This parameter can be one of the following values:
3778   *         @arg @ref LL_DMA_TRIG_POLARITY_MASKED
3779   *         @arg @ref LL_DMA_TRIG_POLARITY_RISING
3780   *         @arg @ref LL_DMA_TRIG_POLARITY_FALLING
3781   * @retval None.
3782   */
LL_DMA_SetTriggerPolarity(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t TriggerPolarity)3783 __STATIC_INLINE void LL_DMA_SetTriggerPolarity(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TriggerPolarity)
3784 {
3785   uint32_t dma_base_addr = (uint32_t)DMAx;
3786   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGPOL,
3787              TriggerPolarity);
3788 }
3789 
3790 /**
3791   * @brief Get trigger polarity.
3792   * @note  This API is used for all available DMA channels.
3793   * @rmtoll CTR2          TRIGPOL            LL_DMA_GetTriggerPolarity
3794   * @param  DMAx DMAx Instance
3795   * @param  Channel This parameter can be one of the following values:
3796   *         @arg @ref LL_DMA_CHANNEL_0
3797   *         @arg @ref LL_DMA_CHANNEL_1
3798   *         @arg @ref LL_DMA_CHANNEL_2
3799   *         @arg @ref LL_DMA_CHANNEL_3
3800   *         @arg @ref LL_DMA_CHANNEL_4
3801   *         @arg @ref LL_DMA_CHANNEL_5
3802   *         @arg @ref LL_DMA_CHANNEL_6
3803   *         @arg @ref LL_DMA_CHANNEL_7
3804   *         @arg @ref LL_DMA_CHANNEL_8
3805   *         @arg @ref LL_DMA_CHANNEL_9
3806   *         @arg @ref LL_DMA_CHANNEL_10
3807   *         @arg @ref LL_DMA_CHANNEL_11
3808   *         @arg @ref LL_DMA_CHANNEL_12
3809   *         @arg @ref LL_DMA_CHANNEL_13
3810   *         @arg @ref LL_DMA_CHANNEL_14
3811   *         @arg @ref LL_DMA_CHANNEL_15
3812   * @retval Returned value can be one of the following values:
3813   *         @arg @ref LL_DMA_TRIG_POLARITY_MASKED
3814   *         @arg @ref LL_DMA_TRIG_POLARITY_RISING
3815   *         @arg @ref LL_DMA_TRIG_POLARITY_FALLING
3816   */
LL_DMA_GetTriggerPolarity(const DMA_TypeDef * DMAx,uint32_t Channel)3817 __STATIC_INLINE uint32_t LL_DMA_GetTriggerPolarity(const DMA_TypeDef *DMAx, uint32_t Channel)
3818 {
3819   uint32_t dma_base_addr = (uint32_t)DMAx;
3820   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGPOL));
3821 }
3822 
3823 /**
3824   * @brief Set trigger Mode.
3825   * @note  This API is used for all available DMA channels.
3826   * @rmtoll CTR2          TRIGM            LL_DMA_SetTriggerMode
3827   * @param  DMAx DMAx Instance
3828   * @param  Channel This parameter can be one of the following values:
3829   *         @arg @ref LL_DMA_CHANNEL_0
3830   *         @arg @ref LL_DMA_CHANNEL_1
3831   *         @arg @ref LL_DMA_CHANNEL_2
3832   *         @arg @ref LL_DMA_CHANNEL_3
3833   *         @arg @ref LL_DMA_CHANNEL_4
3834   *         @arg @ref LL_DMA_CHANNEL_5
3835   *         @arg @ref LL_DMA_CHANNEL_6
3836   *         @arg @ref LL_DMA_CHANNEL_7
3837   *         @arg @ref LL_DMA_CHANNEL_8
3838   *         @arg @ref LL_DMA_CHANNEL_9
3839   *         @arg @ref LL_DMA_CHANNEL_10
3840   *         @arg @ref LL_DMA_CHANNEL_11
3841   *         @arg @ref LL_DMA_CHANNEL_12
3842   *         @arg @ref LL_DMA_CHANNEL_13
3843   *         @arg @ref LL_DMA_CHANNEL_14
3844   *         @arg @ref LL_DMA_CHANNEL_15
3845   * @param  TriggerMode This parameter can be one of the following values:
3846   *         @arg @ref LL_DMA_TRIGM_BLK_TRANSFER
3847   *         @arg @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER (This value is allowed only for 2D addressing channels)
3848   *         @arg @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER
3849   *         @arg @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
3850   * @retval None.
3851   */
LL_DMA_SetTriggerMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t TriggerMode)3852 __STATIC_INLINE void LL_DMA_SetTriggerMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TriggerMode)
3853 {
3854   uint32_t dma_base_addr = (uint32_t)DMAx;
3855   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGM,
3856              TriggerMode);
3857 }
3858 
3859 /**
3860   * @brief Get trigger Mode.
3861   * @note  This API is used for all available DMA channels.
3862   * @rmtoll CTR2          TRIGM            LL_DMA_GetTriggerMode
3863   * @param  DMAx DMAx Instance
3864   * @param  Channel This parameter can be one of the following values:
3865   *         @arg @ref LL_DMA_CHANNEL_0
3866   *         @arg @ref LL_DMA_CHANNEL_1
3867   *         @arg @ref LL_DMA_CHANNEL_2
3868   *         @arg @ref LL_DMA_CHANNEL_3
3869   *         @arg @ref LL_DMA_CHANNEL_4
3870   *         @arg @ref LL_DMA_CHANNEL_5
3871   *         @arg @ref LL_DMA_CHANNEL_6
3872   *         @arg @ref LL_DMA_CHANNEL_7
3873   *         @arg @ref LL_DMA_CHANNEL_8
3874   *         @arg @ref LL_DMA_CHANNEL_9
3875   *         @arg @ref LL_DMA_CHANNEL_10
3876   *         @arg @ref LL_DMA_CHANNEL_11
3877   *         @arg @ref LL_DMA_CHANNEL_12
3878   *         @arg @ref LL_DMA_CHANNEL_13
3879   *         @arg @ref LL_DMA_CHANNEL_14
3880   *         @arg @ref LL_DMA_CHANNEL_15
3881   * @retval Returned value can be one of the following values:
3882   *         @arg @ref LL_DMA_TRIGM_BLK_TRANSFER
3883   *         @arg @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER (This value is allowed only for 2D addressing channels)
3884   *         @arg @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER
3885   *         @arg @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
3886   */
LL_DMA_GetTriggerMode(const DMA_TypeDef * DMAx,uint32_t Channel)3887 __STATIC_INLINE uint32_t LL_DMA_GetTriggerMode(const DMA_TypeDef *DMAx, uint32_t Channel)
3888 {
3889   uint32_t dma_base_addr = (uint32_t)DMAx;
3890   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGM));
3891 }
3892 
3893 /**
3894   * @brief Set destination hardware and software transfer request.
3895   * @note  This API is used for all available DMA channels.
3896   * @rmtoll CTR2          DREQ           LL_DMA_SetDataTransferDirection\n
3897   * @rmtoll CTR2          SWREQ          LL_DMA_SetDataTransferDirection
3898   * @param  DMAx DMAx Instance
3899   * @param  Channel This parameter can be one of the following values:
3900   *         @arg @ref LL_DMA_CHANNEL_0
3901   *         @arg @ref LL_DMA_CHANNEL_1
3902   *         @arg @ref LL_DMA_CHANNEL_2
3903   *         @arg @ref LL_DMA_CHANNEL_3
3904   *         @arg @ref LL_DMA_CHANNEL_4
3905   *         @arg @ref LL_DMA_CHANNEL_5
3906   *         @arg @ref LL_DMA_CHANNEL_6
3907   *         @arg @ref LL_DMA_CHANNEL_7
3908   *         @arg @ref LL_DMA_CHANNEL_8
3909   *         @arg @ref LL_DMA_CHANNEL_9
3910   *         @arg @ref LL_DMA_CHANNEL_10
3911   *         @arg @ref LL_DMA_CHANNEL_11
3912   *         @arg @ref LL_DMA_CHANNEL_12
3913   *         @arg @ref LL_DMA_CHANNEL_13
3914   *         @arg @ref LL_DMA_CHANNEL_14
3915   *         @arg @ref LL_DMA_CHANNEL_15
3916   * @param  Direction This parameter can be one of the following values:
3917   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
3918   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
3919   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
3920   * @retval None.
3921   */
LL_DMA_SetDataTransferDirection(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Direction)3922 __STATIC_INLINE void LL_DMA_SetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction)
3923 {
3924   uint32_t dma_base_addr = (uint32_t)DMAx;
3925   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
3926              DMA_CTR2_DREQ | DMA_CTR2_SWREQ, Direction);
3927 }
3928 
3929 /**
3930   * @brief Get destination hardware and software transfer request.
3931   * @note  This API is used for all available DMA channels.
3932   * @rmtoll CTR2          DREQ           LL_DMA_GetDataTransferDirection\n
3933   * @rmtoll CTR2          SWREQ          LL_DMA_GetDataTransferDirection
3934   * @param  DMAx DMAx Instance
3935   * @param  Channel This parameter can be one of the following values:
3936   *         @arg @ref LL_DMA_CHANNEL_0
3937   *         @arg @ref LL_DMA_CHANNEL_1
3938   *         @arg @ref LL_DMA_CHANNEL_2
3939   *         @arg @ref LL_DMA_CHANNEL_3
3940   *         @arg @ref LL_DMA_CHANNEL_4
3941   *         @arg @ref LL_DMA_CHANNEL_5
3942   *         @arg @ref LL_DMA_CHANNEL_6
3943   *         @arg @ref LL_DMA_CHANNEL_7
3944   *         @arg @ref LL_DMA_CHANNEL_8
3945   *         @arg @ref LL_DMA_CHANNEL_9
3946   *         @arg @ref LL_DMA_CHANNEL_10
3947   *         @arg @ref LL_DMA_CHANNEL_11
3948   *         @arg @ref LL_DMA_CHANNEL_12
3949   *         @arg @ref LL_DMA_CHANNEL_13
3950   *         @arg @ref LL_DMA_CHANNEL_14
3951   *         @arg @ref LL_DMA_CHANNEL_15
3952   * @retval Returned value can be one of the following values:
3953   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
3954   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
3955   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
3956   */
LL_DMA_GetDataTransferDirection(const DMA_TypeDef * DMAx,uint32_t Channel)3957 __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel)
3958 {
3959   uint32_t dma_base_addr = (uint32_t)DMAx;
3960   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
3961                    DMA_CTR2_DREQ | DMA_CTR2_SWREQ));
3962 }
3963 
3964 /**
3965   * @brief Set block hardware request.
3966   * @note  This API is used for all available DMA channels.
3967   * @rmtoll CTR2          BREQ           LL_DMA_SetBlkHWRequest\n
3968   * @param  DMAx DMAx Instance
3969   * @param  Channel This parameter can be one of the following values:
3970   *         @arg @ref LL_DMA_CHANNEL_0
3971   *         @arg @ref LL_DMA_CHANNEL_1
3972   *         @arg @ref LL_DMA_CHANNEL_2
3973   *         @arg @ref LL_DMA_CHANNEL_3
3974   *         @arg @ref LL_DMA_CHANNEL_4
3975   *         @arg @ref LL_DMA_CHANNEL_5
3976   *         @arg @ref LL_DMA_CHANNEL_6
3977   *         @arg @ref LL_DMA_CHANNEL_7
3978   *         @arg @ref LL_DMA_CHANNEL_8
3979   *         @arg @ref LL_DMA_CHANNEL_9
3980   *         @arg @ref LL_DMA_CHANNEL_10
3981   *         @arg @ref LL_DMA_CHANNEL_11
3982   *         @arg @ref LL_DMA_CHANNEL_12
3983   *         @arg @ref LL_DMA_CHANNEL_13
3984   *         @arg @ref LL_DMA_CHANNEL_14
3985   *         @arg @ref LL_DMA_CHANNEL_15
3986   * @param  BlkHWRequest This parameter can be one of the following values:
3987   *         @arg @ref LL_DMA_HWREQUEST_SINGLEBURST
3988   *         @arg @ref LL_DMA_HWREQUEST_BLK
3989   * @retval None.
3990   */
LL_DMA_SetBlkHWRequest(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkHWRequest)3991 __STATIC_INLINE void LL_DMA_SetBlkHWRequest(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkHWRequest)
3992 {
3993   uint32_t dma_base_addr = (uint32_t)DMAx;
3994   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_BREQ,
3995              BlkHWRequest);
3996 }
3997 
3998 /**
3999   * @brief Get block hardware request.
4000   * @note  This API is used for all available DMA channels.
4001   * @rmtoll CTR2          BREQ           LL_DMA_GetBlkHWRequest\n
4002   * @param  DMAx DMAx Instance
4003   * @param  Channel This parameter can be one of the following values:
4004   *         @arg @ref LL_DMA_CHANNEL_0
4005   *         @arg @ref LL_DMA_CHANNEL_1
4006   *         @arg @ref LL_DMA_CHANNEL_2
4007   *         @arg @ref LL_DMA_CHANNEL_3
4008   *         @arg @ref LL_DMA_CHANNEL_4
4009   *         @arg @ref LL_DMA_CHANNEL_5
4010   *         @arg @ref LL_DMA_CHANNEL_6
4011   *         @arg @ref LL_DMA_CHANNEL_7
4012   *         @arg @ref LL_DMA_CHANNEL_8
4013   *         @arg @ref LL_DMA_CHANNEL_9
4014   *         @arg @ref LL_DMA_CHANNEL_10
4015   *         @arg @ref LL_DMA_CHANNEL_11
4016   *         @arg @ref LL_DMA_CHANNEL_12
4017   *         @arg @ref LL_DMA_CHANNEL_13
4018   *         @arg @ref LL_DMA_CHANNEL_14
4019   *         @arg @ref LL_DMA_CHANNEL_15
4020   * @retval Returned value can be one of the following values:
4021   *         @arg @ref LL_DMA_HWREQUEST_SINGLEBURST
4022   *         @arg @ref LL_DMA_HWREQUEST_BLK
4023   */
LL_DMA_GetBlkHWRequest(const DMA_TypeDef * DMAx,uint32_t Channel)4024 __STATIC_INLINE uint32_t LL_DMA_GetBlkHWRequest(const DMA_TypeDef *DMAx, uint32_t Channel)
4025 {
4026   uint32_t dma_base_addr = (uint32_t)DMAx;
4027   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_BREQ));
4028 }
4029 
4030 /**
4031   * @brief Set hardware request.
4032   * @note  This API is used for all available DMA channels.
4033   * @rmtoll CTR2         REQSEL     LL_DMA_SetPeriphRequest
4034   * @param  DMAx DMAx Instance
4035   * @param  Channel This parameter can be one of the following values:
4036   *         @arg @ref LL_DMA_CHANNEL_0
4037   *         @arg @ref LL_DMA_CHANNEL_1
4038   *         @arg @ref LL_DMA_CHANNEL_2
4039   *         @arg @ref LL_DMA_CHANNEL_3
4040   *         @arg @ref LL_DMA_CHANNEL_4
4041   *         @arg @ref LL_DMA_CHANNEL_5
4042   *         @arg @ref LL_DMA_CHANNEL_6
4043   *         @arg @ref LL_DMA_CHANNEL_7
4044   *         @arg @ref LL_DMA_CHANNEL_8
4045   *         @arg @ref LL_DMA_CHANNEL_9
4046   *         @arg @ref LL_DMA_CHANNEL_10
4047   *         @arg @ref LL_DMA_CHANNEL_11
4048   *         @arg @ref LL_DMA_CHANNEL_12
4049   *         @arg @ref LL_DMA_CHANNEL_13
4050   *         @arg @ref LL_DMA_CHANNEL_14
4051   *         @arg @ref LL_DMA_CHANNEL_15
4052   * @param  Request This parameter can be one of the following values:
4053   *         @arg @ref LL_HPDMA1_REQUEST_JPEG_RX
4054   *         @arg @ref LL_HPDMA1_REQUEST_JPEG_TX
4055   *         @arg @ref LL_HPDMA1_REQUEST_OCTOSPI1
4056   *         @arg @ref LL_HPDMA1_REQUEST_OCTOSPI2
4057   *         @arg @ref LL_HPDMA1_REQUEST_OCTOSPI3
4058   *         @arg @ref LL_HPDMA1_REQUEST_FMC2_TXRX
4059   *         @arg @ref LL_HPDMA1_REQUEST_FMC2_BCH
4060   *         @arg @ref LL_HPDMA1_REQUEST_ADC1
4061   *         @arg @ref LL_HPDMA1_REQUEST_ADC2
4062   *         @arg @ref LL_HPDMA1_REQUEST_CRYP_IN
4063   *         @arg @ref LL_HPDMA1_REQUEST_CRYP_OUT
4064   *         @arg @ref LL_HPDMA1_REQUEST_SAES_OUT
4065   *         @arg @ref LL_HPDMA1_REQUEST_SAES_IN
4066   *         @arg @ref LL_HPDMA1_REQUEST_HASH_IN
4067   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH1
4068   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH2
4069   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH3
4070   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH4
4071   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_UP
4072   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_TRIG
4073   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_COM
4074   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH1
4075   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH2
4076   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH3
4077   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH4
4078   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_UP
4079   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_TRIG
4080   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH1
4081   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH2
4082   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH3
4083   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH4
4084   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_UP
4085   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_TRIG
4086   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH1
4087   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH2
4088   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH3
4089   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH4
4090   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_UP
4091   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_TRIG
4092   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH1
4093   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH2
4094   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH3
4095   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH4
4096   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_UP
4097   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_TRIG
4098   *         @arg @ref LL_HPDMA1_REQUEST_TIM6_UP
4099   *         @arg @ref LL_HPDMA1_REQUEST_TIM7_UP
4100   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH1
4101   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH2
4102   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH3
4103   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH4
4104   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_UP
4105   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_TRIG
4106   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_COM
4107   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_CH1
4108   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_CH2
4109   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_UP
4110   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_TRIG
4111   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_COM
4112   *         @arg @ref LL_HPDMA1_REQUEST_TIM16_CH1
4113   *         @arg @ref LL_HPDMA1_REQUEST_TIM16_UP
4114   *         @arg @ref LL_HPDMA1_REQUEST_TIM16_COM
4115   *         @arg @ref LL_HPDMA1_REQUEST_TIM17_CH1
4116   *         @arg @ref LL_HPDMA1_REQUEST_TIM17_UP
4117   *         @arg @ref LL_HPDMA1_REQUEST_TIM17_COM
4118   *         @arg @ref LL_HPDMA1_REQUEST_TIM18_CH1
4119   *         @arg @ref LL_HPDMA1_REQUEST_TIM18_UP
4120   *         @arg @ref LL_HPDMA1_REQUEST_TIM18_COM
4121   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM1_IC1
4122   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM1_IC2
4123   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM1_UE
4124   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM2_IC1
4125   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM2_IC2
4126   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM2_UE
4127   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM3_IC1
4128   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM3_IC2
4129   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM3_UE
4130   *         @arg @ref LL_HPDMA1_REQUEST_SPI1_RX
4131   *         @arg @ref LL_HPDMA1_REQUEST_SPI1_TX
4132   *         @arg @ref LL_HPDMA1_REQUEST_SPI2_RX
4133   *         @arg @ref LL_HPDMA1_REQUEST_SPI2_TX
4134   *         @arg @ref LL_HPDMA1_REQUEST_SPI3_RX
4135   *         @arg @ref LL_HPDMA1_REQUEST_SPI3_TX
4136   *         @arg @ref LL_HPDMA1_REQUEST_SPI4_RX
4137   *         @arg @ref LL_HPDMA1_REQUEST_SPI4_TX
4138   *         @arg @ref LL_HPDMA1_REQUEST_SPI5_RX
4139   *         @arg @ref LL_HPDMA1_REQUEST_SPI5_TX
4140   *         @arg @ref LL_HPDMA1_REQUEST_SPI6_RX
4141   *         @arg @ref LL_HPDMA1_REQUEST_SPI6_TX
4142   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_A
4143   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_B
4144   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_A
4145   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_B
4146   *         @arg @ref LL_HPDMA1_REQUEST_I2C1_RX
4147   *         @arg @ref LL_HPDMA1_REQUEST_I2C1_TX
4148   *         @arg @ref LL_HPDMA1_REQUEST_I2C2_RX
4149   *         @arg @ref LL_HPDMA1_REQUEST_I2C2_TX
4150   *         @arg @ref LL_HPDMA1_REQUEST_I2C3_RX
4151   *         @arg @ref LL_HPDMA1_REQUEST_I2C3_TX
4152   *         @arg @ref LL_HPDMA1_REQUEST_I2C4_RX
4153   *         @arg @ref LL_HPDMA1_REQUEST_I2C4_TX
4154   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_RX
4155   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_TX
4156   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_RX
4157   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_TX
4158   *         @arg @ref LL_HPDMA1_REQUEST_USART1_RX
4159   *         @arg @ref LL_HPDMA1_REQUEST_USART1_TX
4160   *         @arg @ref LL_HPDMA1_REQUEST_USART2_RX
4161   *         @arg @ref LL_HPDMA1_REQUEST_USART2_TX
4162   *         @arg @ref LL_HPDMA1_REQUEST_USART3_RX
4163   *         @arg @ref LL_HPDMA1_REQUEST_USART3_TX
4164   *         @arg @ref LL_HPDMA1_REQUEST_UART4_RX
4165   *         @arg @ref LL_HPDMA1_REQUEST_UART4_TX
4166   *         @arg @ref LL_HPDMA1_REQUEST_UART5_RX
4167   *         @arg @ref LL_HPDMA1_REQUEST_UART5_TX
4168   *         @arg @ref LL_HPDMA1_REQUEST_USART6_RX
4169   *         @arg @ref LL_HPDMA1_REQUEST_USART6_TX
4170   *         @arg @ref LL_HPDMA1_REQUEST_UART7_RX
4171   *         @arg @ref LL_HPDMA1_REQUEST_UART7_TX
4172   *         @arg @ref LL_HPDMA1_REQUEST_UART8_RX
4173   *         @arg @ref LL_HPDMA1_REQUEST_UART8_TX
4174   *         @arg @ref LL_HPDMA1_REQUEST_UART9_RX
4175   *         @arg @ref LL_HPDMA1_REQUEST_UART9_TX
4176   *         @arg @ref LL_HPDMA1_REQUEST_USART10_RX
4177   *         @arg @ref LL_HPDMA1_REQUEST_USART10_TX
4178   *         @arg @ref LL_HPDMA1_REQUEST_LPUART1_RX
4179   *         @arg @ref LL_HPDMA1_REQUEST_LPUART1_TX
4180   *         @arg @ref LL_HPDMA1_REQUEST_SPDIFRX_CS
4181   *         @arg @ref LL_HPDMA1_REQUEST_SPDIFRX_DT
4182   *         @arg @ref LL_HPDMA1_REQUEST_ADF1_FLT0
4183   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT0
4184   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT1
4185   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT2
4186   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT3
4187   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT4
4188   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT5
4189   *         @arg @ref LL_HPDMA1_REQUEST_UCPD1_TX
4190   *         @arg @ref LL_HPDMA1_REQUEST_UCPD1_RX
4191   *         @arg @ref LL_HPDMA1_REQUEST_DCMI_PSSI
4192   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_TC
4193   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_RS
4194   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_TC
4195   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_RS
4196   *         @arg @ref LL_GPDMA1_REQUEST_JPEG_RX
4197   *         @arg @ref LL_GPDMA1_REQUEST_JPEG_TX
4198   *         @arg @ref LL_GPDMA1_REQUEST_OCTOSPI1
4199   *         @arg @ref LL_GPDMA1_REQUEST_OCTOSPI2
4200   *         @arg @ref LL_GPDMA1_REQUEST_OCTOSPI3
4201   *         @arg @ref LL_GPDMA1_REQUEST_FMC2_TXRX
4202   *         @arg @ref LL_GPDMA1_REQUEST_FMC2_BCH
4203   *         @arg @ref LL_GPDMA1_REQUEST_ADC1
4204   *         @arg @ref LL_GPDMA1_REQUEST_ADC2
4205   *         @arg @ref LL_GPDMA1_REQUEST_CRYP_IN
4206   *         @arg @ref LL_GPDMA1_REQUEST_CRYP_OUT
4207   *         @arg @ref LL_GPDMA1_REQUEST_SAES_OUT
4208   *         @arg @ref LL_GPDMA1_REQUEST_SAES_IN
4209   *         @arg @ref LL_GPDMA1_REQUEST_HASH_IN
4210   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH1
4211   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH2
4212   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH3
4213   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH4
4214   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_UP
4215   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_TRIG
4216   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_COM
4217   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH1
4218   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH2
4219   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH3
4220   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH4
4221   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_UP
4222   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_TRIG
4223   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH1
4224   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH2
4225   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH3
4226   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH4
4227   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_UP
4228   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_TRIG
4229   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH1
4230   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH2
4231   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH3
4232   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH4
4233   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_UP
4234   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_TRIG
4235   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH1
4236   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH2
4237   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH3
4238   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH4
4239   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_UP
4240   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_TRIG
4241   *         @arg @ref LL_GPDMA1_REQUEST_TIM6_UP
4242   *         @arg @ref LL_GPDMA1_REQUEST_TIM7_UP
4243   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH1
4244   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH2
4245   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH3
4246   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH4
4247   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_UP
4248   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_TRIG
4249   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_COM
4250   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_CH1
4251   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_CH2
4252   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_UP
4253   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_TRIG
4254   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_COM
4255   *         @arg @ref LL_GPDMA1_REQUEST_TIM16_CH1
4256   *         @arg @ref LL_GPDMA1_REQUEST_TIM16_UP
4257   *         @arg @ref LL_GPDMA1_REQUEST_TIM16_COM
4258   *         @arg @ref LL_GPDMA1_REQUEST_TIM17_CH1
4259   *         @arg @ref LL_GPDMA1_REQUEST_TIM17_UP
4260   *         @arg @ref LL_GPDMA1_REQUEST_TIM17_COM
4261   *         @arg @ref LL_GPDMA1_REQUEST_TIM18_CH1
4262   *         @arg @ref LL_GPDMA1_REQUEST_TIM18_UP
4263   *         @arg @ref LL_GPDMA1_REQUEST_TIM18_COM
4264   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC1
4265   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC2
4266   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM1_UE
4267   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC1
4268   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC2
4269   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM2_UE
4270   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC1
4271   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC2
4272   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM3_UE
4273   *         @arg @ref LL_GPDMA1_REQUEST_SPI1_RX
4274   *         @arg @ref LL_GPDMA1_REQUEST_SPI1_TX
4275   *         @arg @ref LL_GPDMA1_REQUEST_SPI2_RX
4276   *         @arg @ref LL_GPDMA1_REQUEST_SPI2_TX
4277   *         @arg @ref LL_GPDMA1_REQUEST_SPI3_RX
4278   *         @arg @ref LL_GPDMA1_REQUEST_SPI3_TX
4279   *         @arg @ref LL_GPDMA1_REQUEST_SPI4_RX
4280   *         @arg @ref LL_GPDMA1_REQUEST_SPI4_TX
4281   *         @arg @ref LL_GPDMA1_REQUEST_SPI5_RX
4282   *         @arg @ref LL_GPDMA1_REQUEST_SPI5_TX
4283   *         @arg @ref LL_GPDMA1_REQUEST_SPI6_RX
4284   *         @arg @ref LL_GPDMA1_REQUEST_SPI6_TX
4285   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_A
4286   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_B
4287   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_A
4288   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_B
4289   *         @arg @ref LL_GPDMA1_REQUEST_I2C1_RX
4290   *         @arg @ref LL_GPDMA1_REQUEST_I2C1_TX
4291   *         @arg @ref LL_GPDMA1_REQUEST_I2C2_RX
4292   *         @arg @ref LL_GPDMA1_REQUEST_I2C2_TX
4293   *         @arg @ref LL_GPDMA1_REQUEST_I2C3_RX
4294   *         @arg @ref LL_GPDMA1_REQUEST_I2C3_TX
4295   *         @arg @ref LL_GPDMA1_REQUEST_I2C4_RX
4296   *         @arg @ref LL_GPDMA1_REQUEST_I2C4_TX
4297   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_RX
4298   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_TX
4299   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_RX
4300   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_TX
4301   *         @arg @ref LL_GPDMA1_REQUEST_USART1_RX
4302   *         @arg @ref LL_GPDMA1_REQUEST_USART1_TX
4303   *         @arg @ref LL_GPDMA1_REQUEST_USART2_RX
4304   *         @arg @ref LL_GPDMA1_REQUEST_USART2_TX
4305   *         @arg @ref LL_GPDMA1_REQUEST_USART3_RX
4306   *         @arg @ref LL_GPDMA1_REQUEST_USART3_TX
4307   *         @arg @ref LL_GPDMA1_REQUEST_UART4_RX
4308   *         @arg @ref LL_GPDMA1_REQUEST_UART4_TX
4309   *         @arg @ref LL_GPDMA1_REQUEST_UART5_RX
4310   *         @arg @ref LL_GPDMA1_REQUEST_UART5_TX
4311   *         @arg @ref LL_GPDMA1_REQUEST_USART6_RX
4312   *         @arg @ref LL_GPDMA1_REQUEST_USART6_TX
4313   *         @arg @ref LL_GPDMA1_REQUEST_UART7_RX
4314   *         @arg @ref LL_GPDMA1_REQUEST_UART7_TX
4315   *         @arg @ref LL_GPDMA1_REQUEST_UART8_RX
4316   *         @arg @ref LL_GPDMA1_REQUEST_UART8_TX
4317   *         @arg @ref LL_GPDMA1_REQUEST_UART9_RX
4318   *         @arg @ref LL_GPDMA1_REQUEST_UART9_TX
4319   *         @arg @ref LL_GPDMA1_REQUEST_USART10_RX
4320   *         @arg @ref LL_GPDMA1_REQUEST_USART10_TX
4321   *         @arg @ref LL_GPDMA1_REQUEST_LPUART1_RX
4322   *         @arg @ref LL_GPDMA1_REQUEST_LPUART1_TX
4323   *         @arg @ref LL_GPDMA1_REQUEST_SPDIFRX_DT
4324   *         @arg @ref LL_GPDMA1_REQUEST_SPDIFRX_CS
4325   *         @arg @ref LL_GPDMA1_REQUEST_ADF1_FLT0
4326   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT0
4327   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT1
4328   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT2
4329   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT3
4330   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT4
4331   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT5
4332   *         @arg @ref LL_GPDMA1_REQUEST_UCPD1_TX
4333   *         @arg @ref LL_GPDMA1_REQUEST_UCPD1_RX
4334   *         @arg @ref LL_GPDMA1_REQUEST_DCMI_PSSI
4335   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_TC
4336   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_RS
4337   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_TC
4338   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_RS
4339   * @retval None.
4340   */
LL_DMA_SetPeriphRequest(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Request)4341 __STATIC_INLINE void LL_DMA_SetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request)
4342 {
4343   uint32_t dma_base_addr = (uint32_t)DMAx;
4344   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_REQSEL, Request);
4345 }
4346 
4347 /**
4348   * @brief  Get hardware request.
4349   * @note  This API is used for all available DMA channels.
4350   * @rmtoll CTR2         REQSEL     LL_DMA_GetPeriphRequest
4351   * @param  DMAx DMAx Instance
4352   * @param  Channel This parameter can be one of the following values:
4353   *         @arg @ref LL_DMA_CHANNEL_0
4354   *         @arg @ref LL_DMA_CHANNEL_1
4355   *         @arg @ref LL_DMA_CHANNEL_2
4356   *         @arg @ref LL_DMA_CHANNEL_3
4357   *         @arg @ref LL_DMA_CHANNEL_4
4358   *         @arg @ref LL_DMA_CHANNEL_5
4359   *         @arg @ref LL_DMA_CHANNEL_6
4360   *         @arg @ref LL_DMA_CHANNEL_7
4361   *         @arg @ref LL_DMA_CHANNEL_8
4362   *         @arg @ref LL_DMA_CHANNEL_9
4363   *         @arg @ref LL_DMA_CHANNEL_10
4364   *         @arg @ref LL_DMA_CHANNEL_11
4365   *         @arg @ref LL_DMA_CHANNEL_12
4366   *         @arg @ref LL_DMA_CHANNEL_13
4367   *         @arg @ref LL_DMA_CHANNEL_14
4368   *         @arg @ref LL_DMA_CHANNEL_15
4369   * @retval Returned value can be one of the following values:
4370   *         @arg @ref LL_HPDMA1_REQUEST_JPEG_RX
4371   *         @arg @ref LL_HPDMA1_REQUEST_JPEG_TX
4372   *         @arg @ref LL_HPDMA1_REQUEST_OCTOSPI1
4373   *         @arg @ref LL_HPDMA1_REQUEST_OCTOSPI2
4374   *         @arg @ref LL_HPDMA1_REQUEST_OCTOSPI3
4375   *         @arg @ref LL_HPDMA1_REQUEST_FMC2_TXRX
4376   *         @arg @ref LL_HPDMA1_REQUEST_FMC2_BCH
4377   *         @arg @ref LL_HPDMA1_REQUEST_ADC1
4378   *         @arg @ref LL_HPDMA1_REQUEST_ADC2
4379   *         @arg @ref LL_HPDMA1_REQUEST_CRYP_IN
4380   *         @arg @ref LL_HPDMA1_REQUEST_CRYP_OUT
4381   *         @arg @ref LL_HPDMA1_REQUEST_SAES_OUT
4382   *         @arg @ref LL_HPDMA1_REQUEST_SAES_IN
4383   *         @arg @ref LL_HPDMA1_REQUEST_HASH_IN
4384   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH1
4385   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH2
4386   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH3
4387   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_CH4
4388   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_UP
4389   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_TRIG
4390   *         @arg @ref LL_HPDMA1_REQUEST_TIM1_COM
4391   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH1
4392   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH2
4393   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH3
4394   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_CH4
4395   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_UP
4396   *         @arg @ref LL_HPDMA1_REQUEST_TIM2_TRIG
4397   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH1
4398   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH2
4399   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH3
4400   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_CH4
4401   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_UP
4402   *         @arg @ref LL_HPDMA1_REQUEST_TIM3_TRIG
4403   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH1
4404   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH2
4405   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH3
4406   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_CH4
4407   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_UP
4408   *         @arg @ref LL_HPDMA1_REQUEST_TIM4_TRIG
4409   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH1
4410   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH2
4411   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH3
4412   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_CH4
4413   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_UP
4414   *         @arg @ref LL_HPDMA1_REQUEST_TIM5_TRIG
4415   *         @arg @ref LL_HPDMA1_REQUEST_TIM6_UP
4416   *         @arg @ref LL_HPDMA1_REQUEST_TIM7_UP
4417   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH1
4418   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH2
4419   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH3
4420   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_CH4
4421   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_UP
4422   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_TRIG
4423   *         @arg @ref LL_HPDMA1_REQUEST_TIM8_COM
4424   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_CH1
4425   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_CH2
4426   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_UP
4427   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_TRIG
4428   *         @arg @ref LL_HPDMA1_REQUEST_TIM15_COM
4429   *         @arg @ref LL_HPDMA1_REQUEST_TIM16_CH1
4430   *         @arg @ref LL_HPDMA1_REQUEST_TIM16_UP
4431   *         @arg @ref LL_HPDMA1_REQUEST_TIM16_COM
4432   *         @arg @ref LL_HPDMA1_REQUEST_TIM17_CH1
4433   *         @arg @ref LL_HPDMA1_REQUEST_TIM17_UP
4434   *         @arg @ref LL_HPDMA1_REQUEST_TIM17_COM
4435   *         @arg @ref LL_HPDMA1_REQUEST_TIM18_CH1
4436   *         @arg @ref LL_HPDMA1_REQUEST_TIM18_UP
4437   *         @arg @ref LL_HPDMA1_REQUEST_TIM18_COM
4438   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM1_IC1
4439   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM1_IC2
4440   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM1_UE
4441   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM2_IC1
4442   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM2_IC2
4443   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM2_UE
4444   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM3_IC1
4445   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM3_IC2
4446   *         @arg @ref LL_HPDMA1_REQUEST_LPTIM3_UE
4447   *         @arg @ref LL_HPDMA1_REQUEST_SPI1_RX
4448   *         @arg @ref LL_HPDMA1_REQUEST_SPI1_TX
4449   *         @arg @ref LL_HPDMA1_REQUEST_SPI2_RX
4450   *         @arg @ref LL_HPDMA1_REQUEST_SPI2_TX
4451   *         @arg @ref LL_HPDMA1_REQUEST_SPI3_RX
4452   *         @arg @ref LL_HPDMA1_REQUEST_SPI3_TX
4453   *         @arg @ref LL_HPDMA1_REQUEST_SPI4_RX
4454   *         @arg @ref LL_HPDMA1_REQUEST_SPI4_TX
4455   *         @arg @ref LL_HPDMA1_REQUEST_SPI5_RX
4456   *         @arg @ref LL_HPDMA1_REQUEST_SPI5_TX
4457   *         @arg @ref LL_HPDMA1_REQUEST_SPI6_RX
4458   *         @arg @ref LL_HPDMA1_REQUEST_SPI6_TX
4459   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_A
4460   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_B
4461   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_A
4462   *         @arg @ref LL_HPDMA1_REQUEST_SAI1_B
4463   *         @arg @ref LL_HPDMA1_REQUEST_I2C1_RX
4464   *         @arg @ref LL_HPDMA1_REQUEST_I2C1_TX
4465   *         @arg @ref LL_HPDMA1_REQUEST_I2C2_RX
4466   *         @arg @ref LL_HPDMA1_REQUEST_I2C2_TX
4467   *         @arg @ref LL_HPDMA1_REQUEST_I2C3_RX
4468   *         @arg @ref LL_HPDMA1_REQUEST_I2C3_TX
4469   *         @arg @ref LL_HPDMA1_REQUEST_I2C4_RX
4470   *         @arg @ref LL_HPDMA1_REQUEST_I2C4_TX
4471   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_RX
4472   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_TX
4473   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_RX
4474   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_TX
4475   *         @arg @ref LL_HPDMA1_REQUEST_USART1_RX
4476   *         @arg @ref LL_HPDMA1_REQUEST_USART1_TX
4477   *         @arg @ref LL_HPDMA1_REQUEST_USART2_RX
4478   *         @arg @ref LL_HPDMA1_REQUEST_USART2_TX
4479   *         @arg @ref LL_HPDMA1_REQUEST_USART3_RX
4480   *         @arg @ref LL_HPDMA1_REQUEST_USART3_TX
4481   *         @arg @ref LL_HPDMA1_REQUEST_UART4_RX
4482   *         @arg @ref LL_HPDMA1_REQUEST_UART4_TX
4483   *         @arg @ref LL_HPDMA1_REQUEST_UART5_RX
4484   *         @arg @ref LL_HPDMA1_REQUEST_UART5_TX
4485   *         @arg @ref LL_HPDMA1_REQUEST_USART6_RX
4486   *         @arg @ref LL_HPDMA1_REQUEST_USART6_TX
4487   *         @arg @ref LL_HPDMA1_REQUEST_UART7_RX
4488   *         @arg @ref LL_HPDMA1_REQUEST_UART7_TX
4489   *         @arg @ref LL_HPDMA1_REQUEST_UART8_RX
4490   *         @arg @ref LL_HPDMA1_REQUEST_UART8_TX
4491   *         @arg @ref LL_HPDMA1_REQUEST_UART9_RX
4492   *         @arg @ref LL_HPDMA1_REQUEST_UART9_TX
4493   *         @arg @ref LL_HPDMA1_REQUEST_USART10_RX
4494   *         @arg @ref LL_HPDMA1_REQUEST_USART10_TX
4495   *         @arg @ref LL_HPDMA1_REQUEST_LPUART1_RX
4496   *         @arg @ref LL_HPDMA1_REQUEST_LPUART1_TX
4497   *         @arg @ref LL_HPDMA1_REQUEST_SPDIFRX_CS
4498   *         @arg @ref LL_HPDMA1_REQUEST_SPDIFRX_DT
4499   *         @arg @ref LL_HPDMA1_REQUEST_ADF1_FLT0
4500   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT0
4501   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT1
4502   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT2
4503   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT3
4504   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT4
4505   *         @arg @ref LL_HPDMA1_REQUEST_MDF1_FLT5
4506   *         @arg @ref LL_HPDMA1_REQUEST_UCPD1_TX
4507   *         @arg @ref LL_HPDMA1_REQUEST_UCPD1_RX
4508   *         @arg @ref LL_HPDMA1_REQUEST_DCMI_PSSI
4509   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_TC
4510   *         @arg @ref LL_HPDMA1_REQUEST_I3C1_RS
4511   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_TC
4512   *         @arg @ref LL_HPDMA1_REQUEST_I3C2_RS
4513   *         @arg @ref LL_GPDMA1_REQUEST_JPEG_RX
4514   *         @arg @ref LL_GPDMA1_REQUEST_JPEG_TX
4515   *         @arg @ref LL_GPDMA1_REQUEST_OCTOSPI1
4516   *         @arg @ref LL_GPDMA1_REQUEST_OCTOSPI2
4517   *         @arg @ref LL_GPDMA1_REQUEST_OCTOSPI3
4518   *         @arg @ref LL_GPDMA1_REQUEST_FMC2_TXRX
4519   *         @arg @ref LL_GPDMA1_REQUEST_FMC2_BCH
4520   *         @arg @ref LL_GPDMA1_REQUEST_ADC1
4521   *         @arg @ref LL_GPDMA1_REQUEST_ADC2
4522   *         @arg @ref LL_GPDMA1_REQUEST_CRYP_IN
4523   *         @arg @ref LL_GPDMA1_REQUEST_CRYP_OUT
4524   *         @arg @ref LL_GPDMA1_REQUEST_SAES_OUT
4525   *         @arg @ref LL_GPDMA1_REQUEST_SAES_IN
4526   *         @arg @ref LL_GPDMA1_REQUEST_HASH_IN
4527   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH1
4528   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH2
4529   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH3
4530   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_CH4
4531   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_UP
4532   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_TRIG
4533   *         @arg @ref LL_GPDMA1_REQUEST_TIM1_COM
4534   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH1
4535   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH2
4536   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH3
4537   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_CH4
4538   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_UP
4539   *         @arg @ref LL_GPDMA1_REQUEST_TIM2_TRIG
4540   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH1
4541   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH2
4542   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH3
4543   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_CH4
4544   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_UP
4545   *         @arg @ref LL_GPDMA1_REQUEST_TIM3_TRIG
4546   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH1
4547   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH2
4548   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH3
4549   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_CH4
4550   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_UP
4551   *         @arg @ref LL_GPDMA1_REQUEST_TIM4_TRIG
4552   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH1
4553   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH2
4554   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH3
4555   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_CH4
4556   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_UP
4557   *         @arg @ref LL_GPDMA1_REQUEST_TIM5_TRIG
4558   *         @arg @ref LL_GPDMA1_REQUEST_TIM6_UP
4559   *         @arg @ref LL_GPDMA1_REQUEST_TIM7_UP
4560   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH1
4561   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH2
4562   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH3
4563   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_CH4
4564   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_UP
4565   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_TRIG
4566   *         @arg @ref LL_GPDMA1_REQUEST_TIM8_COM
4567   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_CH1
4568   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_CH2
4569   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_UP
4570   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_TRIG
4571   *         @arg @ref LL_GPDMA1_REQUEST_TIM15_COM
4572   *         @arg @ref LL_GPDMA1_REQUEST_TIM16_CH1
4573   *         @arg @ref LL_GPDMA1_REQUEST_TIM16_UP
4574   *         @arg @ref LL_GPDMA1_REQUEST_TIM16_COM
4575   *         @arg @ref LL_GPDMA1_REQUEST_TIM17_CH1
4576   *         @arg @ref LL_GPDMA1_REQUEST_TIM17_UP
4577   *         @arg @ref LL_GPDMA1_REQUEST_TIM17_COM
4578   *         @arg @ref LL_GPDMA1_REQUEST_TIM18_CH1
4579   *         @arg @ref LL_GPDMA1_REQUEST_TIM18_UP
4580   *         @arg @ref LL_GPDMA1_REQUEST_TIM18_COM
4581   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC1
4582   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC2
4583   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM1_UE
4584   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC1
4585   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC2
4586   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM2_UE
4587   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC1
4588   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC2
4589   *         @arg @ref LL_GPDMA1_REQUEST_LPTIM3_UE
4590   *         @arg @ref LL_GPDMA1_REQUEST_SPI1_RX
4591   *         @arg @ref LL_GPDMA1_REQUEST_SPI1_TX
4592   *         @arg @ref LL_GPDMA1_REQUEST_SPI2_RX
4593   *         @arg @ref LL_GPDMA1_REQUEST_SPI2_TX
4594   *         @arg @ref LL_GPDMA1_REQUEST_SPI3_RX
4595   *         @arg @ref LL_GPDMA1_REQUEST_SPI3_TX
4596   *         @arg @ref LL_GPDMA1_REQUEST_SPI4_RX
4597   *         @arg @ref LL_GPDMA1_REQUEST_SPI4_TX
4598   *         @arg @ref LL_GPDMA1_REQUEST_SPI5_RX
4599   *         @arg @ref LL_GPDMA1_REQUEST_SPI5_TX
4600   *         @arg @ref LL_GPDMA1_REQUEST_SPI6_RX
4601   *         @arg @ref LL_GPDMA1_REQUEST_SPI6_TX
4602   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_A
4603   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_B
4604   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_A
4605   *         @arg @ref LL_GPDMA1_REQUEST_SAI1_B
4606   *         @arg @ref LL_GPDMA1_REQUEST_I2C1_RX
4607   *         @arg @ref LL_GPDMA1_REQUEST_I2C1_TX
4608   *         @arg @ref LL_GPDMA1_REQUEST_I2C2_RX
4609   *         @arg @ref LL_GPDMA1_REQUEST_I2C2_TX
4610   *         @arg @ref LL_GPDMA1_REQUEST_I2C3_RX
4611   *         @arg @ref LL_GPDMA1_REQUEST_I2C3_TX
4612   *         @arg @ref LL_GPDMA1_REQUEST_I2C4_RX
4613   *         @arg @ref LL_GPDMA1_REQUEST_I2C4_TX
4614   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_RX
4615   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_TX
4616   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_RX
4617   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_TX
4618   *         @arg @ref LL_GPDMA1_REQUEST_USART1_RX
4619   *         @arg @ref LL_GPDMA1_REQUEST_USART1_TX
4620   *         @arg @ref LL_GPDMA1_REQUEST_USART2_RX
4621   *         @arg @ref LL_GPDMA1_REQUEST_USART2_TX
4622   *         @arg @ref LL_GPDMA1_REQUEST_USART3_RX
4623   *         @arg @ref LL_GPDMA1_REQUEST_USART3_TX
4624   *         @arg @ref LL_GPDMA1_REQUEST_UART4_RX
4625   *         @arg @ref LL_GPDMA1_REQUEST_UART4_TX
4626   *         @arg @ref LL_GPDMA1_REQUEST_UART5_RX
4627   *         @arg @ref LL_GPDMA1_REQUEST_UART5_TX
4628   *         @arg @ref LL_GPDMA1_REQUEST_USART6_RX
4629   *         @arg @ref LL_GPDMA1_REQUEST_USART6_TX
4630   *         @arg @ref LL_GPDMA1_REQUEST_UART7_RX
4631   *         @arg @ref LL_GPDMA1_REQUEST_UART7_TX
4632   *         @arg @ref LL_GPDMA1_REQUEST_UART8_RX
4633   *         @arg @ref LL_GPDMA1_REQUEST_UART8_TX
4634   *         @arg @ref LL_GPDMA1_REQUEST_UART9_RX
4635   *         @arg @ref LL_GPDMA1_REQUEST_UART9_TX
4636   *         @arg @ref LL_GPDMA1_REQUEST_USART10_RX
4637   *         @arg @ref LL_GPDMA1_REQUEST_USART10_TX
4638   *         @arg @ref LL_GPDMA1_REQUEST_LPUART1_RX
4639   *         @arg @ref LL_GPDMA1_REQUEST_LPUART1_TX
4640   *         @arg @ref LL_GPDMA1_REQUEST_SPDIFRX_DT
4641   *         @arg @ref LL_GPDMA1_REQUEST_SPDIFRX_CS
4642   *         @arg @ref LL_GPDMA1_REQUEST_ADF1_FLT0
4643   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT0
4644   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT1
4645   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT2
4646   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT3
4647   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT4
4648   *         @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT5
4649   *         @arg @ref LL_GPDMA1_REQUEST_UCPD1_TX
4650   *         @arg @ref LL_GPDMA1_REQUEST_UCPD1_RX
4651   *         @arg @ref LL_GPDMA1_REQUEST_DCMI_PSSI
4652   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_TC
4653   *         @arg @ref LL_GPDMA1_REQUEST_I3C1_RS
4654   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_TC
4655   *         @arg @ref LL_GPDMA1_REQUEST_I3C2_RS
4656   */
LL_DMA_GetPeriphRequest(const DMA_TypeDef * DMAx,uint32_t Channel)4657 __STATIC_INLINE  uint32_t LL_DMA_GetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel)
4658 {
4659   uint32_t dma_base_addr = (uint32_t)DMAx;
4660   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_REQSEL));
4661 }
4662 
4663 /**
4664   * @brief Set hardware trigger.
4665   * @note  This API is used for all available DMA channels.
4666   * @rmtoll CTR2         TRIGSEL     LL_DMA_SetHWTrigger
4667   * @param  DMAx DMAx Instance
4668   * @param  Channel This parameter can be one of the following values:
4669   *         @arg @ref LL_DMA_CHANNEL_0
4670   *         @arg @ref LL_DMA_CHANNEL_1
4671   *         @arg @ref LL_DMA_CHANNEL_2
4672   *         @arg @ref LL_DMA_CHANNEL_3
4673   *         @arg @ref LL_DMA_CHANNEL_4
4674   *         @arg @ref LL_DMA_CHANNEL_5
4675   *         @arg @ref LL_DMA_CHANNEL_6
4676   *         @arg @ref LL_DMA_CHANNEL_7
4677   *         @arg @ref LL_DMA_CHANNEL_8
4678   *         @arg @ref LL_DMA_CHANNEL_9
4679   *         @arg @ref LL_DMA_CHANNEL_10
4680   *         @arg @ref LL_DMA_CHANNEL_11
4681   *         @arg @ref LL_DMA_CHANNEL_12
4682   *         @arg @ref LL_DMA_CHANNEL_13
4683   *         @arg @ref LL_DMA_CHANNEL_14
4684   *         @arg @ref LL_DMA_CHANNEL_15
4685   * @param  Trigger This parameter can be one of the following values:
4686   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_FEND
4687   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_LEND
4688   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_HSYNC
4689   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_VSYNC
4690   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_FEND
4691   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_LEND
4692   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_HSYNC
4693   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_VSYNC
4694   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_FEND
4695   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_LEND
4696   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_HSYNC
4697   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_VSYNC
4698   *         @arg @ref LL_HPDMA1_TRIGGER_DMA2D_CTC
4699   *         @arg @ref LL_HPDMA1_TRIGGER_DMA2D_TC
4700   *         @arg @ref LL_HPDMA1_TRIGGER_DMA2D_TW
4701   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_EOC
4702   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_IFNF
4703   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_IFT
4704   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_OFNE
4705   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_OFT
4706   *         @arg @ref LL_HPDMA1_TRIGGER_LCD_LI
4707   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_0
4708   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_1
4709   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_2
4710   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_3
4711   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_3
4712   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_2
4713   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_1
4714   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_0
4715   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM1_CH1
4716   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM1_CH2
4717   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM2_CH1
4718   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM2_CH2
4719   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM3_CH1
4720   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM3_CH2
4721   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM4_OUT
4722   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM5_OUT
4723   *         @arg @ref LL_HPDMA1_TRIGGER_RTC_WKUP
4724   *         @arg @ref LL_HPDMA1_TRIGGER_LPUART1_IT_R_WUP_ASYNC
4725   *         @arg @ref LL_HPDMA1_TRIGGER_LPUART1_IT_T_WUP_ASYNC
4726   *         @arg @ref LL_HPDMA1_TRIGGER_SPI6_IT_OR_SPI6_AIT_SYNC
4727   *         @arg @ref LL_HPDMA1_TRIGGER_TIM1_TRGO
4728   *         @arg @ref LL_HPDMA1_TRIGGER_TIM1_TRGO2
4729   *         @arg @ref LL_HPDMA1_TRIGGER_TIM2_TRGO
4730   *         @arg @ref LL_HPDMA1_TRIGGER_TIM3_TRGO
4731   *         @arg @ref LL_HPDMA1_TRIGGER_TIM4_TRGO
4732   *         @arg @ref LL_HPDMA1_TRIGGER_TIM5_TRGO
4733   *         @arg @ref LL_HPDMA1_TRIGGER_TIM6_TRGO
4734   *         @arg @ref LL_HPDMA1_TRIGGER_TIM7_TRGO
4735   *         @arg @ref LL_HPDMA1_TRIGGER_TIM8_TRGO
4736   *         @arg @ref LL_HPDMA1_TRIGGER_TIM8_TRGO2
4737   *         @arg @ref LL_HPDMA1_TRIGGER_TIM12_TRGO
4738   *         @arg @ref LL_HPDMA1_TRIGGER_TIM15_TRGO
4739   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH0_TCF
4740   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH1_TCF
4741   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH2_TCF
4742   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH3_TCF
4743   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH4_TCF
4744   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH5_TCF
4745   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH6_TCF
4746   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH7_TCF
4747   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH8_TCF
4748   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH9_TCF
4749   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH10_TCF
4750   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH11_TCF
4751   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH12_TCF
4752   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH13_TCF
4753   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH14_TCF
4754   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH15_TCF
4755   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH0_TCF
4756   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH1_TCF
4757   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH2_TCF
4758   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH3_TCF
4759   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH4_TCF
4760   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH5_TCF
4761   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH6_TCF
4762   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH7_TCF
4763   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH8_TCF
4764   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH9_TCF
4765   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH10_TCF
4766   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH11_TCF
4767   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH12_TCF
4768   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH13_TCF
4769   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH14_TCF
4770   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH15_TCF
4771   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT0_SYNC
4772   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT1_SYNC
4773   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT2_SYNC
4774   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT3_SYNC
4775   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT4_SYNC
4776   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT5_SYNC
4777   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT6_SYNC
4778   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT7_SYNC
4779   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT8_SYNC
4780   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT9_SYNC
4781   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT10_SYNC
4782   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT11_SYNC
4783   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT12_SYNC
4784   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT13_SYNC
4785   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT14_SYNC
4786   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT15_SYNC
4787   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_FEND
4788   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_LEND
4789   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_HSYNC
4790   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_VSYNC
4791   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_FEND
4792   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_LEND
4793   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_HSYNC
4794   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_VSYNC
4795   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_FEND
4796   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_LEND
4797   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_HSYNC
4798   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_VSYNC
4799   *         @arg @ref LL_GPDMA1_TRIGGER_DMA2D_CTC
4800   *         @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TC
4801   *         @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TW
4802   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_EOC
4803   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFNF
4804   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFT
4805   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFNE
4806   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFT
4807   *         @arg @ref LL_GPDMA1_TRIGGER_LCD_LI
4808   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_0
4809   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_1
4810   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_2
4811   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_3
4812   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_3
4813   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_2
4814   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_1
4815   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_0
4816   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH1
4817   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH2
4818   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH1
4819   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH2
4820   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH1
4821   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH2
4822   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_OUT
4823   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_OUT
4824   *         @arg @ref LL_GPDMA1_TRIGGER_RTC_WKUP
4825   *         @arg @ref LL_GPDMA1_TRIGGER_LPUART1_IT_R_WUP_ASYNC
4826   *         @arg @ref LL_GPDMA1_TRIGGER_LPUART1_IT_T_WUP_ASYNC
4827   *         @arg @ref LL_GPDMA1_TRIGGER_SPI6_IT_OR_SPI6_AIT_SYNC
4828   *         @arg @ref LL_GPDMA1_TRIGGER_TIM1_TRGO
4829   *         @arg @ref LL_GPDMA1_TRIGGER_TIM1_TRGO2
4830   *         @arg @ref LL_GPDMA1_TRIGGER_TIM2_TRGO
4831   *         @arg @ref LL_GPDMA1_TRIGGER_TIM3_TRGO
4832   *         @arg @ref LL_GPDMA1_TRIGGER_TIM4_TRGO
4833   *         @arg @ref LL_GPDMA1_TRIGGER_TIM5_TRGO
4834   *         @arg @ref LL_GPDMA1_TRIGGER_TIM6_TRGO
4835   *         @arg @ref LL_GPDMA1_TRIGGER_TIM7_TRGO
4836   *         @arg @ref LL_GPDMA1_TRIGGER_TIM8_TRGO
4837   *         @arg @ref LL_GPDMA1_TRIGGER_TIM8_TRGO2
4838   *         @arg @ref LL_GPDMA1_TRIGGER_TIM12_TRGO
4839   *         @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO
4840   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH0_TCF
4841   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH1_TCF
4842   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH2_TCF
4843   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH3_TCF
4844   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH4_TCF
4845   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH5_TCF
4846   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH6_TCF
4847   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH7_TCF
4848   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH8_TCF
4849   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH9_TCF
4850   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH10_TCF
4851   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH11_TCF
4852   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH12_TCF
4853   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH13_TCF
4854   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH14_TCF
4855   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH15_TCF
4856   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF
4857   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF
4858   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF
4859   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF
4860   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF
4861   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF
4862   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF
4863   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF
4864   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH8_TCF
4865   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH9_TCF
4866   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH10_TCF
4867   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH11_TCF
4868   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH12_TCF
4869   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH13_TCF
4870   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH14_TCF
4871   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH15_TCF
4872   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT0_SYNC
4873   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT1_SYNC
4874   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT2_SYNC
4875   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT3_SYNC
4876   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT4_SYNC
4877   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT5_SYNC
4878   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT6_SYNC
4879   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT7_SYNC
4880   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT8_SYNC
4881   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT9_SYNC
4882   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT10_SYNC
4883   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT11_SYNC
4884   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT12_SYNC
4885   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT13_SYNC
4886   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT14_SYNC
4887   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT15_SYNC
4888   * @retval None.
4889   */
LL_DMA_SetHWTrigger(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Trigger)4890 __STATIC_INLINE void LL_DMA_SetHWTrigger(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Trigger)
4891 {
4892   uint32_t dma_base_addr = (uint32_t)DMAx;
4893   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGSEL,
4894              (Trigger << DMA_CTR2_TRIGSEL_Pos) & DMA_CTR2_TRIGSEL);
4895 }
4896 
4897 /**
4898   * @brief Get hardware triggers.
4899   * @note  This API is used for all available DMA channels.
4900   * @rmtoll CTR2         TRIGSEL     LL_DMA_GetHWTrigger
4901   * @param  DMAx DMAx Instance
4902   * @param  Channel This parameter can be one of the following values:
4903   *         @arg @ref LL_DMA_CHANNEL_0
4904   *         @arg @ref LL_DMA_CHANNEL_1
4905   *         @arg @ref LL_DMA_CHANNEL_2
4906   *         @arg @ref LL_DMA_CHANNEL_3
4907   *         @arg @ref LL_DMA_CHANNEL_4
4908   *         @arg @ref LL_DMA_CHANNEL_5
4909   *         @arg @ref LL_DMA_CHANNEL_6
4910   *         @arg @ref LL_DMA_CHANNEL_7
4911   *         @arg @ref LL_DMA_CHANNEL_8
4912   *         @arg @ref LL_DMA_CHANNEL_9
4913   *         @arg @ref LL_DMA_CHANNEL_10
4914   *         @arg @ref LL_DMA_CHANNEL_11
4915   *         @arg @ref LL_DMA_CHANNEL_12
4916   *         @arg @ref LL_DMA_CHANNEL_13
4917   *         @arg @ref LL_DMA_CHANNEL_14
4918   *         @arg @ref LL_DMA_CHANNEL_15
4919   * @retval Returned value can be one of the following values:
4920   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_FEND
4921   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_LEND
4922   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_HSYNC
4923   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P0_VSYNC
4924   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_FEND
4925   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_LEND
4926   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_HSYNC
4927   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P1_VSYNC
4928   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_FEND
4929   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_LEND
4930   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_HSYNC
4931   *         @arg @ref LL_HPDMA1_TRIGGER_DCMIPP_P2_VSYNC
4932   *         @arg @ref LL_HPDMA1_TRIGGER_DMA2D_CTC
4933   *         @arg @ref LL_HPDMA1_TRIGGER_DMA2D_TC
4934   *         @arg @ref LL_HPDMA1_TRIGGER_DMA2D_TW
4935   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_EOC
4936   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_IFNF
4937   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_IFT
4938   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_OFNE
4939   *         @arg @ref LL_HPDMA1_TRIGGER_JPEG_OFT
4940   *         @arg @ref LL_HPDMA1_TRIGGER_LCD_LI
4941   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_0
4942   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_1
4943   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_2
4944   *         @arg @ref LL_HPDMA1_TRIGGER_GPU2D1_GP_3
4945   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_3
4946   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_2
4947   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_1
4948   *         @arg @ref LL_HPDMA1_TRIGGER_GFXTIM_0
4949   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM1_CH1
4950   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM1_CH2
4951   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM2_CH1
4952   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM2_CH2
4953   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM3_CH1
4954   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM3_CH2
4955   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM4_OUT
4956   *         @arg @ref LL_HPDMA1_TRIGGER_LPTIM5_OUT
4957   *         @arg @ref LL_HPDMA1_TRIGGER_RTC_WKUP
4958   *         @arg @ref LL_HPDMA1_TRIGGER_LPUART1_IT_R_WUP_ASYNC
4959   *         @arg @ref LL_HPDMA1_TRIGGER_LPUART1_IT_T_WUP_ASYNC
4960   *         @arg @ref LL_HPDMA1_TRIGGER_SPI6_IT_OR_SPI6_AIT_SYNC
4961   *         @arg @ref LL_HPDMA1_TRIGGER_TIM1_TRGO
4962   *         @arg @ref LL_HPDMA1_TRIGGER_TIM1_TRGO2
4963   *         @arg @ref LL_HPDMA1_TRIGGER_TIM2_TRGO
4964   *         @arg @ref LL_HPDMA1_TRIGGER_TIM3_TRGO
4965   *         @arg @ref LL_HPDMA1_TRIGGER_TIM4_TRGO
4966   *         @arg @ref LL_HPDMA1_TRIGGER_TIM5_TRGO
4967   *         @arg @ref LL_HPDMA1_TRIGGER_TIM6_TRGO
4968   *         @arg @ref LL_HPDMA1_TRIGGER_TIM7_TRGO
4969   *         @arg @ref LL_HPDMA1_TRIGGER_TIM8_TRGO
4970   *         @arg @ref LL_HPDMA1_TRIGGER_TIM8_TRGO2
4971   *         @arg @ref LL_HPDMA1_TRIGGER_TIM12_TRGO
4972   *         @arg @ref LL_HPDMA1_TRIGGER_TIM15_TRGO
4973   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH0_TCF
4974   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH1_TCF
4975   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH2_TCF
4976   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH3_TCF
4977   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH4_TCF
4978   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH5_TCF
4979   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH6_TCF
4980   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH7_TCF
4981   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH8_TCF
4982   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH9_TCF
4983   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH10_TCF
4984   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH11_TCF
4985   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH12_TCF
4986   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH13_TCF
4987   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH14_TCF
4988   *         @arg @ref LL_HPDMA1_TRIGGER_HPDMA1_CH15_TCF
4989   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH0_TCF
4990   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH1_TCF
4991   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH2_TCF
4992   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH3_TCF
4993   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH4_TCF
4994   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH5_TCF
4995   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH6_TCF
4996   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH7_TCF
4997   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH8_TCF
4998   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH9_TCF
4999   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH10_TCF
5000   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH11_TCF
5001   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH12_TCF
5002   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH13_TCF
5003   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH14_TCF
5004   *         @arg @ref LL_HPDMA1_TRIGGER_GPDMA1_CH15_TCF
5005   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT0_SYNC
5006   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT1_SYNC
5007   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT2_SYNC
5008   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT3_SYNC
5009   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT4_SYNC
5010   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT5_SYNC
5011   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT6_SYNC
5012   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT7_SYNC
5013   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT8_SYNC
5014   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT9_SYNC
5015   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT10_SYNC
5016   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT11_SYNC
5017   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT12_SYNC
5018   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT13_SYNC
5019   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT14_SYNC
5020   *         @arg @ref LL_HPDMA1_TRIGGER_EXTIT15_SYNC
5021   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_FEND
5022   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_LEND
5023   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_HSYNC
5024   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P0_VSYNC
5025   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_FEND
5026   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_LEND
5027   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_HSYNC
5028   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P1_VSYNC
5029   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_FEND
5030   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_LEND
5031   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_HSYNC
5032   *         @arg @ref LL_GPDMA1_TRIGGER_DCMIPP_P2_VSYNC
5033   *         @arg @ref LL_GPDMA1_TRIGGER_DMA2D_CTC
5034   *         @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TC
5035   *         @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TW
5036   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_EOC
5037   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFNF
5038   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFT
5039   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFNE
5040   *         @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFT
5041   *         @arg @ref LL_GPDMA1_TRIGGER_LCD_LI
5042   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_0
5043   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_1
5044   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_2
5045   *         @arg @ref LL_GPDMA1_TRIGGER_GPU2D1_GP_3
5046   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_3
5047   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_2
5048   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_1
5049   *         @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_0
5050   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH1
5051   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH2
5052   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH1
5053   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH2
5054   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH1
5055   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH2
5056   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_OUT
5057   *         @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_OUT
5058   *         @arg @ref LL_GPDMA1_TRIGGER_RTC_WKUP
5059   *         @arg @ref LL_GPDMA1_TRIGGER_LPUART1_IT_R_WUP_ASYNC
5060   *         @arg @ref LL_GPDMA1_TRIGGER_LPUART1_IT_T_WUP_ASYNC
5061   *         @arg @ref LL_GPDMA1_TRIGGER_SPI6_IT_OR_SPI6_AIT_SYNC
5062   *         @arg @ref LL_GPDMA1_TRIGGER_TIM1_TRGO
5063   *         @arg @ref LL_GPDMA1_TRIGGER_TIM1_TRGO2
5064   *         @arg @ref LL_GPDMA1_TRIGGER_TIM2_TRGO
5065   *         @arg @ref LL_GPDMA1_TRIGGER_TIM3_TRGO
5066   *         @arg @ref LL_GPDMA1_TRIGGER_TIM4_TRGO
5067   *         @arg @ref LL_GPDMA1_TRIGGER_TIM5_TRGO
5068   *         @arg @ref LL_GPDMA1_TRIGGER_TIM6_TRGO
5069   *         @arg @ref LL_GPDMA1_TRIGGER_TIM7_TRGO
5070   *         @arg @ref LL_GPDMA1_TRIGGER_TIM8_TRGO
5071   *         @arg @ref LL_GPDMA1_TRIGGER_TIM8_TRGO2
5072   *         @arg @ref LL_GPDMA1_TRIGGER_TIM12_TRGO
5073   *         @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO
5074   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH0_TCF
5075   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH1_TCF
5076   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH2_TCF
5077   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH3_TCF
5078   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH4_TCF
5079   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH5_TCF
5080   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH6_TCF
5081   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH7_TCF
5082   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH8_TCF
5083   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH9_TCF
5084   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH10_TCF
5085   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH11_TCF
5086   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH12_TCF
5087   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH13_TCF
5088   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH14_TCF
5089   *         @arg @ref LL_GPDMA1_TRIGGER_HPDMA1_CH15_TCF
5090   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF
5091   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF
5092   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF
5093   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF
5094   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF
5095   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF
5096   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF
5097   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF
5098   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH8_TCF
5099   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH9_TCF
5100   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH10_TCF
5101   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH11_TCF
5102   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH12_TCF
5103   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH13_TCF
5104   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH14_TCF
5105   *         @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH15_TCF
5106   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT0_SYNC
5107   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT1_SYNC
5108   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT2_SYNC
5109   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT3_SYNC
5110   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT4_SYNC
5111   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT5_SYNC
5112   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT6_SYNC
5113   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT7_SYNC
5114   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT8_SYNC
5115   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT9_SYNC
5116   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT10_SYNC
5117   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT11_SYNC
5118   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT12_SYNC
5119   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT13_SYNC
5120   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT14_SYNC
5121   *         @arg @ref LL_GPDMA1_TRIGGER_EXTIT15_SYNC
5122   */
LL_DMA_GetHWTrigger(const DMA_TypeDef * DMAx,uint32_t Channel)5123 __STATIC_INLINE  uint32_t LL_DMA_GetHWTrigger(const DMA_TypeDef *DMAx, uint32_t Channel)
5124 {
5125   uint32_t dma_base_addr = (uint32_t)DMAx;
5126   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
5127                    DMA_CTR2_TRIGSEL) >> DMA_CTR2_TRIGSEL_Pos);
5128 }
5129 
5130 /**
5131   * @brief Set DMA transfer mode.
5132   * @note  This API is used for all available DMA channels.
5133   * @rmtoll CTR2         PFREQ     LL_DMA_SetTransferMode
5134   * @param  DMAx DMAx Instance
5135   * @param  Channel This parameter can be one of the following values:
5136   *         @arg @ref LL_DMA_CHANNEL_0
5137   *         @arg @ref LL_DMA_CHANNEL_1
5138   *         @arg @ref LL_DMA_CHANNEL_15
5139   * @param  Mode This parameter can be one of the following values:
5140   *         @arg @ref LL_DMA_NORMAL
5141   *         @arg @ref LL_DMA_PFCTRL
5142   * @retval None.
5143   */
LL_DMA_SetTransferMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Mode)5144 __STATIC_INLINE void LL_DMA_SetTransferMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode)
5145 {
5146   uint32_t dma_base_addr = (uint32_t)DMAx;
5147   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_PFREQ,
5148              Mode & DMA_CTR2_PFREQ);
5149 }
5150 
5151 /**
5152   * @brief Get DMA transfer mode.
5153   * @note  This API is used for all available DMA channels.
5154   * @rmtoll CTR2         TRIGSEL     LL_DMA_GetTransferMode
5155   * @param  DMAx DMAx Instance
5156   * @param  Channel This parameter can be one of the following values:
5157   *         @arg @ref LL_DMA_CHANNEL_0
5158   *         @arg @ref LL_DMA_CHANNEL_1
5159   *         @arg @ref LL_DMA_CHANNEL_15
5160   * @retval Returned value can be one of the following values:
5161   *         @arg @ref LL_DMA_NORMAL
5162   *         @arg @ref LL_DMA_PFCTRL
5163   */
LL_DMA_GetTransferMode(const DMA_TypeDef * DMAx,uint32_t Channel)5164 __STATIC_INLINE  uint32_t LL_DMA_GetTransferMode(const DMA_TypeDef *DMAx, uint32_t Channel)
5165 {
5166   uint32_t dma_base_addr = (uint32_t)DMAx;
5167   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
5168                    DMA_CTR2_PFREQ));
5169 }
5170 
5171 /**
5172   * @brief Configure addresses update.
5173   * @note  This API is used only for 2D addressing channels.
5174   * @rmtoll CBR1         BRDDEC            LL_DMA_ConfigBlkRptAddrUpdate\n
5175   *         CBR1         BRSDEC            LL_DMA_ConfigBlkRptAddrUpdate\n
5176   *         CBR1         DDEC              LL_DMA_ConfigBlkRptAddrUpdate\n
5177   *         CBR1         SDEC              LL_DMA_ConfigBlkRptAddrUpdate
5178   * @param  DMAx DMAx Instance
5179   * @param  Channel This parameter can be one of the following values:
5180   *         @arg @ref LL_DMA_CHANNEL_12
5181   *         @arg @ref LL_DMA_CHANNEL_13
5182   *         @arg @ref LL_DMA_CHANNEL_14
5183   *         @arg @ref LL_DMA_CHANNEL_15
5184   * @param  Configuration This parameter must be a combination of all the following values:
5185   *         @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT or @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
5186   *         @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT  or @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
5187   *         @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT  or @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
5188   *         @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT   or @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
5189   *@retval None.
5190   */
LL_DMA_ConfigBlkRptAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)5191 __STATIC_INLINE void LL_DMA_ConfigBlkRptAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
5192 {
5193   uint32_t dma_base_addr = (uint32_t)DMAx;
5194   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
5195              DMA_CBR1_BRDDEC | DMA_CBR1_BRSDEC | DMA_CBR1_DDEC | DMA_CBR1_SDEC, Configuration);
5196 }
5197 
5198 /**
5199   * @brief Configure DMA Block number of data and repeat Count.
5200   * @note  This API is used only for 2D addressing channels.
5201   * @rmtoll CBR1         BNDT                     LL_DMA_ConfigBlkCounters\n
5202   *         CBR1         BRC                      LL_DMA_ConfigBlkCounters
5203   * @param  DMAx DMAx Instance
5204   * @param  Channel This parameter can be one of the following values:
5205   *         @arg @ref LL_DMA_CHANNEL_12
5206   *         @arg @ref LL_DMA_CHANNEL_13
5207   *         @arg @ref LL_DMA_CHANNEL_14
5208   *         @arg @ref LL_DMA_CHANNEL_15
5209   * @param  BlkDataLength Block transfer length
5210                           Value between 0 to 0x0000FFFF
5211   * @param  BlkRptCount Block repeat counter
5212   *                     Value between 0 to 0x000007FF
5213   *@retval None.
5214   */
LL_DMA_ConfigBlkCounters(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkDataLength,uint32_t BlkRptCount)5215 __STATIC_INLINE void LL_DMA_ConfigBlkCounters(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkDataLength,
5216                                               uint32_t BlkRptCount)
5217 {
5218   uint32_t dma_base_addr = (uint32_t)DMAx;
5219   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
5220              (DMA_CBR1_BNDT | DMA_CBR1_BRC), (BlkDataLength | (BlkRptCount << DMA_CBR1_BRC_Pos)));
5221 }
5222 
5223 /**
5224   * @brief Set block repeat destination address update.
5225   * @note  This API is used only for 2D addressing channels.
5226   * @rmtoll CBR1          BRDDEC           LL_DMA_SetBlkRptDestAddrUpdate
5227   * @param  DMAx DMAx Instance
5228   * @param  Channel This parameter can be one of the following values:
5229   *         @arg @ref LL_DMA_CHANNEL_12
5230   *         @arg @ref LL_DMA_CHANNEL_13
5231   *         @arg @ref LL_DMA_CHANNEL_14
5232   *         @arg @ref LL_DMA_CHANNEL_15
5233   * @param  BlkRptDestAddrUpdate This parameter can be one of the following values:
5234   *         @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT
5235   *         @arg @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
5236   * @retval None.
5237   */
LL_DMA_SetBlkRptDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptDestAddrUpdate)5238 __STATIC_INLINE void LL_DMA_SetBlkRptDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel,
5239                                                     uint32_t BlkRptDestAddrUpdate)
5240 {
5241   uint32_t dma_base_addr = (uint32_t)DMAx;
5242   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRDDEC,
5243              BlkRptDestAddrUpdate);
5244 }
5245 
5246 /**
5247   * @brief Get block repeat destination address update.
5248   * @note  This API is used only for 2D addressing channels.
5249   * @rmtoll CBR1          BRDDEC           LL_DMA_GetBlkRptDestAddrUpdate
5250   * @param  DMAx DMAx Instance
5251   * @param  Channel This parameter can be one of the following values:
5252   *         @arg @ref LL_DMA_CHANNEL_12
5253   *         @arg @ref LL_DMA_CHANNEL_13
5254   *         @arg @ref LL_DMA_CHANNEL_14
5255   *         @arg @ref LL_DMA_CHANNEL_15
5256   * @retval Returned value can be one of the following values:
5257   *         @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT
5258   *         @arg @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
5259   */
LL_DMA_GetBlkRptDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5260 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5261 {
5262   uint32_t dma_base_addr = (uint32_t)DMAx;
5263   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRDDEC));
5264 }
5265 
5266 /**
5267   * @brief Set block repeat source address update.
5268   * @note  This API is used only for 2D addressing channels.
5269   * @rmtoll CBR1          BRSDEC           LL_DMA_SetBlkRptSrcAddrUpdate
5270   * @param  DMAx DMAx Instance
5271   * @param  Channel This parameter can be one of the following values:
5272   *         @arg @ref LL_DMA_CHANNEL_12
5273   *         @arg @ref LL_DMA_CHANNEL_13
5274   *         @arg @ref LL_DMA_CHANNEL_14
5275   *         @arg @ref LL_DMA_CHANNEL_15
5276   * @param  BlkRptSrcAddrUpdate This parameter can be one of the following values:
5277   *         @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT
5278   *         @arg @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
5279   * @retval None.
5280   */
LL_DMA_SetBlkRptSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptSrcAddrUpdate)5281 __STATIC_INLINE void LL_DMA_SetBlkRptSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel,
5282                                                    uint32_t BlkRptSrcAddrUpdate)
5283 {
5284   uint32_t dma_base_addr = (uint32_t)DMAx;
5285   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRSDEC,
5286              BlkRptSrcAddrUpdate);
5287 }
5288 
5289 /**
5290   * @brief Get block repeat source address update.
5291   * @note  This API is used only for 2D addressing channels.
5292   * @rmtoll CBR1          BRSDEC           LL_DMA_GetBlkRptSrcAddrUpdate
5293   * @param  DMAx DMAx Instance
5294   * @param  Channel This parameter can be one of the following values:
5295   *         @arg @ref LL_DMA_CHANNEL_12
5296   *         @arg @ref LL_DMA_CHANNEL_13
5297   *         @arg @ref LL_DMA_CHANNEL_14
5298   *         @arg @ref LL_DMA_CHANNEL_15
5299   * @retval Returned value can be one of the following values:
5300   *         @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT
5301   *         @arg @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
5302   */
LL_DMA_GetBlkRptSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5303 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5304 {
5305   uint32_t dma_base_addr = (uint32_t)DMAx;
5306   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRSDEC));
5307 }
5308 
5309 /**
5310   * @brief Set destination address update.
5311   * @note  This API is used only for 2D addressing channels.
5312   * @rmtoll CBR1          DDEC           LL_DMA_SetDestAddrUpdate
5313   * @param  DMAx DMAx Instance
5314   * @param  Channel This parameter can be one of the following values:
5315   *         @arg @ref LL_DMA_CHANNEL_12
5316   *         @arg @ref LL_DMA_CHANNEL_13
5317   *         @arg @ref LL_DMA_CHANNEL_14
5318   *         @arg @ref LL_DMA_CHANNEL_15
5319   * @param  DestAddrUpdate This parameter can be one of the following values:
5320   *         @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT
5321   *         @arg @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
5322   * @retval None.
5323   */
LL_DMA_SetDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAddrUpdate)5324 __STATIC_INLINE void LL_DMA_SetDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddrUpdate)
5325 {
5326   uint32_t dma_base_addr = (uint32_t)DMAx;
5327   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_DDEC,
5328              DestAddrUpdate);
5329 }
5330 
5331 /**
5332   * @brief Get destination address update.
5333   * @note  This API is used only for 2D addressing channels.
5334   * @rmtoll CBR1          DDEC           LL_DMA_GetDestAddrUpdate
5335   * @param  DMAx DMAx Instance
5336   * @param  Channel This parameter can be one of the following values:
5337   *         @arg @ref LL_DMA_CHANNEL_12
5338   *         @arg @ref LL_DMA_CHANNEL_13
5339   *         @arg @ref LL_DMA_CHANNEL_14
5340   *         @arg @ref LL_DMA_CHANNEL_15
5341   * @retval Returned value can be one of the following values:
5342   *         @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT
5343   *         @arg @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
5344   */
LL_DMA_GetDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5345 __STATIC_INLINE uint32_t LL_DMA_GetDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5346 {
5347   uint32_t dma_base_addr = (uint32_t)DMAx;
5348   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_DDEC));
5349 }
5350 
5351 /**
5352   * @brief Set source address update.
5353   * @note  This API is used only for 2D addressing channels.
5354   * @rmtoll CBR1          SDEC           LL_DMA_SetSrcAddrUpdate
5355   * @param  DMAx DMAx Instance
5356   * @param  Channel This parameter can be one of the following values:
5357   *         @arg @ref LL_DMA_CHANNEL_12
5358   *         @arg @ref LL_DMA_CHANNEL_13
5359   *         @arg @ref LL_DMA_CHANNEL_14
5360   *         @arg @ref LL_DMA_CHANNEL_15
5361   * @param  SrcAddrUpdate This parameter can be one of the following values:
5362   *         @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT
5363   *         @arg @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
5364   * @retval None.
5365   */
LL_DMA_SetSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddrUpdate)5366 __STATIC_INLINE void LL_DMA_SetSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrUpdate)
5367 {
5368   uint32_t dma_base_addr = (uint32_t)DMAx;
5369   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_SDEC,
5370              SrcAddrUpdate);
5371 }
5372 
5373 /**
5374   * @brief Get source address update.
5375   * @note  This API is used only for 2D addressing channels.
5376   * @rmtoll CBR1          SDEC           LL_DMA_GetSrcAddrUpdate
5377   * @param  DMAx DMAx Instance
5378   * @param  Channel This parameter can be one of the following values:
5379   *         @arg @ref LL_DMA_CHANNEL_12
5380   *         @arg @ref LL_DMA_CHANNEL_13
5381   *         @arg @ref LL_DMA_CHANNEL_14
5382   *         @arg @ref LL_DMA_CHANNEL_15
5383   * @retval Returned value can be one of the following values:
5384   *         @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT
5385   *         @arg @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
5386   */
LL_DMA_GetSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5387 __STATIC_INLINE uint32_t LL_DMA_GetSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5388 {
5389   uint32_t dma_base_addr = (uint32_t)DMAx;
5390   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_SDEC));
5391 }
5392 
5393 /**
5394   * @brief Set block repeat count.
5395   * @note  This API is used only for 2D addressing channels.
5396   * @rmtoll CBR1        BRC            LL_DMA_SetBlkRptCount
5397   * @param  DMAx DMAx Instance
5398   * @param  Channel This parameter can be one of the following values:
5399   *         @arg @ref LL_DMA_CHANNEL_12
5400   *         @arg @ref LL_DMA_CHANNEL_13
5401   *         @arg @ref LL_DMA_CHANNEL_14
5402   *         @arg @ref LL_DMA_CHANNEL_15
5403   * @param  BlkRptCount Block repeat counter
5404   *                     Value between 0 to 0x000007FF
5405   * @retval None.
5406   */
LL_DMA_SetBlkRptCount(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptCount)5407 __STATIC_INLINE void LL_DMA_SetBlkRptCount(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkRptCount)
5408 {
5409   uint32_t dma_base_addr = (uint32_t)DMAx;
5410   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRC,
5411              (BlkRptCount << DMA_CBR1_BRC_Pos) & DMA_CBR1_BRC);
5412 }
5413 
5414 /**
5415   * @brief Get block repeat count.
5416   * @note  This API is used only for 2D addressing channels.
5417   * @rmtoll CBR1        BRC            LL_DMA_GetBlkRptCount
5418   * @param  DMAx DMAx Instance
5419   * @param  Channel This parameter can be one of the following values:
5420   *         @arg @ref LL_DMA_CHANNEL_12
5421   *         @arg @ref LL_DMA_CHANNEL_13
5422   *         @arg @ref LL_DMA_CHANNEL_14
5423   *         @arg @ref LL_DMA_CHANNEL_15
5424   * @retval Between 0 to 0x000007FF
5425   */
LL_DMA_GetBlkRptCount(const DMA_TypeDef * DMAx,uint32_t Channel)5426 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptCount(const DMA_TypeDef *DMAx, uint32_t Channel)
5427 {
5428   uint32_t dma_base_addr = (uint32_t)DMAx;
5429   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
5430                    DMA_CBR1_BRC) >> DMA_CBR1_BRC_Pos);
5431 }
5432 
5433 /**
5434   * @brief  Set block data length in bytes to transfer.
5435   * @note  This API is used for all available DMA channels.
5436   * @rmtoll CBR1        BNDT         LL_DMA_SetBlkDataLength
5437   * @param  DMAx DMAx Instance
5438   * @param  Channel This parameter can be one of the following values:
5439   *         @arg @ref LL_DMA_CHANNEL_0
5440   *         @arg @ref LL_DMA_CHANNEL_1
5441   *         @arg @ref LL_DMA_CHANNEL_2
5442   *         @arg @ref LL_DMA_CHANNEL_3
5443   *         @arg @ref LL_DMA_CHANNEL_4
5444   *         @arg @ref LL_DMA_CHANNEL_5
5445   *         @arg @ref LL_DMA_CHANNEL_6
5446   *         @arg @ref LL_DMA_CHANNEL_7
5447   *         @arg @ref LL_DMA_CHANNEL_8
5448   *         @arg @ref LL_DMA_CHANNEL_9
5449   *         @arg @ref LL_DMA_CHANNEL_10
5450   *         @arg @ref LL_DMA_CHANNEL_11
5451   *         @arg @ref LL_DMA_CHANNEL_12
5452   *         @arg @ref LL_DMA_CHANNEL_13
5453   *         @arg @ref LL_DMA_CHANNEL_14
5454   *         @arg @ref LL_DMA_CHANNEL_15
5455   * @param  BlkDataLength Between 0 to 0x0000FFFF
5456   * @retval None.
5457   */
LL_DMA_SetBlkDataLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkDataLength)5458 __STATIC_INLINE void LL_DMA_SetBlkDataLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkDataLength)
5459 {
5460   uint32_t dma_base_addr = (uint32_t)DMAx;
5461   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BNDT,
5462              BlkDataLength);
5463 }
5464 
5465 /**
5466   * @brief  Get block data length in bytes to transfer.
5467   * @note  This API is used for all available DMA channels.
5468   * @rmtoll CBR1        BNDT         LL_DMA_GetBlkDataLength
5469   * @param  DMAx DMAx Instance
5470   * @param  Channel This parameter can be one of the following values:
5471   *         @arg @ref LL_DMA_CHANNEL_0
5472   *         @arg @ref LL_DMA_CHANNEL_1
5473   *         @arg @ref LL_DMA_CHANNEL_2
5474   *         @arg @ref LL_DMA_CHANNEL_3
5475   *         @arg @ref LL_DMA_CHANNEL_4
5476   *         @arg @ref LL_DMA_CHANNEL_5
5477   *         @arg @ref LL_DMA_CHANNEL_6
5478   *         @arg @ref LL_DMA_CHANNEL_7
5479   *         @arg @ref LL_DMA_CHANNEL_8
5480   *         @arg @ref LL_DMA_CHANNEL_9
5481   *         @arg @ref LL_DMA_CHANNEL_10
5482   *         @arg @ref LL_DMA_CHANNEL_11
5483   *         @arg @ref LL_DMA_CHANNEL_12
5484   *         @arg @ref LL_DMA_CHANNEL_13
5485   *         @arg @ref LL_DMA_CHANNEL_14
5486   *         @arg @ref LL_DMA_CHANNEL_15
5487   * @retval Between 0 to 0x0000FFFF
5488   */
LL_DMA_GetBlkDataLength(const DMA_TypeDef * DMAx,uint32_t Channel)5489 __STATIC_INLINE uint32_t LL_DMA_GetBlkDataLength(const DMA_TypeDef *DMAx, uint32_t Channel)
5490 {
5491   uint32_t dma_base_addr = (uint32_t)DMAx;
5492   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BNDT));
5493 }
5494 
5495 /**
5496   * @brief Configure the source and destination addresses.
5497   * @note  This API is used for all available DMA channels.
5498   * @note   This API must not be called when the DMA Channel is enabled.
5499   * @rmtoll CSAR        SA          LL_DMA_ConfigAddresses\n
5500   *         CDAR        DA          LL_DMA_ConfigAddresses
5501   * @param  DMAx DMAx Instance
5502   * @param  Channel This parameter can be one of the following values:
5503   *         @arg @ref LL_DMA_CHANNEL_0
5504   *         @arg @ref LL_DMA_CHANNEL_1
5505   *         @arg @ref LL_DMA_CHANNEL_2
5506   *         @arg @ref LL_DMA_CHANNEL_3
5507   *         @arg @ref LL_DMA_CHANNEL_4
5508   *         @arg @ref LL_DMA_CHANNEL_5
5509   *         @arg @ref LL_DMA_CHANNEL_6
5510   *         @arg @ref LL_DMA_CHANNEL_7
5511   *         @arg @ref LL_DMA_CHANNEL_8
5512   *         @arg @ref LL_DMA_CHANNEL_9
5513   *         @arg @ref LL_DMA_CHANNEL_10
5514   *         @arg @ref LL_DMA_CHANNEL_11
5515   *         @arg @ref LL_DMA_CHANNEL_12
5516   *         @arg @ref LL_DMA_CHANNEL_13
5517   *         @arg @ref LL_DMA_CHANNEL_14
5518   *         @arg @ref LL_DMA_CHANNEL_15
5519   * @param  SrcAddress Between 0 to 0xFFFFFFFF
5520   * @param  DestAddress Between 0 to 0xFFFFFFFF
5521   * @retval None.
5522   */
LL_DMA_ConfigAddresses(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddress,uint32_t DestAddress)5523 __STATIC_INLINE void LL_DMA_ConfigAddresses(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, uint32_t
5524                                             DestAddress)
5525 {
5526   uint32_t dma_base_addr = (uint32_t)DMAx;
5527   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR, SrcAddress);
5528   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR, DestAddress);
5529 }
5530 
5531 /**
5532   * @brief Set source address.
5533   * @note  This API is used for all available DMA channels.
5534   * @rmtoll CSAR        SA         LL_DMA_SetSrcAddress
5535   * @param  DMAx DMAx Instance
5536   * @param  Channel This parameter can be one of the following values:
5537   *         @arg @ref LL_DMA_CHANNEL_0
5538   *         @arg @ref LL_DMA_CHANNEL_1
5539   *         @arg @ref LL_DMA_CHANNEL_2
5540   *         @arg @ref LL_DMA_CHANNEL_3
5541   *         @arg @ref LL_DMA_CHANNEL_4
5542   *         @arg @ref LL_DMA_CHANNEL_5
5543   *         @arg @ref LL_DMA_CHANNEL_6
5544   *         @arg @ref LL_DMA_CHANNEL_7
5545   *         @arg @ref LL_DMA_CHANNEL_8
5546   *         @arg @ref LL_DMA_CHANNEL_9
5547   *         @arg @ref LL_DMA_CHANNEL_10
5548   *         @arg @ref LL_DMA_CHANNEL_11
5549   *         @arg @ref LL_DMA_CHANNEL_12
5550   *         @arg @ref LL_DMA_CHANNEL_13
5551   *         @arg @ref LL_DMA_CHANNEL_14
5552   *         @arg @ref LL_DMA_CHANNEL_15
5553   * @param  SrcAddress Between 0 to 0xFFFFFFFF
5554   * @retval None.
5555   */
LL_DMA_SetSrcAddress(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddress)5556 __STATIC_INLINE void LL_DMA_SetSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress)
5557 {
5558   uint32_t dma_base_addr = (uint32_t)DMAx;
5559   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR, SrcAddress);
5560 }
5561 
5562 /**
5563   * @brief  Get source address.
5564   * @note  This API is used for all available DMA channels.
5565   * @rmtoll CSAR        SA         LL_DMA_GetSrcAddress
5566   * @param  DMAx DMAx Instance
5567   * @param  Channel This parameter can be one of the following values:
5568   *         @arg @ref LL_DMA_CHANNEL_0
5569   *         @arg @ref LL_DMA_CHANNEL_1
5570   *         @arg @ref LL_DMA_CHANNEL_2
5571   *         @arg @ref LL_DMA_CHANNEL_3
5572   *         @arg @ref LL_DMA_CHANNEL_4
5573   *         @arg @ref LL_DMA_CHANNEL_5
5574   *         @arg @ref LL_DMA_CHANNEL_6
5575   *         @arg @ref LL_DMA_CHANNEL_7
5576   *         @arg @ref LL_DMA_CHANNEL_8
5577   *         @arg @ref LL_DMA_CHANNEL_9
5578   *         @arg @ref LL_DMA_CHANNEL_10
5579   *         @arg @ref LL_DMA_CHANNEL_11
5580   *         @arg @ref LL_DMA_CHANNEL_12
5581   *         @arg @ref LL_DMA_CHANNEL_13
5582   *         @arg @ref LL_DMA_CHANNEL_14
5583   *         @arg @ref LL_DMA_CHANNEL_15
5584   * @retval Between 0 to 0xFFFFFFFF
5585   */
LL_DMA_GetSrcAddress(const DMA_TypeDef * DMAx,uint32_t Channel)5586 __STATIC_INLINE uint32_t LL_DMA_GetSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel)
5587 {
5588   uint32_t dma_base_addr = (uint32_t)DMAx;
5589   return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR));
5590 }
5591 
5592 /**
5593   * @brief  Set destination address.
5594   * @note  This API is used for all available DMA channels.
5595   * @rmtoll CDAR        DA         LL_DMA_SetDestAddress
5596   * @param  DMAx DMAx Instance
5597   * @param  Channel This parameter can be one of the following values:
5598   *         @arg @ref LL_DMA_CHANNEL_0
5599   *         @arg @ref LL_DMA_CHANNEL_1
5600   *         @arg @ref LL_DMA_CHANNEL_2
5601   *         @arg @ref LL_DMA_CHANNEL_3
5602   *         @arg @ref LL_DMA_CHANNEL_4
5603   *         @arg @ref LL_DMA_CHANNEL_5
5604   *         @arg @ref LL_DMA_CHANNEL_6
5605   *         @arg @ref LL_DMA_CHANNEL_7
5606   *         @arg @ref LL_DMA_CHANNEL_8
5607   *         @arg @ref LL_DMA_CHANNEL_9
5608   *         @arg @ref LL_DMA_CHANNEL_10
5609   *         @arg @ref LL_DMA_CHANNEL_11
5610   *         @arg @ref LL_DMA_CHANNEL_12
5611   *         @arg @ref LL_DMA_CHANNEL_13
5612   *         @arg @ref LL_DMA_CHANNEL_14
5613   *         @arg @ref LL_DMA_CHANNEL_15
5614   * @param  DestAddress Between 0 to 0xFFFFFFFF
5615   * @retval None.
5616   */
LL_DMA_SetDestAddress(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAddress)5617 __STATIC_INLINE void LL_DMA_SetDestAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddress)
5618 {
5619   uint32_t dma_base_addr = (uint32_t)DMAx;
5620   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR, DestAddress);
5621 }
5622 
5623 /**
5624   * @brief  Get destination address.
5625   * @note  This API is used for all available DMA channels.
5626   * @rmtoll CDAR        DA         LL_DMA_GetDestAddress
5627   * @param  DMAx DMAx Instance
5628   * @param  Channel This parameter can be one of the following values:
5629   *         @arg @ref LL_DMA_CHANNEL_0
5630   *         @arg @ref LL_DMA_CHANNEL_1
5631   *         @arg @ref LL_DMA_CHANNEL_2
5632   *         @arg @ref LL_DMA_CHANNEL_3
5633   *         @arg @ref LL_DMA_CHANNEL_4
5634   *         @arg @ref LL_DMA_CHANNEL_5
5635   *         @arg @ref LL_DMA_CHANNEL_6
5636   *         @arg @ref LL_DMA_CHANNEL_7
5637   *         @arg @ref LL_DMA_CHANNEL_8
5638   *         @arg @ref LL_DMA_CHANNEL_9
5639   *         @arg @ref LL_DMA_CHANNEL_10
5640   *         @arg @ref LL_DMA_CHANNEL_11
5641   *         @arg @ref LL_DMA_CHANNEL_12
5642   *         @arg @ref LL_DMA_CHANNEL_13
5643   *         @arg @ref LL_DMA_CHANNEL_14
5644   *         @arg @ref LL_DMA_CHANNEL_15
5645   * @retval Between 0 to 0xFFFFFFFF
5646   */
LL_DMA_GetDestAddress(const DMA_TypeDef * DMAx,uint32_t Channel)5647 __STATIC_INLINE uint32_t LL_DMA_GetDestAddress(const DMA_TypeDef *DMAx, uint32_t Channel)
5648 {
5649   uint32_t dma_base_addr = (uint32_t)DMAx;
5650   return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR));
5651 }
5652 
5653 /**
5654   * @brief Configure source and destination addresses offset.
5655   * @note  This API is used only for 2D addressing channels.
5656   * @note   This API must not be called when the DMA Channel is enabled.
5657   * @rmtoll CTR3        DAO          LL_DMA_ConfigAddrUpdateValue\n
5658   *         CTR3        SAO          LL_DMA_ConfigAddrUpdateValue
5659   * @param  DMAx DMAx Instance
5660   * @param  Channel This parameter can be one of the following values:
5661   *         @arg @ref LL_DMA_CHANNEL_12
5662   *         @arg @ref LL_DMA_CHANNEL_13
5663   *         @arg @ref LL_DMA_CHANNEL_14
5664   *         @arg @ref LL_DMA_CHANNEL_15
5665   * @param  DestAddrOffset Between 0 to 0x00001FFF
5666   * @param  SrcAddrOffset Between 0 to 0x00001FFF
5667   * @retval None.
5668   */
LL_DMA_ConfigAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddrOffset,uint32_t DestAddrOffset)5669 __STATIC_INLINE void LL_DMA_ConfigAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrOffset,
5670                                                   uint32_t DestAddrOffset)
5671 {
5672   uint32_t dma_base_addr = (uint32_t)DMAx;
5673   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3,
5674             (SrcAddrOffset  & DMA_CTR3_SAO) | ((DestAddrOffset << DMA_CTR3_DAO_Pos) & DMA_CTR3_DAO));
5675 }
5676 
5677 /**
5678   * @brief Set destination address offset.
5679   * @note  This API is used only for 2D addressing channels.
5680   * @rmtoll CTR3       DAO         LL_DMA_SetDestAddrUpdateValue
5681   * @param  DMAx DMAx Instance
5682   * @param  Channel This parameter can be one of the following values:
5683   *         @arg @ref LL_DMA_CHANNEL_12
5684   *         @arg @ref LL_DMA_CHANNEL_13
5685   *         @arg @ref LL_DMA_CHANNEL_14
5686   *         @arg @ref LL_DMA_CHANNEL_15
5687   * @param  DestAddrOffset Between 0 to 0x00001FFF
5688   * @retval None.
5689   */
LL_DMA_SetDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAddrOffset)5690 __STATIC_INLINE void LL_DMA_SetDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddrOffset)
5691 {
5692   uint32_t dma_base_addr = (uint32_t)DMAx;
5693   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_DAO,
5694              ((DestAddrOffset << DMA_CTR3_DAO_Pos) & DMA_CTR3_DAO));
5695 }
5696 
5697 /**
5698   * @brief Get destination address offset.
5699   * @note  This API is used only for 2D addressing channels.
5700   * @rmtoll CDAR        DAO         LL_DMA_GetDestAddrUpdateValue
5701   * @param  DMAx DMAx Instance
5702   * @param  Channel This parameter can be one of the following values:
5703   *         @arg @ref LL_DMA_CHANNEL_12
5704   *         @arg @ref LL_DMA_CHANNEL_13
5705   *         @arg @ref LL_DMA_CHANNEL_14
5706   *         @arg @ref LL_DMA_CHANNEL_15
5707   * @retval Between 0 to 0x00001FFF
5708   */
LL_DMA_GetDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)5709 __STATIC_INLINE uint32_t LL_DMA_GetDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
5710 {
5711   uint32_t dma_base_addr = (uint32_t)DMAx;
5712   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3,
5713                    DMA_CTR3_DAO) >> DMA_CTR3_DAO_Pos);
5714 }
5715 
5716 /**
5717   * @brief Set source address offset.
5718   * @note  This API is used only for 2D addressing channels.
5719   * @rmtoll CTR3        SAO         LL_DMA_SetSrcAddrUpdateValue
5720   * @param  DMAx DMAx Instance
5721   * @param  Channel This parameter can be one of the following values:
5722   *         @arg @ref LL_DMA_CHANNEL_12
5723   *         @arg @ref LL_DMA_CHANNEL_13
5724   *         @arg @ref LL_DMA_CHANNEL_14
5725   *         @arg @ref LL_DMA_CHANNEL_15
5726   * @param  SrcAddrOffset Between 0 to 0x00001FFF
5727   * @retval None.
5728   */
LL_DMA_SetSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddrOffset)5729 __STATIC_INLINE void LL_DMA_SetSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrOffset)
5730 {
5731   uint32_t dma_base_addr = (uint32_t)DMAx;
5732   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_SAO,
5733              SrcAddrOffset & DMA_CTR3_SAO);
5734 }
5735 
5736 /**
5737   * @brief Get source address offset.
5738   * @note  This API is used only for 2D addressing channels.
5739   * @rmtoll CTR3        SAO         LL_DMA_GetSrcAddrUpdateValue
5740   * @param  DMAx DMAx Instance
5741   * @param  Channel This parameter can be one of the following values:
5742   *         @arg @ref LL_DMA_CHANNEL_12
5743   *         @arg @ref LL_DMA_CHANNEL_13
5744   *         @arg @ref LL_DMA_CHANNEL_14
5745   *         @arg @ref LL_DMA_CHANNEL_15
5746   * @retval Between 0 to 0x00001FFF
5747   */
LL_DMA_GetSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)5748 __STATIC_INLINE uint32_t LL_DMA_GetSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
5749 {
5750   uint32_t dma_base_addr = (uint32_t)DMAx;
5751   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_SAO));
5752 }
5753 
5754 /**
5755   * @brief Configure the block repeated source and destination addresses offset.
5756   * @note  This API is used only for 2D addressing channels.
5757   * @note   This API must not be called when the DMA Channel is enabled.
5758   * @rmtoll CBR2        BRDAO          LL_DMA_ConfigBlkRptAddrUpdateValue\n
5759   *         CBR2        BRSAO          LL_DMA_ConfigBlkRptAddrUpdateValue
5760   * @param  DMAx DMAx Instance
5761   * @param  Channel This parameter can be one of the following values:
5762   *         @arg @ref LL_DMA_CHANNEL_12
5763   *         @arg @ref LL_DMA_CHANNEL_13
5764   *         @arg @ref LL_DMA_CHANNEL_14
5765   *         @arg @ref LL_DMA_CHANNEL_15
5766   * @param  BlkRptDestAddrOffset Between 0 to 0x0000FFFF
5767   * @param  BlkRptSrcAddrOffset Between 0 to 0x0000FFFF
5768   * @retval None.
5769   */
LL_DMA_ConfigBlkRptAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptSrcAddrOffset,uint32_t BlkRptDestAddrOffset)5770 __STATIC_INLINE void LL_DMA_ConfigBlkRptAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
5771                                                         uint32_t BlkRptSrcAddrOffset, uint32_t BlkRptDestAddrOffset)
5772 {
5773   uint32_t dma_base_addr = (uint32_t)DMAx;
5774   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2,
5775             ((BlkRptDestAddrOffset << DMA_CBR2_BRDAO_Pos) & DMA_CBR2_BRDAO) | (BlkRptSrcAddrOffset  & DMA_CBR2_BRSAO));
5776 }
5777 
5778 /**
5779   * @brief Set block repeated destination address offset.
5780   * @note  This API is used only for 2D addressing channels.
5781   * @rmtoll CBR2       BRDAO         LL_DMA_SetBlkRptDestAddrUpdateValue
5782   * @param  DMAx DMAx Instance
5783   * @param  Channel This parameter can be one of the following values:
5784   *         @arg @ref LL_DMA_CHANNEL_12
5785   *         @arg @ref LL_DMA_CHANNEL_13
5786   *         @arg @ref LL_DMA_CHANNEL_14
5787   *         @arg @ref LL_DMA_CHANNEL_15
5788   * @param  BlkRptDestAddrOffset Between 0 to 0x0000FFFF
5789   * @retval None.
5790   */
LL_DMA_SetBlkRptDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptDestAddrOffset)5791 __STATIC_INLINE void LL_DMA_SetBlkRptDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
5792                                                          uint32_t BlkRptDestAddrOffset)
5793 {
5794   uint32_t dma_base_addr = (uint32_t)DMAx;
5795   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRDAO,
5796              ((BlkRptDestAddrOffset << DMA_CBR2_BRDAO_Pos) & DMA_CBR2_BRDAO));
5797 }
5798 
5799 /**
5800   * @brief Get block repeated destination address offset.
5801   * @note  This API is used only for 2D addressing channels.
5802   * @rmtoll CBR2        BRDAO         LL_DMA_GetBlkRptDestAddrUpdateValue
5803   * @param  DMAx DMAx Instance
5804   * @param  Channel This parameter can be one of the following values:
5805   *         @arg @ref LL_DMA_CHANNEL_12
5806   *         @arg @ref LL_DMA_CHANNEL_13
5807   *         @arg @ref LL_DMA_CHANNEL_14
5808   *         @arg @ref LL_DMA_CHANNEL_15
5809   * @retval Between 0 to 0x0000FFFF.
5810   */
LL_DMA_GetBlkRptDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)5811 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
5812 {
5813   uint32_t dma_base_addr = (uint32_t)DMAx;
5814   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2,
5815                    DMA_CBR2_BRDAO) >> DMA_CBR2_BRDAO_Pos);
5816 }
5817 
5818 /**
5819   * @brief Set block repeated source address offset.
5820   * @note  This API is used only for 2D addressing channels.
5821   * @rmtoll CBR2        BRSAO         LL_DMA_SetBlkRptSrcAddrUpdateValue
5822   * @param  DMAx DMAx Instance
5823   * @param  Channel This parameter can be one of the following values:
5824   *         @arg @ref LL_DMA_CHANNEL_12
5825   *         @arg @ref LL_DMA_CHANNEL_13
5826   *         @arg @ref LL_DMA_CHANNEL_14
5827   *         @arg @ref LL_DMA_CHANNEL_15
5828   * @param  BlkRptSrcAddrOffset Between 0 to 0x0000FFFF
5829   * @retval None.
5830   */
LL_DMA_SetBlkRptSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptSrcAddrOffset)5831 __STATIC_INLINE void LL_DMA_SetBlkRptSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
5832                                                         uint32_t BlkRptSrcAddrOffset)
5833 {
5834   uint32_t dma_base_addr = (uint32_t)DMAx;
5835   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRSAO,
5836              BlkRptSrcAddrOffset);
5837 }
5838 
5839 /**
5840   * @brief Get block repeated source address offset.
5841   * @note  This API is used only for 2D addressing channels.
5842   * @rmtoll CBR2        BRSAO         LL_DMA_GetBlkRptSrcAddrUpdateValue
5843   * @param  DMAx DMAx Instance
5844   * @param  Channel This parameter can be one of the following values:
5845   *         @arg @ref LL_DMA_CHANNEL_12
5846   *         @arg @ref LL_DMA_CHANNEL_13
5847   *         @arg @ref LL_DMA_CHANNEL_14
5848   *         @arg @ref LL_DMA_CHANNEL_15
5849   * @retval Between 0 to 0x0000FFFF
5850   */
LL_DMA_GetBlkRptSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)5851 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
5852 {
5853   uint32_t dma_base_addr = (uint32_t)DMAx;
5854   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRSAO));
5855 }
5856 
5857 /**
5858   * @brief Configure registers update and node address offset during the link transfer.
5859   * @note  This API is used for all available DMA channels.
5860   *        For linear addressing channels, UT3 and UB2 fields are discarded.
5861   * @rmtoll CLLR          UT1            LL_DMA_ConfigLinkUpdate\n
5862   * @rmtoll CLLR          UT2            LL_DMA_ConfigLinkUpdate\n
5863   * @rmtoll CLLR          UB1            LL_DMA_ConfigLinkUpdate\n
5864   * @rmtoll CLLR          USA            LL_DMA_ConfigLinkUpdate\n
5865   * @rmtoll CLLR          UDA            LL_DMA_ConfigLinkUpdate\n
5866   * @rmtoll CLLR          UT3            LL_DMA_ConfigLinkUpdate\n
5867   * @rmtoll CLLR          UB2            LL_DMA_ConfigLinkUpdate\n
5868   * @rmtoll CLLR          ULL            LL_DMA_ConfigLinkUpdate
5869   * @param  DMAx DMAx Instance
5870   * @param  Channel This parameter can be one of the following values:
5871   *         @arg @ref LL_DMA_CHANNEL_0
5872   *         @arg @ref LL_DMA_CHANNEL_1
5873   *         @arg @ref LL_DMA_CHANNEL_2
5874   *         @arg @ref LL_DMA_CHANNEL_3
5875   *         @arg @ref LL_DMA_CHANNEL_4
5876   *         @arg @ref LL_DMA_CHANNEL_5
5877   *         @arg @ref LL_DMA_CHANNEL_6
5878   *         @arg @ref LL_DMA_CHANNEL_7
5879   *         @arg @ref LL_DMA_CHANNEL_8
5880   *         @arg @ref LL_DMA_CHANNEL_9
5881   *         @arg @ref LL_DMA_CHANNEL_10
5882   *         @arg @ref LL_DMA_CHANNEL_11
5883   *         @arg @ref LL_DMA_CHANNEL_12
5884   *         @arg @ref LL_DMA_CHANNEL_13
5885   *         @arg @ref LL_DMA_CHANNEL_14
5886   *         @arg @ref LL_DMA_CHANNEL_15
5887   * @param  RegistersUpdate This parameter must be a combination of all the following values:
5888   *         @arg @ref LL_DMA_UPDATE_CTR1
5889   *         @arg @ref LL_DMA_UPDATE_CTR2
5890   *         @arg @ref LL_DMA_UPDATE_CBR1
5891   *         @arg @ref LL_DMA_UPDATE_CSAR
5892   *         @arg @ref LL_DMA_UPDATE_CDAR
5893   *         @arg @ref LL_DMA_UPDATE_CTR3  (This value is allowed only for 2D addressing channels)
5894   *         @arg @ref LL_DMA_UPDATE_CBR2  (This value is allowed only for 2D addressing channels)
5895   *         @arg @ref LL_DMA_UPDATE_CLLR
5896   * @param  LinkedListAddrOffset Between 0 to 0x0000FFFC by increment of 4 Bytes.
5897   * @retval None.
5898   */
LL_DMA_ConfigLinkUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t RegistersUpdate,uint32_t LinkedListAddrOffset)5899 __STATIC_INLINE void LL_DMA_ConfigLinkUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t RegistersUpdate,
5900                                              uint32_t LinkedListAddrOffset)
5901 {
5902   uint32_t dma_base_addr = (uint32_t)DMAx;
5903   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR,
5904              (DMA_CLLR_UT1 | DMA_CLLR_UT2 | DMA_CLLR_UB1 | DMA_CLLR_USA | DMA_CLLR_UDA | DMA_CLLR_UT3 | \
5905               DMA_CLLR_UB2 | DMA_CLLR_ULL | DMA_CLLR_LA), (RegistersUpdate | (LinkedListAddrOffset & DMA_CLLR_LA)));
5906 }
5907 
5908 /**
5909   * @brief Enable CTR1 update during the link transfer.
5910   * @note  This API is used for all available DMA channels.
5911   * @rmtoll CLLR          UT1            LL_DMA_EnableCTR1Update
5912   * @param  DMAx DMAx Instance
5913   * @param  Channel This parameter can be one of the following values:
5914   *         @arg @ref LL_DMA_CHANNEL_0
5915   *         @arg @ref LL_DMA_CHANNEL_1
5916   *         @arg @ref LL_DMA_CHANNEL_2
5917   *         @arg @ref LL_DMA_CHANNEL_3
5918   *         @arg @ref LL_DMA_CHANNEL_4
5919   *         @arg @ref LL_DMA_CHANNEL_5
5920   *         @arg @ref LL_DMA_CHANNEL_6
5921   *         @arg @ref LL_DMA_CHANNEL_7
5922   *         @arg @ref LL_DMA_CHANNEL_8
5923   *         @arg @ref LL_DMA_CHANNEL_9
5924   *         @arg @ref LL_DMA_CHANNEL_10
5925   *         @arg @ref LL_DMA_CHANNEL_11
5926   *         @arg @ref LL_DMA_CHANNEL_12
5927   *         @arg @ref LL_DMA_CHANNEL_13
5928   *         @arg @ref LL_DMA_CHANNEL_14
5929   *         @arg @ref LL_DMA_CHANNEL_15
5930   * @retval None.
5931   */
LL_DMA_EnableCTR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)5932 __STATIC_INLINE void LL_DMA_EnableCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5933 {
5934   uint32_t dma_base_addr = (uint32_t)DMAx;
5935   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1);
5936 }
5937 
5938 /**
5939   * @brief Disable CTR1 update during the link transfer.
5940   * @note  This API is used for all available DMA channels.
5941   * @rmtoll CLLR          UT1            LL_DMA_DisableCTR1Update
5942   * @param  DMAx DMAx Instance
5943   * @param  Channel This parameter can be one of the following values:
5944   *         @arg @ref LL_DMA_CHANNEL_0
5945   *         @arg @ref LL_DMA_CHANNEL_1
5946   *         @arg @ref LL_DMA_CHANNEL_2
5947   *         @arg @ref LL_DMA_CHANNEL_3
5948   *         @arg @ref LL_DMA_CHANNEL_4
5949   *         @arg @ref LL_DMA_CHANNEL_5
5950   *         @arg @ref LL_DMA_CHANNEL_6
5951   *         @arg @ref LL_DMA_CHANNEL_7
5952   *         @arg @ref LL_DMA_CHANNEL_8
5953   *         @arg @ref LL_DMA_CHANNEL_9
5954   *         @arg @ref LL_DMA_CHANNEL_10
5955   *         @arg @ref LL_DMA_CHANNEL_11
5956   *         @arg @ref LL_DMA_CHANNEL_12
5957   *         @arg @ref LL_DMA_CHANNEL_13
5958   *         @arg @ref LL_DMA_CHANNEL_14
5959   *         @arg @ref LL_DMA_CHANNEL_15
5960   * @retval None.
5961   */
LL_DMA_DisableCTR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)5962 __STATIC_INLINE void LL_DMA_DisableCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5963 {
5964   uint32_t dma_base_addr = (uint32_t)DMAx;
5965   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1);
5966 }
5967 
5968 /**
5969   * @brief Check if CTR1 update during the link transfer is enabled.
5970   * @note  This API is used for all available DMA channels.
5971   * @rmtoll CLLR          UT1            LL_DMA_IsEnabledCTR1Update
5972   * @param  DMAx DMAx Instance
5973   * @param  Channel This parameter can be one of the following values:
5974   *         @arg @ref LL_DMA_CHANNEL_0
5975   *         @arg @ref LL_DMA_CHANNEL_1
5976   *         @arg @ref LL_DMA_CHANNEL_2
5977   *         @arg @ref LL_DMA_CHANNEL_3
5978   *         @arg @ref LL_DMA_CHANNEL_4
5979   *         @arg @ref LL_DMA_CHANNEL_5
5980   *         @arg @ref LL_DMA_CHANNEL_6
5981   *         @arg @ref LL_DMA_CHANNEL_7
5982   *         @arg @ref LL_DMA_CHANNEL_8
5983   *         @arg @ref LL_DMA_CHANNEL_9
5984   *         @arg @ref LL_DMA_CHANNEL_10
5985   *         @arg @ref LL_DMA_CHANNEL_11
5986   *         @arg @ref LL_DMA_CHANNEL_12
5987   *         @arg @ref LL_DMA_CHANNEL_13
5988   *         @arg @ref LL_DMA_CHANNEL_14
5989   *         @arg @ref LL_DMA_CHANNEL_15
5990   * @retval State of bit (1 or 0).
5991   */
LL_DMA_IsEnabledCTR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)5992 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5993 {
5994   uint32_t dma_base_addr = (uint32_t)DMAx;
5995   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1)
5996            == (DMA_CLLR_UT1)) ? 1UL : 0UL);
5997 }
5998 
5999 /**
6000   * @brief Enable CTR2 update during the link transfer.
6001   * @note  This API is used for all available DMA channels.
6002   * @rmtoll CLLR          UT2            LL_DMA_EnableCTR2Update
6003   * @param  DMAx DMAx Instance
6004   * @param  Channel This parameter can be one of the following values:
6005   *         @arg @ref LL_DMA_CHANNEL_0
6006   *         @arg @ref LL_DMA_CHANNEL_1
6007   *         @arg @ref LL_DMA_CHANNEL_2
6008   *         @arg @ref LL_DMA_CHANNEL_3
6009   *         @arg @ref LL_DMA_CHANNEL_4
6010   *         @arg @ref LL_DMA_CHANNEL_5
6011   *         @arg @ref LL_DMA_CHANNEL_6
6012   *         @arg @ref LL_DMA_CHANNEL_7
6013   *         @arg @ref LL_DMA_CHANNEL_8
6014   *         @arg @ref LL_DMA_CHANNEL_9
6015   *         @arg @ref LL_DMA_CHANNEL_10
6016   *         @arg @ref LL_DMA_CHANNEL_11
6017   *         @arg @ref LL_DMA_CHANNEL_12
6018   *         @arg @ref LL_DMA_CHANNEL_13
6019   *         @arg @ref LL_DMA_CHANNEL_14
6020   *         @arg @ref LL_DMA_CHANNEL_15
6021   * @retval None.
6022   */
LL_DMA_EnableCTR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)6023 __STATIC_INLINE void LL_DMA_EnableCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6024 {
6025   uint32_t dma_base_addr = (uint32_t)DMAx;
6026   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2);
6027 }
6028 
6029 /**
6030   * @brief Disable CTR2 update during the link transfer.
6031   * @note  This API is used for all available DMA channels.
6032   * @rmtoll CLLR          UT2            LL_DMA_DisableCTR2Update
6033   * @param  DMAx DMAx Instance
6034   * @param  Channel This parameter can be one of the following values:
6035   *         @arg @ref LL_DMA_CHANNEL_0
6036   *         @arg @ref LL_DMA_CHANNEL_1
6037   *         @arg @ref LL_DMA_CHANNEL_2
6038   *         @arg @ref LL_DMA_CHANNEL_3
6039   *         @arg @ref LL_DMA_CHANNEL_4
6040   *         @arg @ref LL_DMA_CHANNEL_5
6041   *         @arg @ref LL_DMA_CHANNEL_6
6042   *         @arg @ref LL_DMA_CHANNEL_7
6043   *         @arg @ref LL_DMA_CHANNEL_8
6044   *         @arg @ref LL_DMA_CHANNEL_9
6045   *         @arg @ref LL_DMA_CHANNEL_10
6046   *         @arg @ref LL_DMA_CHANNEL_11
6047   *         @arg @ref LL_DMA_CHANNEL_12
6048   *         @arg @ref LL_DMA_CHANNEL_13
6049   *         @arg @ref LL_DMA_CHANNEL_14
6050   *         @arg @ref LL_DMA_CHANNEL_15
6051   * @retval None.
6052   */
LL_DMA_DisableCTR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)6053 __STATIC_INLINE void LL_DMA_DisableCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6054 {
6055   uint32_t dma_base_addr = (uint32_t)DMAx;
6056   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2);
6057 }
6058 
6059 /**
6060   * @brief Check if CTR2 update during the link transfer is enabled.
6061   * @note  This API is used for all available DMA channels.
6062   * @rmtoll CLLR          UT2            LL_DMA_IsEnabledCTR2Update
6063   * @param  DMAx DMAx Instance
6064   * @param  Channel This parameter can be one of the following values:
6065   *         @arg @ref LL_DMA_CHANNEL_0
6066   *         @arg @ref LL_DMA_CHANNEL_1
6067   *         @arg @ref LL_DMA_CHANNEL_2
6068   *         @arg @ref LL_DMA_CHANNEL_3
6069   *         @arg @ref LL_DMA_CHANNEL_4
6070   *         @arg @ref LL_DMA_CHANNEL_5
6071   *         @arg @ref LL_DMA_CHANNEL_6
6072   *         @arg @ref LL_DMA_CHANNEL_7
6073   *         @arg @ref LL_DMA_CHANNEL_8
6074   *         @arg @ref LL_DMA_CHANNEL_9
6075   *         @arg @ref LL_DMA_CHANNEL_10
6076   *         @arg @ref LL_DMA_CHANNEL_11
6077   *         @arg @ref LL_DMA_CHANNEL_12
6078   *         @arg @ref LL_DMA_CHANNEL_13
6079   *         @arg @ref LL_DMA_CHANNEL_14
6080   *         @arg @ref LL_DMA_CHANNEL_15
6081   * @retval State of bit (1 or 0).
6082   */
LL_DMA_IsEnabledCTR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)6083 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6084 {
6085   uint32_t dma_base_addr = (uint32_t)DMAx;
6086   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2)
6087            == (DMA_CLLR_UT2)) ? 1UL : 0UL);
6088 }
6089 
6090 /**
6091   * @brief Enable CBR1 update during the link transfer.
6092   * @note  This API is used for all available DMA channels.
6093   * @rmtoll CLLR          UB1            LL_DMA_EnableCBR1Update
6094   * @param  DMAx DMAx Instance
6095   * @param  Channel This parameter can be one of the following values:
6096   *         @arg @ref LL_DMA_CHANNEL_0
6097   *         @arg @ref LL_DMA_CHANNEL_1
6098   *         @arg @ref LL_DMA_CHANNEL_2
6099   *         @arg @ref LL_DMA_CHANNEL_3
6100   *         @arg @ref LL_DMA_CHANNEL_4
6101   *         @arg @ref LL_DMA_CHANNEL_5
6102   *         @arg @ref LL_DMA_CHANNEL_6
6103   *         @arg @ref LL_DMA_CHANNEL_7
6104   *         @arg @ref LL_DMA_CHANNEL_8
6105   *         @arg @ref LL_DMA_CHANNEL_9
6106   *         @arg @ref LL_DMA_CHANNEL_10
6107   *         @arg @ref LL_DMA_CHANNEL_11
6108   *         @arg @ref LL_DMA_CHANNEL_12
6109   *         @arg @ref LL_DMA_CHANNEL_13
6110   *         @arg @ref LL_DMA_CHANNEL_14
6111   *         @arg @ref LL_DMA_CHANNEL_15
6112   * @retval None.
6113   */
LL_DMA_EnableCBR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)6114 __STATIC_INLINE void LL_DMA_EnableCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6115 {
6116   uint32_t dma_base_addr = (uint32_t)DMAx;
6117   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1);
6118 }
6119 
6120 /**
6121   * @brief Disable CBR1 update during the link transfer.
6122   * @note  This API is used for all available DMA channels.
6123   * @rmtoll CLLR          UB1            LL_DMA_DisableCBR1Update
6124   * @param  DMAx DMAx Instance
6125   * @param  Channel This parameter can be one of the following values:
6126   *         @arg @ref LL_DMA_CHANNEL_0
6127   *         @arg @ref LL_DMA_CHANNEL_1
6128   *         @arg @ref LL_DMA_CHANNEL_2
6129   *         @arg @ref LL_DMA_CHANNEL_3
6130   *         @arg @ref LL_DMA_CHANNEL_4
6131   *         @arg @ref LL_DMA_CHANNEL_5
6132   *         @arg @ref LL_DMA_CHANNEL_6
6133   *         @arg @ref LL_DMA_CHANNEL_7
6134   *         @arg @ref LL_DMA_CHANNEL_8
6135   *         @arg @ref LL_DMA_CHANNEL_9
6136   *         @arg @ref LL_DMA_CHANNEL_10
6137   *         @arg @ref LL_DMA_CHANNEL_11
6138   *         @arg @ref LL_DMA_CHANNEL_12
6139   *         @arg @ref LL_DMA_CHANNEL_13
6140   *         @arg @ref LL_DMA_CHANNEL_14
6141   *         @arg @ref LL_DMA_CHANNEL_15
6142   * @retval None.
6143   */
LL_DMA_DisableCBR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)6144 __STATIC_INLINE void LL_DMA_DisableCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6145 {
6146   uint32_t dma_base_addr = (uint32_t)DMAx;
6147   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1);
6148 }
6149 
6150 /**
6151   * @brief Check if CBR1 update during the link transfer is enabled.
6152   * @note  This API is used for all available DMA channels.
6153   * @rmtoll CLLR          UB1            LL_DMA_IsEnabledCBR1Update
6154   * @param  DMAx DMAx Instance
6155   * @param  Channel This parameter can be one of the following values:
6156   *         @arg @ref LL_DMA_CHANNEL_0
6157   *         @arg @ref LL_DMA_CHANNEL_1
6158   *         @arg @ref LL_DMA_CHANNEL_2
6159   *         @arg @ref LL_DMA_CHANNEL_3
6160   *         @arg @ref LL_DMA_CHANNEL_4
6161   *         @arg @ref LL_DMA_CHANNEL_5
6162   *         @arg @ref LL_DMA_CHANNEL_6
6163   *         @arg @ref LL_DMA_CHANNEL_7
6164   *         @arg @ref LL_DMA_CHANNEL_8
6165   *         @arg @ref LL_DMA_CHANNEL_9
6166   *         @arg @ref LL_DMA_CHANNEL_10
6167   *         @arg @ref LL_DMA_CHANNEL_11
6168   *         @arg @ref LL_DMA_CHANNEL_12
6169   *         @arg @ref LL_DMA_CHANNEL_13
6170   *         @arg @ref LL_DMA_CHANNEL_14
6171   *         @arg @ref LL_DMA_CHANNEL_15
6172   * @retval State of bit (1 or 0).
6173   */
LL_DMA_IsEnabledCBR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)6174 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6175 {
6176   uint32_t dma_base_addr = (uint32_t)DMAx;
6177   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1)
6178            == (DMA_CLLR_UB1)) ? 1UL : 0UL);
6179 }
6180 
6181 /**
6182   * @brief Enable CSAR update during the link transfer.
6183   * @note  This API is used for all available DMA channels.
6184   * @rmtoll CLLR          USA            LL_DMA_EnableCSARUpdate
6185   * @param  DMAx DMAx Instance
6186   * @param  Channel This parameter can be one of the following values:
6187   *         @arg @ref LL_DMA_CHANNEL_0
6188   *         @arg @ref LL_DMA_CHANNEL_1
6189   *         @arg @ref LL_DMA_CHANNEL_2
6190   *         @arg @ref LL_DMA_CHANNEL_3
6191   *         @arg @ref LL_DMA_CHANNEL_4
6192   *         @arg @ref LL_DMA_CHANNEL_5
6193   *         @arg @ref LL_DMA_CHANNEL_6
6194   *         @arg @ref LL_DMA_CHANNEL_7
6195   *         @arg @ref LL_DMA_CHANNEL_8
6196   *         @arg @ref LL_DMA_CHANNEL_9
6197   *         @arg @ref LL_DMA_CHANNEL_10
6198   *         @arg @ref LL_DMA_CHANNEL_11
6199   *         @arg @ref LL_DMA_CHANNEL_12
6200   *         @arg @ref LL_DMA_CHANNEL_13
6201   *         @arg @ref LL_DMA_CHANNEL_14
6202   *         @arg @ref LL_DMA_CHANNEL_15
6203   * @retval None.
6204   */
LL_DMA_EnableCSARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6205 __STATIC_INLINE void LL_DMA_EnableCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6206 {
6207   uint32_t dma_base_addr = (uint32_t)DMAx;
6208   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA);
6209 }
6210 
6211 /**
6212   * @brief Disable CSAR update during the link transfer.
6213   * @note  This API is used for all available DMA channels.
6214   * @rmtoll CLLR          USA            LL_DMA_DisableCSARUpdate
6215   * @param  DMAx DMAx Instance
6216   * @param  Channel This parameter can be one of the following values:
6217   *         @arg @ref LL_DMA_CHANNEL_0
6218   *         @arg @ref LL_DMA_CHANNEL_1
6219   *         @arg @ref LL_DMA_CHANNEL_2
6220   *         @arg @ref LL_DMA_CHANNEL_3
6221   *         @arg @ref LL_DMA_CHANNEL_4
6222   *         @arg @ref LL_DMA_CHANNEL_5
6223   *         @arg @ref LL_DMA_CHANNEL_6
6224   *         @arg @ref LL_DMA_CHANNEL_7
6225   *         @arg @ref LL_DMA_CHANNEL_8
6226   *         @arg @ref LL_DMA_CHANNEL_9
6227   *         @arg @ref LL_DMA_CHANNEL_10
6228   *         @arg @ref LL_DMA_CHANNEL_11
6229   *         @arg @ref LL_DMA_CHANNEL_12
6230   *         @arg @ref LL_DMA_CHANNEL_13
6231   *         @arg @ref LL_DMA_CHANNEL_14
6232   *         @arg @ref LL_DMA_CHANNEL_15
6233   * @retval None.
6234   */
LL_DMA_DisableCSARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6235 __STATIC_INLINE void LL_DMA_DisableCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6236 {
6237   uint32_t dma_base_addr = (uint32_t)DMAx;
6238   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA);
6239 }
6240 
6241 /**
6242   * @brief Check if CSAR update during the link transfer is enabled.
6243   * @note  This API is used for all available DMA channels.
6244   * @rmtoll CLLR          USA            LL_DMA_IsEnabledCSARUpdate
6245   * @param  DMAx DMAx Instance
6246   * @param  Channel This parameter can be one of the following values:
6247   *         @arg @ref LL_DMA_CHANNEL_0
6248   *         @arg @ref LL_DMA_CHANNEL_1
6249   *         @arg @ref LL_DMA_CHANNEL_2
6250   *         @arg @ref LL_DMA_CHANNEL_3
6251   *         @arg @ref LL_DMA_CHANNEL_4
6252   *         @arg @ref LL_DMA_CHANNEL_5
6253   *         @arg @ref LL_DMA_CHANNEL_6
6254   *         @arg @ref LL_DMA_CHANNEL_7
6255   *         @arg @ref LL_DMA_CHANNEL_8
6256   *         @arg @ref LL_DMA_CHANNEL_9
6257   *         @arg @ref LL_DMA_CHANNEL_10
6258   *         @arg @ref LL_DMA_CHANNEL_11
6259   *         @arg @ref LL_DMA_CHANNEL_12
6260   *         @arg @ref LL_DMA_CHANNEL_13
6261   *         @arg @ref LL_DMA_CHANNEL_14
6262   *         @arg @ref LL_DMA_CHANNEL_15
6263   * @retval State of bit (1 or 0).
6264   */
LL_DMA_IsEnabledCSARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6265 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6266 {
6267   uint32_t dma_base_addr = (uint32_t)DMAx;
6268   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA)
6269            == (DMA_CLLR_USA)) ? 1UL : 0UL);
6270 }
6271 
6272 /**
6273   * @brief Enable CDAR update during the link transfer.
6274   * @note  This API is used for all available DMA channels.
6275   * @rmtoll CLLR          UDA            LL_DMA_EnableCDARUpdate
6276   * @param  DMAx DMAx Instance
6277   * @param  Channel This parameter can be one of the following values:
6278   *         @arg @ref LL_DMA_CHANNEL_0
6279   *         @arg @ref LL_DMA_CHANNEL_1
6280   *         @arg @ref LL_DMA_CHANNEL_2
6281   *         @arg @ref LL_DMA_CHANNEL_3
6282   *         @arg @ref LL_DMA_CHANNEL_4
6283   *         @arg @ref LL_DMA_CHANNEL_5
6284   *         @arg @ref LL_DMA_CHANNEL_6
6285   *         @arg @ref LL_DMA_CHANNEL_7
6286   *         @arg @ref LL_DMA_CHANNEL_8
6287   *         @arg @ref LL_DMA_CHANNEL_9
6288   *         @arg @ref LL_DMA_CHANNEL_10
6289   *         @arg @ref LL_DMA_CHANNEL_11
6290   *         @arg @ref LL_DMA_CHANNEL_12
6291   *         @arg @ref LL_DMA_CHANNEL_13
6292   *         @arg @ref LL_DMA_CHANNEL_14
6293   *         @arg @ref LL_DMA_CHANNEL_15
6294   * @retval None.
6295   */
LL_DMA_EnableCDARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6296 __STATIC_INLINE void LL_DMA_EnableCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6297 {
6298   uint32_t dma_base_addr = (uint32_t)DMAx;
6299   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA);
6300 }
6301 
6302 /**
6303   * @brief Disable CDAR update during the link transfer.
6304   * @note  This API is used for all available DMA channels.
6305   * @rmtoll CLLR          UDA            LL_DMA_DisableCDARUpdate
6306   * @param  DMAx DMAx Instance
6307   * @param  Channel This parameter can be one of the following values:
6308   *         @arg @ref LL_DMA_CHANNEL_0
6309   *         @arg @ref LL_DMA_CHANNEL_1
6310   *         @arg @ref LL_DMA_CHANNEL_2
6311   *         @arg @ref LL_DMA_CHANNEL_3
6312   *         @arg @ref LL_DMA_CHANNEL_4
6313   *         @arg @ref LL_DMA_CHANNEL_5
6314   *         @arg @ref LL_DMA_CHANNEL_6
6315   *         @arg @ref LL_DMA_CHANNEL_7
6316   *         @arg @ref LL_DMA_CHANNEL_8
6317   *         @arg @ref LL_DMA_CHANNEL_9
6318   *         @arg @ref LL_DMA_CHANNEL_10
6319   *         @arg @ref LL_DMA_CHANNEL_11
6320   *         @arg @ref LL_DMA_CHANNEL_12
6321   *         @arg @ref LL_DMA_CHANNEL_13
6322   *         @arg @ref LL_DMA_CHANNEL_14
6323   *         @arg @ref LL_DMA_CHANNEL_15
6324   * @retval None.
6325   */
LL_DMA_DisableCDARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6326 __STATIC_INLINE void LL_DMA_DisableCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6327 {
6328   uint32_t dma_base_addr = (uint32_t)DMAx;
6329   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA);
6330 }
6331 
6332 /**
6333   * @brief Check if CDAR update during the link transfer is enabled.
6334   * @note  This API is used for all available DMA channels.
6335   * @rmtoll CLLR          UDA            LL_DMA_IsEnabledCDARUpdate
6336   * @param  DMAx DMAx Instance
6337   * @param  Channel This parameter can be one of the following values:
6338   *         @arg @ref LL_DMA_CHANNEL_0
6339   *         @arg @ref LL_DMA_CHANNEL_1
6340   *         @arg @ref LL_DMA_CHANNEL_2
6341   *         @arg @ref LL_DMA_CHANNEL_3
6342   *         @arg @ref LL_DMA_CHANNEL_4
6343   *         @arg @ref LL_DMA_CHANNEL_5
6344   *         @arg @ref LL_DMA_CHANNEL_6
6345   *         @arg @ref LL_DMA_CHANNEL_7
6346   *         @arg @ref LL_DMA_CHANNEL_8
6347   *         @arg @ref LL_DMA_CHANNEL_9
6348   *         @arg @ref LL_DMA_CHANNEL_10
6349   *         @arg @ref LL_DMA_CHANNEL_11
6350   *         @arg @ref LL_DMA_CHANNEL_12
6351   *         @arg @ref LL_DMA_CHANNEL_13
6352   *         @arg @ref LL_DMA_CHANNEL_14
6353   *         @arg @ref LL_DMA_CHANNEL_15
6354   * @retval State of bit (1 or 0).
6355   */
LL_DMA_IsEnabledCDARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6356 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6357 {
6358   uint32_t dma_base_addr = (uint32_t)DMAx;
6359   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA)
6360            == (DMA_CLLR_UDA)) ? 1UL : 0UL);
6361 }
6362 
6363 /**
6364   * @brief Enable CTR3 update during the link transfer.
6365   * @note  This API is used only for 2D addressing channels.
6366   * @rmtoll CLLR          UT3            LL_DMA_EnableCTR3Update
6367   * @param  DMAx DMAx Instance
6368   * @param  Channel This parameter can be one of the following values:
6369   *         @arg @ref LL_DMA_CHANNEL_12
6370   *         @arg @ref LL_DMA_CHANNEL_13
6371   *         @arg @ref LL_DMA_CHANNEL_14
6372   *         @arg @ref LL_DMA_CHANNEL_15
6373   * @retval None.
6374   */
LL_DMA_EnableCTR3Update(const DMA_TypeDef * DMAx,uint32_t Channel)6375 __STATIC_INLINE void LL_DMA_EnableCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6376 {
6377   uint32_t dma_base_addr = (uint32_t)DMAx;
6378   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3);
6379 }
6380 
6381 /**
6382   * @brief Disable CTR3 update during the link transfer.
6383   * @note  This API is used only for 2D addressing channels.
6384   * @rmtoll CLLR          UT3            LL_DMA_DisableCTR3Update
6385   * @param  DMAx DMAx Instance
6386   * @param  Channel This parameter can be one of the following values:
6387   *         @arg @ref LL_DMA_CHANNEL_12
6388   *         @arg @ref LL_DMA_CHANNEL_13
6389   *         @arg @ref LL_DMA_CHANNEL_14
6390   *         @arg @ref LL_DMA_CHANNEL_15
6391   * @retval None.
6392   */
LL_DMA_DisableCTR3Update(const DMA_TypeDef * DMAx,uint32_t Channel)6393 __STATIC_INLINE void LL_DMA_DisableCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6394 {
6395   uint32_t dma_base_addr = (uint32_t)DMAx;
6396   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3);
6397 }
6398 
6399 /**
6400   * @brief Check if CTR3 update during the link transfer is enabled.
6401   * @note  This API is used only for 2D addressing channels.
6402   * @rmtoll CLLR          UT3            LL_DMA_IsEnabledCTR3Update
6403   * @param  DMAx DMAx Instance
6404   * @param  Channel This parameter can be one of the following values:
6405   *         @arg @ref LL_DMA_CHANNEL_12
6406   *         @arg @ref LL_DMA_CHANNEL_13
6407   *         @arg @ref LL_DMA_CHANNEL_14
6408   *         @arg @ref LL_DMA_CHANNEL_15
6409   * @retval State of bit (1 or 0).
6410   */
LL_DMA_IsEnabledCTR3Update(const DMA_TypeDef * DMAx,uint32_t Channel)6411 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6412 {
6413   uint32_t dma_base_addr = (uint32_t)DMAx;
6414   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3)
6415            == (DMA_CLLR_UT3)) ? 1UL : 0UL);
6416 }
6417 
6418 /**
6419   * @brief Enable CBR2 update during the link transfer.
6420   * @note  This API is used only for 2D addressing channels.
6421   * @rmtoll CLLR          UB2            LL_DMA_EnableCBR2Update
6422   * @param  DMAx DMAx Instance
6423   * @param  Channel This parameter can be one of the following values:
6424   *         @arg @ref LL_DMA_CHANNEL_12
6425   *         @arg @ref LL_DMA_CHANNEL_13
6426   *         @arg @ref LL_DMA_CHANNEL_14
6427   *         @arg @ref LL_DMA_CHANNEL_15
6428   * @retval None.
6429   */
LL_DMA_EnableCBR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)6430 __STATIC_INLINE void LL_DMA_EnableCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6431 {
6432   uint32_t dma_base_addr = (uint32_t)DMAx;
6433   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2);
6434 }
6435 
6436 /**
6437   * @brief Disable CBR2 update during the link transfer.
6438   * @note  This API is used only for 2D addressing channels.
6439   * @rmtoll CLLR          UB2            LL_DMA_DisableCBR2Update
6440   * @param  DMAx DMAx Instance
6441   * @param  Channel This parameter can be one of the following values:
6442   *         @arg @ref LL_DMA_CHANNEL_12
6443   *         @arg @ref LL_DMA_CHANNEL_13
6444   *         @arg @ref LL_DMA_CHANNEL_14
6445   *         @arg @ref LL_DMA_CHANNEL_15
6446   * @retval None.
6447   */
LL_DMA_DisableCBR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)6448 __STATIC_INLINE void LL_DMA_DisableCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6449 {
6450   uint32_t dma_base_addr = (uint32_t)DMAx;
6451   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2);
6452 }
6453 
6454 /**
6455   * @brief Check if CBR2 update during the link transfer is enabled.
6456   * @note  This API is used only for 2D addressing channels.
6457   * @rmtoll CLLR          UB2            LL_DMA_IsEnabledCBR2Update
6458   * @param  DMAx DMAx Instance
6459   * @param  Channel This parameter can be one of the following values:
6460   *         @arg @ref LL_DMA_CHANNEL_12
6461   *         @arg @ref LL_DMA_CHANNEL_13
6462   *         @arg @ref LL_DMA_CHANNEL_14
6463   *         @arg @ref LL_DMA_CHANNEL_15
6464   * @retval State of bit (1 or 0).
6465   */
LL_DMA_IsEnabledCBR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)6466 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
6467 {
6468   uint32_t dma_base_addr = (uint32_t)DMAx;
6469   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2)
6470            == (DMA_CLLR_UB2)) ? 1UL : 0UL);
6471 }
6472 
6473 /**
6474   * @brief Enable CLLR update during the link transfer.
6475   * @note  This API is used for all available DMA channels.
6476   * @rmtoll CLLR          ULL            LL_DMA_EnableCLLRUpdate
6477   * @param  DMAx DMAx Instance
6478   * @param  Channel This parameter can be one of the following values:
6479   *         @arg @ref LL_DMA_CHANNEL_0
6480   *         @arg @ref LL_DMA_CHANNEL_1
6481   *         @arg @ref LL_DMA_CHANNEL_2
6482   *         @arg @ref LL_DMA_CHANNEL_3
6483   *         @arg @ref LL_DMA_CHANNEL_4
6484   *         @arg @ref LL_DMA_CHANNEL_5
6485   *         @arg @ref LL_DMA_CHANNEL_6
6486   *         @arg @ref LL_DMA_CHANNEL_7
6487   *         @arg @ref LL_DMA_CHANNEL_8
6488   *         @arg @ref LL_DMA_CHANNEL_9
6489   *         @arg @ref LL_DMA_CHANNEL_10
6490   *         @arg @ref LL_DMA_CHANNEL_11
6491   *         @arg @ref LL_DMA_CHANNEL_12
6492   *         @arg @ref LL_DMA_CHANNEL_13
6493   *         @arg @ref LL_DMA_CHANNEL_14
6494   *         @arg @ref LL_DMA_CHANNEL_15
6495   * @retval None.
6496   */
LL_DMA_EnableCLLRUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6497 __STATIC_INLINE void LL_DMA_EnableCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6498 {
6499   uint32_t dma_base_addr = (uint32_t)DMAx;
6500   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL);
6501 }
6502 
6503 /**
6504   * @brief Disable CLLR update during the link transfer.
6505   * @note  This API is used for all available DMA channels.
6506   * @rmtoll CLLR          ULL            LL_DMA_DisableCLLRUpdate
6507   * @param  DMAx DMAx Instance
6508   * @param  Channel This parameter can be one of the following values:
6509   *         @arg @ref LL_DMA_CHANNEL_0
6510   *         @arg @ref LL_DMA_CHANNEL_1
6511   *         @arg @ref LL_DMA_CHANNEL_2
6512   *         @arg @ref LL_DMA_CHANNEL_3
6513   *         @arg @ref LL_DMA_CHANNEL_4
6514   *         @arg @ref LL_DMA_CHANNEL_5
6515   *         @arg @ref LL_DMA_CHANNEL_6
6516   *         @arg @ref LL_DMA_CHANNEL_7
6517   *         @arg @ref LL_DMA_CHANNEL_8
6518   *         @arg @ref LL_DMA_CHANNEL_9
6519   *         @arg @ref LL_DMA_CHANNEL_10
6520   *         @arg @ref LL_DMA_CHANNEL_11
6521   *         @arg @ref LL_DMA_CHANNEL_12
6522   *         @arg @ref LL_DMA_CHANNEL_13
6523   *         @arg @ref LL_DMA_CHANNEL_14
6524   *         @arg @ref LL_DMA_CHANNEL_15
6525   * @retval None.
6526   */
LL_DMA_DisableCLLRUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6527 __STATIC_INLINE void LL_DMA_DisableCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6528 {
6529   uint32_t dma_base_addr = (uint32_t)DMAx;
6530   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL);
6531 }
6532 
6533 /**
6534   * @brief Check if CLLR update during the link transfer is enabled.
6535   * @note  This API is used for all available DMA channels.
6536   * @rmtoll CLLR          ULL            LL_DMA_IsEnabledCLLRUpdate
6537   * @param  DMAx DMAx Instance
6538   * @param  Channel This parameter can be one of the following values:
6539   *         @arg @ref LL_DMA_CHANNEL_0
6540   *         @arg @ref LL_DMA_CHANNEL_1
6541   *         @arg @ref LL_DMA_CHANNEL_2
6542   *         @arg @ref LL_DMA_CHANNEL_3
6543   *         @arg @ref LL_DMA_CHANNEL_4
6544   *         @arg @ref LL_DMA_CHANNEL_5
6545   *         @arg @ref LL_DMA_CHANNEL_6
6546   *         @arg @ref LL_DMA_CHANNEL_7
6547   *         @arg @ref LL_DMA_CHANNEL_8
6548   *         @arg @ref LL_DMA_CHANNEL_9
6549   *         @arg @ref LL_DMA_CHANNEL_10
6550   *         @arg @ref LL_DMA_CHANNEL_11
6551   *         @arg @ref LL_DMA_CHANNEL_12
6552   *         @arg @ref LL_DMA_CHANNEL_13
6553   *         @arg @ref LL_DMA_CHANNEL_14
6554   *         @arg @ref LL_DMA_CHANNEL_15
6555   * @retval State of bit (1 or 0).
6556   */
LL_DMA_IsEnabledCLLRUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)6557 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
6558 {
6559   uint32_t dma_base_addr = (uint32_t)DMAx;
6560   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL)
6561            == (DMA_CLLR_ULL)) ? 1UL : 0UL);
6562 }
6563 
6564 /**
6565   * @brief Set linked list address offset.
6566   * @note  This API is used for all available DMA channels.
6567   * @rmtoll CLLR          LA           LL_DMA_SetLinkedListAddrOffset
6568   * @param  DMAx DMAx Instance
6569   * @param  Channel This parameter can be one of the following values:
6570   *         @arg @ref LL_DMA_CHANNEL_0
6571   *         @arg @ref LL_DMA_CHANNEL_1
6572   *         @arg @ref LL_DMA_CHANNEL_2
6573   *         @arg @ref LL_DMA_CHANNEL_3
6574   *         @arg @ref LL_DMA_CHANNEL_4
6575   *         @arg @ref LL_DMA_CHANNEL_5
6576   *         @arg @ref LL_DMA_CHANNEL_6
6577   *         @arg @ref LL_DMA_CHANNEL_7
6578   *         @arg @ref LL_DMA_CHANNEL_8
6579   *         @arg @ref LL_DMA_CHANNEL_9
6580   *         @arg @ref LL_DMA_CHANNEL_10
6581   *         @arg @ref LL_DMA_CHANNEL_11
6582   *         @arg @ref LL_DMA_CHANNEL_12
6583   *         @arg @ref LL_DMA_CHANNEL_13
6584   *         @arg @ref LL_DMA_CHANNEL_14
6585   *         @arg @ref LL_DMA_CHANNEL_15
6586   * @param  LinkedListAddrOffset Between 0 to 0x0000FFFC by increment of 4 Bytes.
6587   * @retval None.
6588   */
LL_DMA_SetLinkedListAddrOffset(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkedListAddrOffset)6589 __STATIC_INLINE void LL_DMA_SetLinkedListAddrOffset(const DMA_TypeDef *DMAx, uint32_t Channel,
6590                                                     uint32_t  LinkedListAddrOffset)
6591 {
6592   uint32_t dma_base_addr = (uint32_t)DMAx;
6593   MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_LA,
6594              (LinkedListAddrOffset & DMA_CLLR_LA));
6595 }
6596 
6597 /**
6598   * @brief Get linked list address offset.
6599   * @note  This API is used for all available DMA channels.
6600   * @rmtoll CLLR          LA           LL_DMA_GetLinkedListAddrOffset
6601   * @param  DMAx DMAx Instance
6602   * @param  Channel This parameter can be one of the following values:
6603   *         @arg @ref LL_DMA_CHANNEL_0
6604   *         @arg @ref LL_DMA_CHANNEL_1
6605   *         @arg @ref LL_DMA_CHANNEL_2
6606   *         @arg @ref LL_DMA_CHANNEL_3
6607   *         @arg @ref LL_DMA_CHANNEL_4
6608   *         @arg @ref LL_DMA_CHANNEL_5
6609   *         @arg @ref LL_DMA_CHANNEL_6
6610   *         @arg @ref LL_DMA_CHANNEL_7
6611   *         @arg @ref LL_DMA_CHANNEL_8
6612   *         @arg @ref LL_DMA_CHANNEL_9
6613   *         @arg @ref LL_DMA_CHANNEL_10
6614   *         @arg @ref LL_DMA_CHANNEL_11
6615   *         @arg @ref LL_DMA_CHANNEL_12
6616   *         @arg @ref LL_DMA_CHANNEL_13
6617   *         @arg @ref LL_DMA_CHANNEL_14
6618   *         @arg @ref LL_DMA_CHANNEL_15
6619   * @retval Between 0 to 0x0000FFFC.
6620   */
LL_DMA_GetLinkedListAddrOffset(const DMA_TypeDef * DMAx,uint32_t Channel)6621 __STATIC_INLINE uint32_t LL_DMA_GetLinkedListAddrOffset(const DMA_TypeDef *DMAx, uint32_t Channel)
6622 {
6623   uint32_t dma_base_addr = (uint32_t)DMAx;
6624   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR,
6625                    DMA_CLLR_LA) >> DMA_CLLR_LA_Pos);
6626 }
6627 
6628 /**
6629   * @brief Get FIFO level.
6630   * @rmtoll CSR          FIFOL           LL_DMA_GetFIFOLevel
6631   * @param  DMAx DMAx Instance
6632   * @param  Channel This parameter can be one of the following values:
6633   *         @arg @ref LL_DMA_CHANNEL_0
6634   *         @arg @ref LL_DMA_CHANNEL_1
6635   *         @arg @ref LL_DMA_CHANNEL_2
6636   *         @arg @ref LL_DMA_CHANNEL_3
6637   *         @arg @ref LL_DMA_CHANNEL_4
6638   *         @arg @ref LL_DMA_CHANNEL_5
6639   *         @arg @ref LL_DMA_CHANNEL_6
6640   *         @arg @ref LL_DMA_CHANNEL_7
6641   *         @arg @ref LL_DMA_CHANNEL_8
6642   *         @arg @ref LL_DMA_CHANNEL_9
6643   *         @arg @ref LL_DMA_CHANNEL_10
6644   *         @arg @ref LL_DMA_CHANNEL_11
6645   *         @arg @ref LL_DMA_CHANNEL_12
6646   *         @arg @ref LL_DMA_CHANNEL_13
6647   *         @arg @ref LL_DMA_CHANNEL_14
6648   *         @arg @ref LL_DMA_CHANNEL_15
6649   * @retval Between 0 to 0x000000FF.
6650   */
LL_DMA_GetFIFOLevel(const DMA_TypeDef * DMAx,uint32_t Channel)6651 __STATIC_INLINE uint32_t LL_DMA_GetFIFOLevel(const DMA_TypeDef *DMAx, uint32_t Channel)
6652 {
6653   uint32_t dma_base_addr = (uint32_t)DMAx;
6654   return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR,
6655                    DMA_CSR_FIFOL) >> DMA_CSR_FIFOL_Pos);
6656 }
6657 
6658 #if defined (CPU_IN_SECURE_STATE)
6659 /**
6660   * @brief Enable the DMA channel secure attribute.
6661   * @note  This API is used for all available DMA channels.
6662   * @rmtoll SECCFGR  SECx    LL_DMA_EnableChannelSecure
6663   * @param  DMAx DMAx Instance
6664   * @param  Channel This parameter can be one of the following values:
6665   *         @arg @ref LL_DMA_CHANNEL_0
6666   *         @arg @ref LL_DMA_CHANNEL_1
6667   *         @arg @ref LL_DMA_CHANNEL_2
6668   *         @arg @ref LL_DMA_CHANNEL_3
6669   *         @arg @ref LL_DMA_CHANNEL_4
6670   *         @arg @ref LL_DMA_CHANNEL_5
6671   *         @arg @ref LL_DMA_CHANNEL_6
6672   *         @arg @ref LL_DMA_CHANNEL_7
6673   *         @arg @ref LL_DMA_CHANNEL_8
6674   *         @arg @ref LL_DMA_CHANNEL_9
6675   *         @arg @ref LL_DMA_CHANNEL_10
6676   *         @arg @ref LL_DMA_CHANNEL_11
6677   *         @arg @ref LL_DMA_CHANNEL_12
6678   *         @arg @ref LL_DMA_CHANNEL_13
6679   *         @arg @ref LL_DMA_CHANNEL_14
6680   *         @arg @ref LL_DMA_CHANNEL_15
6681   * @retval None.
6682   */
LL_DMA_EnableChannelSecure(DMA_TypeDef * DMAx,uint32_t Channel)6683 __STATIC_INLINE void LL_DMA_EnableChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel)
6684 {
6685   SET_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)));
6686 }
6687 
6688 /**
6689   * @brief Disable the DMA channel secure attribute.
6690   * @note  This API is used for all available DMA channels.
6691   * @rmtoll SECCFGR  SECx    LL_DMA_DisableChannelSecure
6692   * @param  DMAx DMAx Instance
6693   * @param  Channel This parameter can be one of the following values:
6694   *         @arg @ref LL_DMA_CHANNEL_0
6695   *         @arg @ref LL_DMA_CHANNEL_1
6696   *         @arg @ref LL_DMA_CHANNEL_2
6697   *         @arg @ref LL_DMA_CHANNEL_3
6698   *         @arg @ref LL_DMA_CHANNEL_4
6699   *         @arg @ref LL_DMA_CHANNEL_5
6700   *         @arg @ref LL_DMA_CHANNEL_6
6701   *         @arg @ref LL_DMA_CHANNEL_7
6702   *         @arg @ref LL_DMA_CHANNEL_8
6703   *         @arg @ref LL_DMA_CHANNEL_9
6704   *         @arg @ref LL_DMA_CHANNEL_10
6705   *         @arg @ref LL_DMA_CHANNEL_11
6706   *         @arg @ref LL_DMA_CHANNEL_12
6707   *         @arg @ref LL_DMA_CHANNEL_13
6708   *         @arg @ref LL_DMA_CHANNEL_14
6709   *         @arg @ref LL_DMA_CHANNEL_15
6710   * @retval None.
6711   */
LL_DMA_DisableChannelSecure(DMA_TypeDef * DMAx,uint32_t Channel)6712 __STATIC_INLINE void LL_DMA_DisableChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel)
6713 {
6714   CLEAR_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)));
6715 }
6716 #endif /* CPU_IN_SECURE_STATE */
6717 
6718 /**
6719   * @brief Check if DMA channel secure is enabled.
6720   * @note  This API is used for all available DMA channels.
6721   * @rmtoll SECCFGR             SECx          LL_DMA_IsEnabledChannelSecure
6722   * @param  DMAx DMAx Instance
6723   * @param  Channel This parameter can be one of the following values:
6724   *         @arg @ref LL_DMA_CHANNEL_0
6725   *         @arg @ref LL_DMA_CHANNEL_1
6726   *         @arg @ref LL_DMA_CHANNEL_2
6727   *         @arg @ref LL_DMA_CHANNEL_3
6728   *         @arg @ref LL_DMA_CHANNEL_4
6729   *         @arg @ref LL_DMA_CHANNEL_5
6730   *         @arg @ref LL_DMA_CHANNEL_6
6731   *         @arg @ref LL_DMA_CHANNEL_7
6732   *         @arg @ref LL_DMA_CHANNEL_8
6733   *         @arg @ref LL_DMA_CHANNEL_9
6734   *         @arg @ref LL_DMA_CHANNEL_10
6735   *         @arg @ref LL_DMA_CHANNEL_11
6736   *         @arg @ref LL_DMA_CHANNEL_12
6737   *         @arg @ref LL_DMA_CHANNEL_13
6738   *         @arg @ref LL_DMA_CHANNEL_14
6739   *         @arg @ref LL_DMA_CHANNEL_15
6740   * @retval State of bit (1 or 0).
6741   */
LL_DMA_IsEnabledChannelSecure(const DMA_TypeDef * DMAx,uint32_t Channel)6742 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
6743 {
6744   return ((READ_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)))
6745            == (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
6746 }
6747 
6748 /**
6749   * @brief Enable the DMA channel privilege attribute.
6750   * @note  This API is used for all available DMA channels.
6751   * @rmtoll PRIVCFGR          PRIVx      LL_DMA_EnableChannelPrivilege
6752   * @param  DMAx DMAx Instance
6753   * @param  Channel This parameter can be one of the following values:
6754   *         @arg @ref LL_DMA_CHANNEL_0
6755   *         @arg @ref LL_DMA_CHANNEL_1
6756   *         @arg @ref LL_DMA_CHANNEL_2
6757   *         @arg @ref LL_DMA_CHANNEL_3
6758   *         @arg @ref LL_DMA_CHANNEL_4
6759   *         @arg @ref LL_DMA_CHANNEL_5
6760   *         @arg @ref LL_DMA_CHANNEL_6
6761   *         @arg @ref LL_DMA_CHANNEL_7
6762   *         @arg @ref LL_DMA_CHANNEL_8
6763   *         @arg @ref LL_DMA_CHANNEL_9
6764   *         @arg @ref LL_DMA_CHANNEL_10
6765   *         @arg @ref LL_DMA_CHANNEL_11
6766   *         @arg @ref LL_DMA_CHANNEL_12
6767   *         @arg @ref LL_DMA_CHANNEL_13
6768   *         @arg @ref LL_DMA_CHANNEL_14
6769   *         @arg @ref LL_DMA_CHANNEL_15
6770   * @retval None.
6771   */
LL_DMA_EnableChannelPrivilege(DMA_TypeDef * DMAx,uint32_t Channel)6772 __STATIC_INLINE void LL_DMA_EnableChannelPrivilege(DMA_TypeDef *DMAx, uint32_t Channel)
6773 {
6774   SET_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)));
6775 }
6776 
6777 /**
6778   * @brief Disable the DMA channel privilege attribute.
6779   * @note  This API is used for all available DMA channels.
6780   * @rmtoll PRIVCFGR          PRIVx      LL_DMA_DisableChannelPrivilege
6781   * @param  DMAx DMAx Instance
6782   * @param  Channel This parameter can be one of the following values:
6783   *         @arg @ref LL_DMA_CHANNEL_0
6784   *         @arg @ref LL_DMA_CHANNEL_1
6785   *         @arg @ref LL_DMA_CHANNEL_2
6786   *         @arg @ref LL_DMA_CHANNEL_3
6787   *         @arg @ref LL_DMA_CHANNEL_4
6788   *         @arg @ref LL_DMA_CHANNEL_5
6789   *         @arg @ref LL_DMA_CHANNEL_6
6790   *         @arg @ref LL_DMA_CHANNEL_7
6791   *         @arg @ref LL_DMA_CHANNEL_8
6792   *         @arg @ref LL_DMA_CHANNEL_9
6793   *         @arg @ref LL_DMA_CHANNEL_10
6794   *         @arg @ref LL_DMA_CHANNEL_11
6795   *         @arg @ref LL_DMA_CHANNEL_12
6796   *         @arg @ref LL_DMA_CHANNEL_13
6797   *         @arg @ref LL_DMA_CHANNEL_14
6798   *         @arg @ref LL_DMA_CHANNEL_15
6799   * @retval None.
6800   */
LL_DMA_DisableChannelPrivilege(DMA_TypeDef * DMAx,uint32_t Channel)6801 __STATIC_INLINE void LL_DMA_DisableChannelPrivilege(DMA_TypeDef *DMAx, uint32_t Channel)
6802 {
6803   CLEAR_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)));
6804 }
6805 
6806 /**
6807   * @brief Check if DMA Channel privilege is enabled.
6808   * @note  This API is used for all available DMA channels.
6809   * @rmtoll PRIVCFGR          PRIVx      LL_DMA_IsEnabledChannelPrivilege
6810   * @param  DMAx DMAx Instance
6811   * @param  Channel This parameter can be one of the following values:
6812   *         @arg @ref LL_DMA_CHANNEL_0
6813   *         @arg @ref LL_DMA_CHANNEL_1
6814   *         @arg @ref LL_DMA_CHANNEL_2
6815   *         @arg @ref LL_DMA_CHANNEL_3
6816   *         @arg @ref LL_DMA_CHANNEL_4
6817   *         @arg @ref LL_DMA_CHANNEL_5
6818   *         @arg @ref LL_DMA_CHANNEL_6
6819   *         @arg @ref LL_DMA_CHANNEL_7
6820   *         @arg @ref LL_DMA_CHANNEL_8
6821   *         @arg @ref LL_DMA_CHANNEL_9
6822   *         @arg @ref LL_DMA_CHANNEL_10
6823   *         @arg @ref LL_DMA_CHANNEL_11
6824   *         @arg @ref LL_DMA_CHANNEL_12
6825   *         @arg @ref LL_DMA_CHANNEL_13
6826   *         @arg @ref LL_DMA_CHANNEL_14
6827   *         @arg @ref LL_DMA_CHANNEL_15
6828   * @retval State of bit (1 or 0).
6829   */
LL_DMA_IsEnabledChannelPrivilege(const DMA_TypeDef * DMAx,uint32_t Channel)6830 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelPrivilege(const DMA_TypeDef *DMAx, uint32_t Channel)
6831 {
6832   return ((READ_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)))
6833            == (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
6834 }
6835 
6836 #if defined (CPU_IN_SECURE_STATE)
6837 /**
6838   * @brief Enable the DMA channel lock attributes.
6839   * @note  This API is used for all available DMA channels.
6840   * @rmtoll RCFGLOCKR           LOCKx         LL_DMA_EnableChannelLockAttribute
6841   * @param  DMAx DMAx Instance
6842   * @param  Channel This parameter can be one of the following values:
6843   *         @arg @ref LL_DMA_CHANNEL_0
6844   *         @arg @ref LL_DMA_CHANNEL_1
6845   *         @arg @ref LL_DMA_CHANNEL_2
6846   *         @arg @ref LL_DMA_CHANNEL_3
6847   *         @arg @ref LL_DMA_CHANNEL_4
6848   *         @arg @ref LL_DMA_CHANNEL_5
6849   *         @arg @ref LL_DMA_CHANNEL_6
6850   *         @arg @ref LL_DMA_CHANNEL_7
6851   *         @arg @ref LL_DMA_CHANNEL_8
6852   *         @arg @ref LL_DMA_CHANNEL_9
6853   *         @arg @ref LL_DMA_CHANNEL_10
6854   *         @arg @ref LL_DMA_CHANNEL_11
6855   *         @arg @ref LL_DMA_CHANNEL_12
6856   *         @arg @ref LL_DMA_CHANNEL_13
6857   *         @arg @ref LL_DMA_CHANNEL_14
6858   *         @arg @ref LL_DMA_CHANNEL_15
6859   * @retval None.
6860   */
LL_DMA_EnableChannelLockAttribute(DMA_TypeDef * DMAx,uint32_t Channel)6861 __STATIC_INLINE void LL_DMA_EnableChannelLockAttribute(DMA_TypeDef *DMAx, uint32_t Channel)
6862 {
6863   SET_BIT(DMAx->RCFGLOCKR, (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU)));
6864 }
6865 #endif /* CPU_IN_SECURE_STATE */
6866 
6867 /**
6868   * @brief Check if DMA channel attributes are locked.
6869   * @note  This API is used for all available DMA channels.
6870   * @rmtoll SECCFGR            LOCKx       LL_DMA_IsEnabledChannelLockAttribute
6871   * @param  DMAx DMAx Instance
6872   * @param  Channel This parameter can be one of the following values:
6873   *         @arg @ref LL_DMA_CHANNEL_0
6874   *         @arg @ref LL_DMA_CHANNEL_1
6875   *         @arg @ref LL_DMA_CHANNEL_2
6876   *         @arg @ref LL_DMA_CHANNEL_3
6877   *         @arg @ref LL_DMA_CHANNEL_4
6878   *         @arg @ref LL_DMA_CHANNEL_5
6879   *         @arg @ref LL_DMA_CHANNEL_6
6880   *         @arg @ref LL_DMA_CHANNEL_7
6881   *         @arg @ref LL_DMA_CHANNEL_8
6882   *         @arg @ref LL_DMA_CHANNEL_9
6883   *         @arg @ref LL_DMA_CHANNEL_10
6884   *         @arg @ref LL_DMA_CHANNEL_11
6885   *         @arg @ref LL_DMA_CHANNEL_12
6886   *         @arg @ref LL_DMA_CHANNEL_13
6887   *         @arg @ref LL_DMA_CHANNEL_14
6888   *         @arg @ref LL_DMA_CHANNEL_15
6889   * @retval State of bit (1 or 0).
6890   */
LL_DMA_IsEnabledChannelLockAttribute(const DMA_TypeDef * DMAx,uint32_t Channel)6891 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelLockAttribute(const DMA_TypeDef *DMAx, uint32_t Channel)
6892 {
6893   return ((READ_BIT(DMAx->RCFGLOCKR, (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU)))
6894            == (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
6895 }
6896 
6897 /**
6898   * @}
6899   */
6900 
6901 /** @defgroup DMA_LL_EF_FLAG_Management Flag Management
6902   * @{
6903   */
6904 
6905 /**
6906   * @brief Clear trigger overrun flag.
6907   * @note  This API is used for all available DMA channels.
6908   * @rmtoll CFCR          TOF        LL_DMA_ClearFlag_TO
6909   * @param  DMAx DMAx Instance
6910   * @param  Channel This parameter can be one of the following values:
6911   *         @arg @ref LL_DMA_CHANNEL_0
6912   *         @arg @ref LL_DMA_CHANNEL_1
6913   *         @arg @ref LL_DMA_CHANNEL_2
6914   *         @arg @ref LL_DMA_CHANNEL_3
6915   *         @arg @ref LL_DMA_CHANNEL_4
6916   *         @arg @ref LL_DMA_CHANNEL_5
6917   *         @arg @ref LL_DMA_CHANNEL_6
6918   *         @arg @ref LL_DMA_CHANNEL_7
6919   *         @arg @ref LL_DMA_CHANNEL_8
6920   *         @arg @ref LL_DMA_CHANNEL_9
6921   *         @arg @ref LL_DMA_CHANNEL_10
6922   *         @arg @ref LL_DMA_CHANNEL_11
6923   *         @arg @ref LL_DMA_CHANNEL_12
6924   *         @arg @ref LL_DMA_CHANNEL_13
6925   *         @arg @ref LL_DMA_CHANNEL_14
6926   *         @arg @ref LL_DMA_CHANNEL_15
6927   * @retval None.
6928   */
LL_DMA_ClearFlag_TO(const DMA_TypeDef * DMAx,uint32_t Channel)6929 __STATIC_INLINE void LL_DMA_ClearFlag_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
6930 {
6931   uint32_t dma_base_addr = (uint32_t)DMAx;
6932   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_TOF);
6933 }
6934 
6935 /**
6936   * @brief Clear suspension flag.
6937   * @note  This API is used for all available DMA channels.
6938   * @rmtoll CFCR          SUSPF        LL_DMA_ClearFlag_SUSP
6939   * @param  DMAx DMAx Instance
6940   * @param  Channel This parameter can be one of the following values:
6941   *         @arg @ref LL_DMA_CHANNEL_0
6942   *         @arg @ref LL_DMA_CHANNEL_1
6943   *         @arg @ref LL_DMA_CHANNEL_2
6944   *         @arg @ref LL_DMA_CHANNEL_3
6945   *         @arg @ref LL_DMA_CHANNEL_4
6946   *         @arg @ref LL_DMA_CHANNEL_5
6947   *         @arg @ref LL_DMA_CHANNEL_6
6948   *         @arg @ref LL_DMA_CHANNEL_7
6949   *         @arg @ref LL_DMA_CHANNEL_8
6950   *         @arg @ref LL_DMA_CHANNEL_9
6951   *         @arg @ref LL_DMA_CHANNEL_10
6952   *         @arg @ref LL_DMA_CHANNEL_11
6953   *         @arg @ref LL_DMA_CHANNEL_12
6954   *         @arg @ref LL_DMA_CHANNEL_13
6955   *         @arg @ref LL_DMA_CHANNEL_14
6956   *         @arg @ref LL_DMA_CHANNEL_15
6957   * @retval None.
6958   */
LL_DMA_ClearFlag_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)6959 __STATIC_INLINE void LL_DMA_ClearFlag_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
6960 {
6961   uint32_t dma_base_addr = (uint32_t)DMAx;
6962   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_SUSPF);
6963 }
6964 
6965 /**
6966   * @brief Clear user setting error flag.
6967   * @note  This API is used for all available DMA channels.
6968   * @rmtoll CFCR          USEF         LL_DMA_ClearFlag_USE
6969   * @param  DMAx DMAx Instance
6970   * @param  Channel This parameter can be one of the following values:
6971   *         @arg @ref LL_DMA_CHANNEL_0
6972   *         @arg @ref LL_DMA_CHANNEL_1
6973   *         @arg @ref LL_DMA_CHANNEL_2
6974   *         @arg @ref LL_DMA_CHANNEL_3
6975   *         @arg @ref LL_DMA_CHANNEL_4
6976   *         @arg @ref LL_DMA_CHANNEL_5
6977   *         @arg @ref LL_DMA_CHANNEL_6
6978   *         @arg @ref LL_DMA_CHANNEL_7
6979   *         @arg @ref LL_DMA_CHANNEL_8
6980   *         @arg @ref LL_DMA_CHANNEL_9
6981   *         @arg @ref LL_DMA_CHANNEL_10
6982   *         @arg @ref LL_DMA_CHANNEL_11
6983   *         @arg @ref LL_DMA_CHANNEL_12
6984   *         @arg @ref LL_DMA_CHANNEL_13
6985   *         @arg @ref LL_DMA_CHANNEL_14
6986   *         @arg @ref LL_DMA_CHANNEL_15
6987   * @retval None.
6988   */
LL_DMA_ClearFlag_USE(const DMA_TypeDef * DMAx,uint32_t Channel)6989 __STATIC_INLINE void LL_DMA_ClearFlag_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
6990 {
6991   uint32_t dma_base_addr = (uint32_t)DMAx;
6992   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_USEF);
6993 }
6994 
6995 /**
6996   * @brief Clear link transfer error flag.
6997   * @note  This API is used for all available DMA channels.
6998   * @rmtoll CFCR          ULEF         LL_DMA_ClearFlag_ULE
6999   * @param  DMAx DMAx Instance
7000   * @param  Channel This parameter can be one of the following values:
7001   *         @arg @ref LL_DMA_CHANNEL_0
7002   *         @arg @ref LL_DMA_CHANNEL_1
7003   *         @arg @ref LL_DMA_CHANNEL_2
7004   *         @arg @ref LL_DMA_CHANNEL_3
7005   *         @arg @ref LL_DMA_CHANNEL_4
7006   *         @arg @ref LL_DMA_CHANNEL_5
7007   *         @arg @ref LL_DMA_CHANNEL_6
7008   *         @arg @ref LL_DMA_CHANNEL_7
7009   *         @arg @ref LL_DMA_CHANNEL_8
7010   *         @arg @ref LL_DMA_CHANNEL_9
7011   *         @arg @ref LL_DMA_CHANNEL_10
7012   *         @arg @ref LL_DMA_CHANNEL_11
7013   *         @arg @ref LL_DMA_CHANNEL_12
7014   *         @arg @ref LL_DMA_CHANNEL_13
7015   *         @arg @ref LL_DMA_CHANNEL_14
7016   *         @arg @ref LL_DMA_CHANNEL_15
7017   * @retval None.
7018   */
LL_DMA_ClearFlag_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)7019 __STATIC_INLINE void LL_DMA_ClearFlag_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
7020 {
7021   uint32_t dma_base_addr = (uint32_t)DMAx;
7022   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_ULEF);
7023 }
7024 
7025 /**
7026   * @brief Clear data transfer error flag.
7027   * @note  This API is used for all available DMA channels.
7028   * @rmtoll CFCR          DTEF         LL_DMA_ClearFlag_DTE
7029   * @param  DMAx DMAx Instance
7030   * @param  Channel This parameter can be one of the following values:
7031   *         @arg @ref LL_DMA_CHANNEL_0
7032   *         @arg @ref LL_DMA_CHANNEL_1
7033   *         @arg @ref LL_DMA_CHANNEL_2
7034   *         @arg @ref LL_DMA_CHANNEL_3
7035   *         @arg @ref LL_DMA_CHANNEL_4
7036   *         @arg @ref LL_DMA_CHANNEL_5
7037   *         @arg @ref LL_DMA_CHANNEL_6
7038   *         @arg @ref LL_DMA_CHANNEL_7
7039   *         @arg @ref LL_DMA_CHANNEL_8
7040   *         @arg @ref LL_DMA_CHANNEL_9
7041   *         @arg @ref LL_DMA_CHANNEL_10
7042   *         @arg @ref LL_DMA_CHANNEL_11
7043   *         @arg @ref LL_DMA_CHANNEL_12
7044   *         @arg @ref LL_DMA_CHANNEL_13
7045   *         @arg @ref LL_DMA_CHANNEL_14
7046   *         @arg @ref LL_DMA_CHANNEL_15
7047   * @retval None.
7048   */
LL_DMA_ClearFlag_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)7049 __STATIC_INLINE void LL_DMA_ClearFlag_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
7050 {
7051   uint32_t dma_base_addr = (uint32_t)DMAx;
7052   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_DTEF);
7053 }
7054 
7055 /**
7056   * @brief Clear half transfer flag.
7057   * @note  This API is used for all available DMA channels.
7058   * @rmtoll CFCR          HTF          LL_DMA_ClearFlag_HT
7059   * @param  DMAx DMAx Instance
7060   * @param  Channel This parameter can be one of the following values:
7061   *         @arg @ref LL_DMA_CHANNEL_0
7062   *         @arg @ref LL_DMA_CHANNEL_1
7063   *         @arg @ref LL_DMA_CHANNEL_2
7064   *         @arg @ref LL_DMA_CHANNEL_3
7065   *         @arg @ref LL_DMA_CHANNEL_4
7066   *         @arg @ref LL_DMA_CHANNEL_5
7067   *         @arg @ref LL_DMA_CHANNEL_6
7068   *         @arg @ref LL_DMA_CHANNEL_7
7069   *         @arg @ref LL_DMA_CHANNEL_8
7070   *         @arg @ref LL_DMA_CHANNEL_9
7071   *         @arg @ref LL_DMA_CHANNEL_10
7072   *         @arg @ref LL_DMA_CHANNEL_11
7073   *         @arg @ref LL_DMA_CHANNEL_12
7074   *         @arg @ref LL_DMA_CHANNEL_13
7075   *         @arg @ref LL_DMA_CHANNEL_14
7076   *         @arg @ref LL_DMA_CHANNEL_15
7077   * @retval None.
7078   */
LL_DMA_ClearFlag_HT(const DMA_TypeDef * DMAx,uint32_t Channel)7079 __STATIC_INLINE void LL_DMA_ClearFlag_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
7080 {
7081   uint32_t dma_base_addr = (uint32_t)DMAx;
7082   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_HTF);
7083 }
7084 
7085 /**
7086   * @brief Clear transfer complete flag.
7087   * @note  This API is used for all available DMA channels.
7088   * @rmtoll CFCR          TCF          LL_DMA_ClearFlag_TC
7089   * @param  DMAx DMAx Instance
7090   * @param  Channel This parameter can be one of the following values:
7091   *         @arg @ref LL_DMA_CHANNEL_0
7092   *         @arg @ref LL_DMA_CHANNEL_1
7093   *         @arg @ref LL_DMA_CHANNEL_2
7094   *         @arg @ref LL_DMA_CHANNEL_3
7095   *         @arg @ref LL_DMA_CHANNEL_4
7096   *         @arg @ref LL_DMA_CHANNEL_5
7097   *         @arg @ref LL_DMA_CHANNEL_6
7098   *         @arg @ref LL_DMA_CHANNEL_7
7099   *         @arg @ref LL_DMA_CHANNEL_8
7100   *         @arg @ref LL_DMA_CHANNEL_9
7101   *         @arg @ref LL_DMA_CHANNEL_10
7102   *         @arg @ref LL_DMA_CHANNEL_11
7103   *         @arg @ref LL_DMA_CHANNEL_12
7104   *         @arg @ref LL_DMA_CHANNEL_13
7105   *         @arg @ref LL_DMA_CHANNEL_14
7106   *         @arg @ref LL_DMA_CHANNEL_15
7107   * @retval None.
7108   */
LL_DMA_ClearFlag_TC(const DMA_TypeDef * DMAx,uint32_t Channel)7109 __STATIC_INLINE void LL_DMA_ClearFlag_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
7110 {
7111   uint32_t dma_base_addr = (uint32_t)DMAx;
7112   WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_TCF);
7113 }
7114 
7115 /**
7116   * @brief Get trigger overrun flag.
7117   * @note  This API is used for all available DMA channels.
7118   * @rmtoll CSR           TOF        LL_DMA_IsActiveFlag_TO
7119   * @param  DMAx DMAx Instance
7120   * @param  Channel This parameter can be one of the following values:
7121   *         @arg @ref LL_DMA_CHANNEL_0
7122   *         @arg @ref LL_DMA_CHANNEL_1
7123   *         @arg @ref LL_DMA_CHANNEL_2
7124   *         @arg @ref LL_DMA_CHANNEL_3
7125   *         @arg @ref LL_DMA_CHANNEL_4
7126   *         @arg @ref LL_DMA_CHANNEL_5
7127   *         @arg @ref LL_DMA_CHANNEL_6
7128   *         @arg @ref LL_DMA_CHANNEL_7
7129   *         @arg @ref LL_DMA_CHANNEL_8
7130   *         @arg @ref LL_DMA_CHANNEL_9
7131   *         @arg @ref LL_DMA_CHANNEL_10
7132   *         @arg @ref LL_DMA_CHANNEL_11
7133   *         @arg @ref LL_DMA_CHANNEL_12
7134   *         @arg @ref LL_DMA_CHANNEL_13
7135   *         @arg @ref LL_DMA_CHANNEL_14
7136   *         @arg @ref LL_DMA_CHANNEL_15
7137   * @retval State of bit (1 or 0).
7138   */
LL_DMA_IsActiveFlag_TO(const DMA_TypeDef * DMAx,uint32_t Channel)7139 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
7140 {
7141   uint32_t dma_base_addr = (uint32_t)DMAx;
7142   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_TOF)
7143            == (DMA_CSR_TOF)) ? 1UL : 0UL);
7144 }
7145 
7146 /**
7147   * @brief Get suspension flag.
7148   * @note  This API is used for all available DMA channels.
7149   * @rmtoll CSR           SUSPF        LL_DMA_IsActiveFlag_SUSP
7150   * @param  DMAx DMAx Instance
7151   * @param  Channel This parameter can be one of the following values:
7152   *         @arg @ref LL_DMA_CHANNEL_0
7153   *         @arg @ref LL_DMA_CHANNEL_1
7154   *         @arg @ref LL_DMA_CHANNEL_2
7155   *         @arg @ref LL_DMA_CHANNEL_3
7156   *         @arg @ref LL_DMA_CHANNEL_4
7157   *         @arg @ref LL_DMA_CHANNEL_5
7158   *         @arg @ref LL_DMA_CHANNEL_6
7159   *         @arg @ref LL_DMA_CHANNEL_7
7160   *         @arg @ref LL_DMA_CHANNEL_8
7161   *         @arg @ref LL_DMA_CHANNEL_9
7162   *         @arg @ref LL_DMA_CHANNEL_10
7163   *         @arg @ref LL_DMA_CHANNEL_11
7164   *         @arg @ref LL_DMA_CHANNEL_12
7165   *         @arg @ref LL_DMA_CHANNEL_13
7166   *         @arg @ref LL_DMA_CHANNEL_14
7167   *         @arg @ref LL_DMA_CHANNEL_15
7168   * @retval State of bit (1 or 0).
7169   */
LL_DMA_IsActiveFlag_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)7170 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
7171 {
7172   uint32_t dma_base_addr = (uint32_t)DMAx;
7173   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_SUSPF)
7174            == (DMA_CSR_SUSPF)) ? 1UL : 0UL);
7175 }
7176 
7177 /**
7178   * @brief Get user setting error flag.
7179   * @note  This API is used for all available DMA channels.
7180   * @rmtoll CSR           USEF         LL_DMA_IsActiveFlag_USE
7181   * @param  DMAx DMAx Instance
7182   * @param  Channel This parameter can be one of the following values:
7183   *         @arg @ref LL_DMA_CHANNEL_0
7184   *         @arg @ref LL_DMA_CHANNEL_1
7185   *         @arg @ref LL_DMA_CHANNEL_2
7186   *         @arg @ref LL_DMA_CHANNEL_3
7187   *         @arg @ref LL_DMA_CHANNEL_4
7188   *         @arg @ref LL_DMA_CHANNEL_5
7189   *         @arg @ref LL_DMA_CHANNEL_6
7190   *         @arg @ref LL_DMA_CHANNEL_7
7191   *         @arg @ref LL_DMA_CHANNEL_8
7192   *         @arg @ref LL_DMA_CHANNEL_9
7193   *         @arg @ref LL_DMA_CHANNEL_10
7194   *         @arg @ref LL_DMA_CHANNEL_11
7195   *         @arg @ref LL_DMA_CHANNEL_12
7196   *         @arg @ref LL_DMA_CHANNEL_13
7197   *         @arg @ref LL_DMA_CHANNEL_14
7198   *         @arg @ref LL_DMA_CHANNEL_15
7199   * @retval State of bit (1 or 0).
7200   */
LL_DMA_IsActiveFlag_USE(const DMA_TypeDef * DMAx,uint32_t Channel)7201 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
7202 {
7203   uint32_t dma_base_addr = (uint32_t)DMAx;
7204   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_USEF)
7205            == (DMA_CSR_USEF)) ? 1UL : 0UL);
7206 }
7207 
7208 /**
7209   * @brief Get user setting error flag.
7210   * @note  This API is used for all available DMA channels.
7211   * @rmtoll CSR           ULEF         LL_DMA_IsActiveFlag_ULE
7212   * @param  DMAx DMAx Instance
7213   * @param  Channel This parameter can be one of the following values:
7214   *         @arg @ref LL_DMA_CHANNEL_0
7215   *         @arg @ref LL_DMA_CHANNEL_1
7216   *         @arg @ref LL_DMA_CHANNEL_2
7217   *         @arg @ref LL_DMA_CHANNEL_3
7218   *         @arg @ref LL_DMA_CHANNEL_4
7219   *         @arg @ref LL_DMA_CHANNEL_5
7220   *         @arg @ref LL_DMA_CHANNEL_6
7221   *         @arg @ref LL_DMA_CHANNEL_7
7222   *         @arg @ref LL_DMA_CHANNEL_8
7223   *         @arg @ref LL_DMA_CHANNEL_9
7224   *         @arg @ref LL_DMA_CHANNEL_10
7225   *         @arg @ref LL_DMA_CHANNEL_11
7226   *         @arg @ref LL_DMA_CHANNEL_12
7227   *         @arg @ref LL_DMA_CHANNEL_13
7228   *         @arg @ref LL_DMA_CHANNEL_14
7229   *         @arg @ref LL_DMA_CHANNEL_15
7230   * @retval State of bit (1 or 0).
7231   */
LL_DMA_IsActiveFlag_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)7232 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
7233 {
7234   uint32_t dma_base_addr = (uint32_t)DMAx;
7235   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_ULEF)
7236            == (DMA_CSR_ULEF)) ? 1UL : 0UL);
7237 }
7238 
7239 /**
7240   * @brief Get data transfer error flag.
7241   * @note  This API is used for all available DMA channels.
7242   * @rmtoll CSR           DTEF         LL_DMA_IsActiveFlag_DTE
7243   * @param  DMAx DMAx Instance
7244   * @param  Channel This parameter can be one of the following values:
7245   *         @arg @ref LL_DMA_CHANNEL_0
7246   *         @arg @ref LL_DMA_CHANNEL_1
7247   *         @arg @ref LL_DMA_CHANNEL_2
7248   *         @arg @ref LL_DMA_CHANNEL_3
7249   *         @arg @ref LL_DMA_CHANNEL_4
7250   *         @arg @ref LL_DMA_CHANNEL_5
7251   *         @arg @ref LL_DMA_CHANNEL_6
7252   *         @arg @ref LL_DMA_CHANNEL_7
7253   *         @arg @ref LL_DMA_CHANNEL_8
7254   *         @arg @ref LL_DMA_CHANNEL_9
7255   *         @arg @ref LL_DMA_CHANNEL_10
7256   *         @arg @ref LL_DMA_CHANNEL_11
7257   *         @arg @ref LL_DMA_CHANNEL_12
7258   *         @arg @ref LL_DMA_CHANNEL_13
7259   *         @arg @ref LL_DMA_CHANNEL_14
7260   *         @arg @ref LL_DMA_CHANNEL_15
7261   * @retval State of bit (1 or 0).
7262   */
LL_DMA_IsActiveFlag_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)7263 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
7264 {
7265   uint32_t dma_base_addr = (uint32_t)DMAx;
7266   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_DTEF)
7267            == (DMA_CSR_DTEF)) ? 1UL : 0UL);
7268 }
7269 
7270 /**
7271   * @brief Get half transfer flag.
7272   * @note  This API is used for all available DMA channels.
7273   * @rmtoll CSR           HTF          LL_DMA_IsActiveFlag_HT
7274   * @param  DMAx DMAx Instance
7275   * @param  Channel This parameter can be one of the following values:
7276   *         @arg @ref LL_DMA_CHANNEL_0
7277   *         @arg @ref LL_DMA_CHANNEL_1
7278   *         @arg @ref LL_DMA_CHANNEL_2
7279   *         @arg @ref LL_DMA_CHANNEL_3
7280   *         @arg @ref LL_DMA_CHANNEL_4
7281   *         @arg @ref LL_DMA_CHANNEL_5
7282   *         @arg @ref LL_DMA_CHANNEL_6
7283   *         @arg @ref LL_DMA_CHANNEL_7
7284   *         @arg @ref LL_DMA_CHANNEL_8
7285   *         @arg @ref LL_DMA_CHANNEL_9
7286   *         @arg @ref LL_DMA_CHANNEL_10
7287   *         @arg @ref LL_DMA_CHANNEL_11
7288   *         @arg @ref LL_DMA_CHANNEL_12
7289   *         @arg @ref LL_DMA_CHANNEL_13
7290   *         @arg @ref LL_DMA_CHANNEL_14
7291   *         @arg @ref LL_DMA_CHANNEL_15
7292   * @retval State of bit (1 or 0).
7293   */
LL_DMA_IsActiveFlag_HT(const DMA_TypeDef * DMAx,uint32_t Channel)7294 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
7295 {
7296   uint32_t dma_base_addr = (uint32_t)DMAx;
7297   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_HTF)
7298            == (DMA_CSR_HTF)) ? 1UL : 0UL);
7299 }
7300 
7301 /**
7302   * @brief Get transfer complete flag.
7303   * @note  This API is used for all available DMA channels.
7304   * @rmtoll CSR           TCF          LL_DMA_IsActiveFlag_TC
7305   * @param  DMAx DMAx Instance
7306   * @param  Channel This parameter can be one of the following values:
7307   *         @arg @ref LL_DMA_CHANNEL_0
7308   *         @arg @ref LL_DMA_CHANNEL_1
7309   *         @arg @ref LL_DMA_CHANNEL_2
7310   *         @arg @ref LL_DMA_CHANNEL_3
7311   *         @arg @ref LL_DMA_CHANNEL_4
7312   *         @arg @ref LL_DMA_CHANNEL_5
7313   *         @arg @ref LL_DMA_CHANNEL_6
7314   *         @arg @ref LL_DMA_CHANNEL_7
7315   *         @arg @ref LL_DMA_CHANNEL_8
7316   *         @arg @ref LL_DMA_CHANNEL_9
7317   *         @arg @ref LL_DMA_CHANNEL_10
7318   *         @arg @ref LL_DMA_CHANNEL_11
7319   *         @arg @ref LL_DMA_CHANNEL_12
7320   *         @arg @ref LL_DMA_CHANNEL_13
7321   *         @arg @ref LL_DMA_CHANNEL_14
7322   *         @arg @ref LL_DMA_CHANNEL_15
7323   * @retval State of bit (1 or 0).
7324   */
LL_DMA_IsActiveFlag_TC(const DMA_TypeDef * DMAx,uint32_t Channel)7325 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
7326 {
7327   uint32_t dma_base_addr = (uint32_t)DMAx;
7328   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_TCF)
7329            == (DMA_CSR_TCF)) ? 1UL : 0UL);
7330 }
7331 
7332 /**
7333   * @brief Get idle flag.
7334   * @note  This API is used for all available DMA channels.
7335   * @rmtoll CSR           IDLEF        LL_DMA_IsActiveFlag_IDLE
7336   * @param  DMAx DMAx Instance
7337   * @param  Channel This parameter can be one of the following values:
7338   *         @arg @ref LL_DMA_CHANNEL_0
7339   *         @arg @ref LL_DMA_CHANNEL_1
7340   *         @arg @ref LL_DMA_CHANNEL_2
7341   *         @arg @ref LL_DMA_CHANNEL_3
7342   *         @arg @ref LL_DMA_CHANNEL_4
7343   *         @arg @ref LL_DMA_CHANNEL_5
7344   *         @arg @ref LL_DMA_CHANNEL_6
7345   *         @arg @ref LL_DMA_CHANNEL_7
7346   *         @arg @ref LL_DMA_CHANNEL_8
7347   *         @arg @ref LL_DMA_CHANNEL_9
7348   *         @arg @ref LL_DMA_CHANNEL_10
7349   *         @arg @ref LL_DMA_CHANNEL_11
7350   *         @arg @ref LL_DMA_CHANNEL_12
7351   *         @arg @ref LL_DMA_CHANNEL_13
7352   *         @arg @ref LL_DMA_CHANNEL_14
7353   *         @arg @ref LL_DMA_CHANNEL_15
7354   * @retval State of bit (1 or 0).
7355   */
LL_DMA_IsActiveFlag_IDLE(const DMA_TypeDef * DMAx,uint32_t Channel)7356 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_IDLE(const DMA_TypeDef *DMAx, uint32_t Channel)
7357 {
7358   uint32_t dma_base_addr = (uint32_t)DMAx;
7359   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_IDLEF)
7360            == (DMA_CSR_IDLEF)) ? 1UL : 0UL);
7361 }
7362 
7363 /**
7364   * @brief Check if nsecure masked interrupt is active.
7365   * @note  This API is used for all available DMA channels.
7366   * @rmtoll MISR  MISx    LL_DMA_IsActiveFlag_MIS
7367   * @param  DMAx DMAx Instance
7368   * @param  Channel This parameter can be one of the following values:
7369   *         @arg @ref LL_DMA_CHANNEL_0
7370   *         @arg @ref LL_DMA_CHANNEL_1
7371   *         @arg @ref LL_DMA_CHANNEL_2
7372   *         @arg @ref LL_DMA_CHANNEL_3
7373   *         @arg @ref LL_DMA_CHANNEL_4
7374   *         @arg @ref LL_DMA_CHANNEL_5
7375   *         @arg @ref LL_DMA_CHANNEL_6
7376   *         @arg @ref LL_DMA_CHANNEL_7
7377   *         @arg @ref LL_DMA_CHANNEL_8
7378   *         @arg @ref LL_DMA_CHANNEL_9
7379   *         @arg @ref LL_DMA_CHANNEL_10
7380   *         @arg @ref LL_DMA_CHANNEL_11
7381   *         @arg @ref LL_DMA_CHANNEL_12
7382   *         @arg @ref LL_DMA_CHANNEL_13
7383   *         @arg @ref LL_DMA_CHANNEL_14
7384   *         @arg @ref LL_DMA_CHANNEL_15
7385   * @retval State of bit (1 or 0).
7386   */
LL_DMA_IsActiveFlag_MIS(const DMA_TypeDef * DMAx,uint32_t Channel)7387 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_MIS(const DMA_TypeDef *DMAx, uint32_t Channel)
7388 {
7389   return ((READ_BIT(DMAx->MISR, (DMA_MISR_MIS0 << (Channel & 0x0FU)))
7390            == (DMA_MISR_MIS0 << (Channel & 0x0FU))) ? 1UL : 0UL);
7391 }
7392 
7393 #if defined (CPU_IN_SECURE_STATE)
7394 /**
7395   * @brief Check if secure masked interrupt is active.
7396   * @note  This API is used for all available DMA channels.
7397   * @rmtoll SMISR  MISx    LL_DMA_IsActiveFlag_SMIS
7398   * @param  DMAx DMAx Instance
7399   * @param  Channel This parameter can be one of the following values:
7400   *         @arg @ref LL_DMA_CHANNEL_0
7401   *         @arg @ref LL_DMA_CHANNEL_1
7402   *         @arg @ref LL_DMA_CHANNEL_2
7403   *         @arg @ref LL_DMA_CHANNEL_3
7404   *         @arg @ref LL_DMA_CHANNEL_4
7405   *         @arg @ref LL_DMA_CHANNEL_5
7406   *         @arg @ref LL_DMA_CHANNEL_6
7407   *         @arg @ref LL_DMA_CHANNEL_7
7408   *         @arg @ref LL_DMA_CHANNEL_8
7409   *         @arg @ref LL_DMA_CHANNEL_9
7410   *         @arg @ref LL_DMA_CHANNEL_10
7411   *         @arg @ref LL_DMA_CHANNEL_11
7412   *         @arg @ref LL_DMA_CHANNEL_12
7413   *         @arg @ref LL_DMA_CHANNEL_13
7414   *         @arg @ref LL_DMA_CHANNEL_14
7415   *         @arg @ref LL_DMA_CHANNEL_15
7416   * @retval State of bit (1 or 0).
7417   */
LL_DMA_IsActiveFlag_SMIS(const DMA_TypeDef * DMAx,uint32_t Channel)7418 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_SMIS(const DMA_TypeDef *DMAx, uint32_t Channel)
7419 {
7420   return ((READ_BIT(DMAx->SMISR, (DMA_SMISR_MIS0 << (Channel & 0x0000000FU)))
7421            == (DMA_SMISR_MIS0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
7422 }
7423 #endif /* CPU_IN_SECURE_STATE */
7424 /**
7425   * @}
7426   */
7427 
7428 /** @defgroup DMA_LL_EF_IT_Management Interrupt Management
7429   * @{
7430   */
7431 
7432 /**
7433   * @brief Enable trigger overrun interrupt.
7434   * @note  This API is used for all available DMA channels.
7435   * @rmtoll CCR           TOIE       LL_DMA_EnableIT_TO
7436   * @param  DMAx DMAx Instance
7437   * @param  Channel This parameter can be one of the following values:
7438   *         @arg @ref LL_DMA_CHANNEL_0
7439   *         @arg @ref LL_DMA_CHANNEL_1
7440   *         @arg @ref LL_DMA_CHANNEL_2
7441   *         @arg @ref LL_DMA_CHANNEL_3
7442   *         @arg @ref LL_DMA_CHANNEL_4
7443   *         @arg @ref LL_DMA_CHANNEL_5
7444   *         @arg @ref LL_DMA_CHANNEL_6
7445   *         @arg @ref LL_DMA_CHANNEL_7
7446   *         @arg @ref LL_DMA_CHANNEL_8
7447   *         @arg @ref LL_DMA_CHANNEL_9
7448   *         @arg @ref LL_DMA_CHANNEL_10
7449   *         @arg @ref LL_DMA_CHANNEL_11
7450   *         @arg @ref LL_DMA_CHANNEL_12
7451   *         @arg @ref LL_DMA_CHANNEL_13
7452   *         @arg @ref LL_DMA_CHANNEL_14
7453   *         @arg @ref LL_DMA_CHANNEL_15
7454   * @retval None.
7455   */
LL_DMA_EnableIT_TO(const DMA_TypeDef * DMAx,uint32_t Channel)7456 __STATIC_INLINE void LL_DMA_EnableIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
7457 {
7458   uint32_t dma_base_addr = (uint32_t)DMAx;
7459   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE);
7460 }
7461 
7462 /**
7463   * @brief Enable suspension interrupt.
7464   * @note  This API is used for all available DMA channels.
7465   * @rmtoll CCR           SUSPIE       LL_DMA_EnableIT_SUSP
7466   * @param  DMAx DMAx Instance
7467   * @param  Channel This parameter can be one of the following values:
7468   *         @arg @ref LL_DMA_CHANNEL_0
7469   *         @arg @ref LL_DMA_CHANNEL_1
7470   *         @arg @ref LL_DMA_CHANNEL_2
7471   *         @arg @ref LL_DMA_CHANNEL_3
7472   *         @arg @ref LL_DMA_CHANNEL_4
7473   *         @arg @ref LL_DMA_CHANNEL_5
7474   *         @arg @ref LL_DMA_CHANNEL_6
7475   *         @arg @ref LL_DMA_CHANNEL_7
7476   *         @arg @ref LL_DMA_CHANNEL_8
7477   *         @arg @ref LL_DMA_CHANNEL_9
7478   *         @arg @ref LL_DMA_CHANNEL_10
7479   *         @arg @ref LL_DMA_CHANNEL_11
7480   *         @arg @ref LL_DMA_CHANNEL_12
7481   *         @arg @ref LL_DMA_CHANNEL_13
7482   *         @arg @ref LL_DMA_CHANNEL_14
7483   *         @arg @ref LL_DMA_CHANNEL_15
7484   * @retval None.
7485   */
LL_DMA_EnableIT_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)7486 __STATIC_INLINE void LL_DMA_EnableIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
7487 {
7488   uint32_t dma_base_addr = (uint32_t)DMAx;
7489   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE);
7490 }
7491 
7492 /**
7493   * @brief Enable user setting error interrupt.
7494   * @note  This API is used for all available DMA channels.
7495   * @rmtoll CCR           USEIE        LL_DMA_EnableIT_USE
7496   * @param  DMAx DMAx Instance
7497   * @param  Channel This parameter can be one of the following values:
7498   *         @arg @ref LL_DMA_CHANNEL_0
7499   *         @arg @ref LL_DMA_CHANNEL_1
7500   *         @arg @ref LL_DMA_CHANNEL_2
7501   *         @arg @ref LL_DMA_CHANNEL_3
7502   *         @arg @ref LL_DMA_CHANNEL_4
7503   *         @arg @ref LL_DMA_CHANNEL_5
7504   *         @arg @ref LL_DMA_CHANNEL_6
7505   *         @arg @ref LL_DMA_CHANNEL_7
7506   *         @arg @ref LL_DMA_CHANNEL_8
7507   *         @arg @ref LL_DMA_CHANNEL_9
7508   *         @arg @ref LL_DMA_CHANNEL_10
7509   *         @arg @ref LL_DMA_CHANNEL_11
7510   *         @arg @ref LL_DMA_CHANNEL_12
7511   *         @arg @ref LL_DMA_CHANNEL_13
7512   *         @arg @ref LL_DMA_CHANNEL_14
7513   *         @arg @ref LL_DMA_CHANNEL_15
7514   * @retval None.
7515   */
LL_DMA_EnableIT_USE(const DMA_TypeDef * DMAx,uint32_t Channel)7516 __STATIC_INLINE void LL_DMA_EnableIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
7517 {
7518   uint32_t dma_base_addr = (uint32_t)DMAx;
7519   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE);
7520 }
7521 
7522 /**
7523   * @brief Enable update link transfer error interrupt.
7524   * @note  This API is used for all available DMA channels.
7525   * @rmtoll CCR           ULEIE        LL_DMA_EnableIT_ULE
7526   * @param  DMAx DMAx Instance
7527   * @param  Channel This parameter can be one of the following values:
7528   *         @arg @ref LL_DMA_CHANNEL_0
7529   *         @arg @ref LL_DMA_CHANNEL_1
7530   *         @arg @ref LL_DMA_CHANNEL_2
7531   *         @arg @ref LL_DMA_CHANNEL_3
7532   *         @arg @ref LL_DMA_CHANNEL_4
7533   *         @arg @ref LL_DMA_CHANNEL_5
7534   *         @arg @ref LL_DMA_CHANNEL_6
7535   *         @arg @ref LL_DMA_CHANNEL_7
7536   *         @arg @ref LL_DMA_CHANNEL_8
7537   *         @arg @ref LL_DMA_CHANNEL_9
7538   *         @arg @ref LL_DMA_CHANNEL_10
7539   *         @arg @ref LL_DMA_CHANNEL_11
7540   *         @arg @ref LL_DMA_CHANNEL_12
7541   *         @arg @ref LL_DMA_CHANNEL_13
7542   *         @arg @ref LL_DMA_CHANNEL_14
7543   *         @arg @ref LL_DMA_CHANNEL_15
7544   * @retval None.
7545   */
LL_DMA_EnableIT_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)7546 __STATIC_INLINE void LL_DMA_EnableIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
7547 {
7548   uint32_t dma_base_addr = (uint32_t)DMAx;
7549   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE);
7550 }
7551 
7552 /**
7553   * @brief Enable data transfer error interrupt.
7554   * @note  This API is used for all available DMA channels.
7555   * @rmtoll CCR           DTEIE        LL_DMA_EnableIT_DTE
7556   * @param  DMAx DMAx Instance
7557   * @param  Channel This parameter can be one of the following values:
7558   *         @arg @ref LL_DMA_CHANNEL_0
7559   *         @arg @ref LL_DMA_CHANNEL_1
7560   *         @arg @ref LL_DMA_CHANNEL_2
7561   *         @arg @ref LL_DMA_CHANNEL_3
7562   *         @arg @ref LL_DMA_CHANNEL_4
7563   *         @arg @ref LL_DMA_CHANNEL_5
7564   *         @arg @ref LL_DMA_CHANNEL_6
7565   *         @arg @ref LL_DMA_CHANNEL_7
7566   *         @arg @ref LL_DMA_CHANNEL_8
7567   *         @arg @ref LL_DMA_CHANNEL_9
7568   *         @arg @ref LL_DMA_CHANNEL_10
7569   *         @arg @ref LL_DMA_CHANNEL_11
7570   *         @arg @ref LL_DMA_CHANNEL_12
7571   *         @arg @ref LL_DMA_CHANNEL_13
7572   *         @arg @ref LL_DMA_CHANNEL_14
7573   *         @arg @ref LL_DMA_CHANNEL_15
7574   * @retval None.
7575   */
LL_DMA_EnableIT_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)7576 __STATIC_INLINE void LL_DMA_EnableIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
7577 {
7578   uint32_t dma_base_addr = (uint32_t)DMAx;
7579   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE);
7580 }
7581 
7582 /**
7583   * @brief Enable half transfer complete interrupt.
7584   * @note  This API is used for all available DMA channels.
7585   * @rmtoll CCR           HTIE         LL_DMA_EnableIT_HT
7586   * @param  DMAx DMAx Instance
7587   * @param  Channel This parameter can be one of the following values:
7588   *         @arg @ref LL_DMA_CHANNEL_0
7589   *         @arg @ref LL_DMA_CHANNEL_1
7590   *         @arg @ref LL_DMA_CHANNEL_2
7591   *         @arg @ref LL_DMA_CHANNEL_3
7592   *         @arg @ref LL_DMA_CHANNEL_4
7593   *         @arg @ref LL_DMA_CHANNEL_5
7594   *         @arg @ref LL_DMA_CHANNEL_6
7595   *         @arg @ref LL_DMA_CHANNEL_7
7596   *         @arg @ref LL_DMA_CHANNEL_8
7597   *         @arg @ref LL_DMA_CHANNEL_9
7598   *         @arg @ref LL_DMA_CHANNEL_10
7599   *         @arg @ref LL_DMA_CHANNEL_11
7600   *         @arg @ref LL_DMA_CHANNEL_12
7601   *         @arg @ref LL_DMA_CHANNEL_13
7602   *         @arg @ref LL_DMA_CHANNEL_14
7603   *         @arg @ref LL_DMA_CHANNEL_15
7604   * @retval None.
7605   */
LL_DMA_EnableIT_HT(const DMA_TypeDef * DMAx,uint32_t Channel)7606 __STATIC_INLINE void LL_DMA_EnableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
7607 {
7608   uint32_t dma_base_addr = (uint32_t)DMAx;
7609   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE);
7610 }
7611 
7612 /**
7613   * @brief Enable transfer complete interrupt.
7614   * @note  This API is used for all available DMA channels.
7615   * @rmtoll CCR           TCIE         LL_DMA_EnableIT_TC
7616   * @param  DMAx DMAx Instance
7617   * @param  Channel This parameter can be one of the following values:
7618   *         @arg @ref LL_DMA_CHANNEL_0
7619   *         @arg @ref LL_DMA_CHANNEL_1
7620   *         @arg @ref LL_DMA_CHANNEL_2
7621   *         @arg @ref LL_DMA_CHANNEL_3
7622   *         @arg @ref LL_DMA_CHANNEL_4
7623   *         @arg @ref LL_DMA_CHANNEL_5
7624   *         @arg @ref LL_DMA_CHANNEL_6
7625   *         @arg @ref LL_DMA_CHANNEL_7
7626   *         @arg @ref LL_DMA_CHANNEL_8
7627   *         @arg @ref LL_DMA_CHANNEL_9
7628   *         @arg @ref LL_DMA_CHANNEL_10
7629   *         @arg @ref LL_DMA_CHANNEL_11
7630   *         @arg @ref LL_DMA_CHANNEL_12
7631   *         @arg @ref LL_DMA_CHANNEL_13
7632   *         @arg @ref LL_DMA_CHANNEL_14
7633   *         @arg @ref LL_DMA_CHANNEL_15
7634   * @retval None.
7635   */
LL_DMA_EnableIT_TC(const DMA_TypeDef * DMAx,uint32_t Channel)7636 __STATIC_INLINE void LL_DMA_EnableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
7637 {
7638   uint32_t dma_base_addr = (uint32_t)DMAx;
7639   SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE);
7640 }
7641 
7642 /**
7643   * @brief Disable trigger overrun interrupt.
7644   * @note  This API is used for all available DMA channels.
7645   * @rmtoll CCR           TOIE       LL_DMA_DisableIT_TO
7646   * @param  DMAx DMAx Instance
7647   * @param  Channel This parameter can be one of the following values:
7648   *         @arg @ref LL_DMA_CHANNEL_0
7649   *         @arg @ref LL_DMA_CHANNEL_1
7650   *         @arg @ref LL_DMA_CHANNEL_2
7651   *         @arg @ref LL_DMA_CHANNEL_3
7652   *         @arg @ref LL_DMA_CHANNEL_4
7653   *         @arg @ref LL_DMA_CHANNEL_5
7654   *         @arg @ref LL_DMA_CHANNEL_6
7655   *         @arg @ref LL_DMA_CHANNEL_7
7656   *         @arg @ref LL_DMA_CHANNEL_8
7657   *         @arg @ref LL_DMA_CHANNEL_9
7658   *         @arg @ref LL_DMA_CHANNEL_10
7659   *         @arg @ref LL_DMA_CHANNEL_11
7660   *         @arg @ref LL_DMA_CHANNEL_12
7661   *         @arg @ref LL_DMA_CHANNEL_13
7662   *         @arg @ref LL_DMA_CHANNEL_14
7663   *         @arg @ref LL_DMA_CHANNEL_15
7664   * @retval None.
7665   */
LL_DMA_DisableIT_TO(const DMA_TypeDef * DMAx,uint32_t Channel)7666 __STATIC_INLINE void LL_DMA_DisableIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
7667 {
7668   uint32_t dma_base_addr = (uint32_t)DMAx;
7669   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE);
7670 }
7671 
7672 /**
7673   * @brief Disable suspension interrupt.
7674   * @note  This API is used for all available DMA channels.
7675   * @rmtoll CCR           SUSPIE       LL_DMA_DisableIT_SUSP
7676   * @param  DMAx DMAx Instance
7677   * @param  Channel This parameter can be one of the following values:
7678   *         @arg @ref LL_DMA_CHANNEL_0
7679   *         @arg @ref LL_DMA_CHANNEL_1
7680   *         @arg @ref LL_DMA_CHANNEL_2
7681   *         @arg @ref LL_DMA_CHANNEL_3
7682   *         @arg @ref LL_DMA_CHANNEL_4
7683   *         @arg @ref LL_DMA_CHANNEL_5
7684   *         @arg @ref LL_DMA_CHANNEL_6
7685   *         @arg @ref LL_DMA_CHANNEL_7
7686   *         @arg @ref LL_DMA_CHANNEL_8
7687   *         @arg @ref LL_DMA_CHANNEL_9
7688   *         @arg @ref LL_DMA_CHANNEL_10
7689   *         @arg @ref LL_DMA_CHANNEL_11
7690   *         @arg @ref LL_DMA_CHANNEL_12
7691   *         @arg @ref LL_DMA_CHANNEL_13
7692   *         @arg @ref LL_DMA_CHANNEL_14
7693   *         @arg @ref LL_DMA_CHANNEL_15
7694   * @retval None.
7695   */
LL_DMA_DisableIT_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)7696 __STATIC_INLINE void LL_DMA_DisableIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
7697 {
7698   uint32_t dma_base_addr = (uint32_t)DMAx;
7699   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE);
7700 }
7701 
7702 /**
7703   * @brief Disable user setting error interrupt.
7704   * @note  This API is used for all available DMA channels.
7705   * @rmtoll CCR           USEIE        LL_DMA_DisableIT_USE
7706   * @param  DMAx DMAx Instance
7707   * @param  Channel This parameter can be one of the following values:
7708   *         @arg @ref LL_DMA_CHANNEL_0
7709   *         @arg @ref LL_DMA_CHANNEL_1
7710   *         @arg @ref LL_DMA_CHANNEL_2
7711   *         @arg @ref LL_DMA_CHANNEL_3
7712   *         @arg @ref LL_DMA_CHANNEL_4
7713   *         @arg @ref LL_DMA_CHANNEL_5
7714   *         @arg @ref LL_DMA_CHANNEL_6
7715   *         @arg @ref LL_DMA_CHANNEL_7
7716   *         @arg @ref LL_DMA_CHANNEL_8
7717   *         @arg @ref LL_DMA_CHANNEL_9
7718   *         @arg @ref LL_DMA_CHANNEL_10
7719   *         @arg @ref LL_DMA_CHANNEL_11
7720   *         @arg @ref LL_DMA_CHANNEL_12
7721   *         @arg @ref LL_DMA_CHANNEL_13
7722   *         @arg @ref LL_DMA_CHANNEL_14
7723   *         @arg @ref LL_DMA_CHANNEL_15
7724   * @retval None.
7725   */
LL_DMA_DisableIT_USE(const DMA_TypeDef * DMAx,uint32_t Channel)7726 __STATIC_INLINE void LL_DMA_DisableIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
7727 {
7728   uint32_t dma_base_addr = (uint32_t)DMAx;
7729   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE);
7730 }
7731 
7732 /**
7733   * @brief Disable update link transfer error interrupt.
7734   * @note  This API is used for all available DMA channels.
7735   * @rmtoll CCR           ULEIE        LL_DMA_DisableIT_ULE
7736   * @param  DMAx DMAx Instance
7737   * @param  Channel This parameter can be one of the following values:
7738   *         @arg @ref LL_DMA_CHANNEL_0
7739   *         @arg @ref LL_DMA_CHANNEL_1
7740   *         @arg @ref LL_DMA_CHANNEL_2
7741   *         @arg @ref LL_DMA_CHANNEL_3
7742   *         @arg @ref LL_DMA_CHANNEL_4
7743   *         @arg @ref LL_DMA_CHANNEL_5
7744   *         @arg @ref LL_DMA_CHANNEL_6
7745   *         @arg @ref LL_DMA_CHANNEL_7
7746   *         @arg @ref LL_DMA_CHANNEL_8
7747   *         @arg @ref LL_DMA_CHANNEL_9
7748   *         @arg @ref LL_DMA_CHANNEL_10
7749   *         @arg @ref LL_DMA_CHANNEL_11
7750   *         @arg @ref LL_DMA_CHANNEL_12
7751   *         @arg @ref LL_DMA_CHANNEL_13
7752   *         @arg @ref LL_DMA_CHANNEL_14
7753   *         @arg @ref LL_DMA_CHANNEL_15
7754   * @retval None.
7755   */
LL_DMA_DisableIT_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)7756 __STATIC_INLINE void LL_DMA_DisableIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
7757 {
7758   uint32_t dma_base_addr = (uint32_t)DMAx;
7759   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE);
7760 }
7761 
7762 /**
7763   * @brief Disable data transfer error interrupt.
7764   * @note  This API is used for all available DMA channels.
7765   * @rmtoll CCR           DTEIE        LL_DMA_DisableIT_DTE
7766   * @param  DMAx DMAx Instance
7767   * @param  Channel This parameter can be one of the following values:
7768   *         @arg @ref LL_DMA_CHANNEL_0
7769   *         @arg @ref LL_DMA_CHANNEL_1
7770   *         @arg @ref LL_DMA_CHANNEL_2
7771   *         @arg @ref LL_DMA_CHANNEL_3
7772   *         @arg @ref LL_DMA_CHANNEL_4
7773   *         @arg @ref LL_DMA_CHANNEL_5
7774   *         @arg @ref LL_DMA_CHANNEL_6
7775   *         @arg @ref LL_DMA_CHANNEL_7
7776   *         @arg @ref LL_DMA_CHANNEL_8
7777   *         @arg @ref LL_DMA_CHANNEL_9
7778   *         @arg @ref LL_DMA_CHANNEL_10
7779   *         @arg @ref LL_DMA_CHANNEL_11
7780   *         @arg @ref LL_DMA_CHANNEL_12
7781   *         @arg @ref LL_DMA_CHANNEL_13
7782   *         @arg @ref LL_DMA_CHANNEL_14
7783   *         @arg @ref LL_DMA_CHANNEL_15
7784   * @retval None.
7785   */
LL_DMA_DisableIT_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)7786 __STATIC_INLINE void LL_DMA_DisableIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
7787 {
7788   uint32_t dma_base_addr = (uint32_t)DMAx;
7789   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE);
7790 }
7791 
7792 /**
7793   * @brief Disable half transfer complete interrupt.
7794   * @note  This API is used for all available DMA channels.
7795   * @rmtoll CCR           HTIE         LL_DMA_DisableIT_HT
7796   * @param  DMAx DMAx Instance
7797   * @param  Channel This parameter can be one of the following values:
7798   *         @arg @ref LL_DMA_CHANNEL_0
7799   *         @arg @ref LL_DMA_CHANNEL_1
7800   *         @arg @ref LL_DMA_CHANNEL_2
7801   *         @arg @ref LL_DMA_CHANNEL_3
7802   *         @arg @ref LL_DMA_CHANNEL_4
7803   *         @arg @ref LL_DMA_CHANNEL_5
7804   *         @arg @ref LL_DMA_CHANNEL_6
7805   *         @arg @ref LL_DMA_CHANNEL_7
7806   *         @arg @ref LL_DMA_CHANNEL_8
7807   *         @arg @ref LL_DMA_CHANNEL_9
7808   *         @arg @ref LL_DMA_CHANNEL_10
7809   *         @arg @ref LL_DMA_CHANNEL_11
7810   *         @arg @ref LL_DMA_CHANNEL_12
7811   *         @arg @ref LL_DMA_CHANNEL_13
7812   *         @arg @ref LL_DMA_CHANNEL_14
7813   *         @arg @ref LL_DMA_CHANNEL_15
7814   * @retval None.
7815   */
LL_DMA_DisableIT_HT(const DMA_TypeDef * DMAx,uint32_t Channel)7816 __STATIC_INLINE void LL_DMA_DisableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
7817 {
7818   uint32_t dma_base_addr = (uint32_t)DMAx;
7819   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE);
7820 }
7821 
7822 /**
7823   * @brief Disable transfer complete interrupt.
7824   * @note  This API is used for all available DMA channels.
7825   * @rmtoll CCR           TCIE         LL_DMA_DisableIT_TC
7826   * @param  DMAx DMAx Instance
7827   * @param  Channel This parameter can be one of the following values:
7828   *         @arg @ref LL_DMA_CHANNEL_0
7829   *         @arg @ref LL_DMA_CHANNEL_1
7830   *         @arg @ref LL_DMA_CHANNEL_2
7831   *         @arg @ref LL_DMA_CHANNEL_3
7832   *         @arg @ref LL_DMA_CHANNEL_4
7833   *         @arg @ref LL_DMA_CHANNEL_5
7834   *         @arg @ref LL_DMA_CHANNEL_6
7835   *         @arg @ref LL_DMA_CHANNEL_7
7836   *         @arg @ref LL_DMA_CHANNEL_8
7837   *         @arg @ref LL_DMA_CHANNEL_9
7838   *         @arg @ref LL_DMA_CHANNEL_10
7839   *         @arg @ref LL_DMA_CHANNEL_11
7840   *         @arg @ref LL_DMA_CHANNEL_12
7841   *         @arg @ref LL_DMA_CHANNEL_13
7842   *         @arg @ref LL_DMA_CHANNEL_14
7843   *         @arg @ref LL_DMA_CHANNEL_15
7844   * @retval None.
7845   */
LL_DMA_DisableIT_TC(const DMA_TypeDef * DMAx,uint32_t Channel)7846 __STATIC_INLINE void LL_DMA_DisableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
7847 {
7848   uint32_t dma_base_addr = (uint32_t)DMAx;
7849   CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE);
7850 }
7851 
7852 /**
7853   * @brief Check if trigger overrun interrupt is enabled.
7854   * @note  This API is used for all available DMA channels.
7855   * @rmtoll CCR           TOIE       LL_DMA_IsEnabledIT_TO
7856   * @param  DMAx DMAx Instance
7857   * @param  Channel This parameter can be one of the following values:
7858   *         @arg @ref LL_DMA_CHANNEL_0
7859   *         @arg @ref LL_DMA_CHANNEL_1
7860   *         @arg @ref LL_DMA_CHANNEL_2
7861   *         @arg @ref LL_DMA_CHANNEL_3
7862   *         @arg @ref LL_DMA_CHANNEL_4
7863   *         @arg @ref LL_DMA_CHANNEL_5
7864   *         @arg @ref LL_DMA_CHANNEL_6
7865   *         @arg @ref LL_DMA_CHANNEL_7
7866   *         @arg @ref LL_DMA_CHANNEL_8
7867   *         @arg @ref LL_DMA_CHANNEL_9
7868   *         @arg @ref LL_DMA_CHANNEL_10
7869   *         @arg @ref LL_DMA_CHANNEL_11
7870   *         @arg @ref LL_DMA_CHANNEL_12
7871   *         @arg @ref LL_DMA_CHANNEL_13
7872   *         @arg @ref LL_DMA_CHANNEL_14
7873   *         @arg @ref LL_DMA_CHANNEL_15
7874   * @retval State of bit (1 or 0).
7875   */
LL_DMA_IsEnabledIT_TO(const DMA_TypeDef * DMAx,uint32_t Channel)7876 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
7877 {
7878   uint32_t dma_base_addr = (uint32_t)DMAx;
7879   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE)
7880            == DMA_CCR_TOIE) ? 1UL : 0UL);
7881 }
7882 
7883 /**
7884   * @brief Check if suspension interrupt is enabled.
7885   * @note  This API is used for all available DMA channels.
7886   * @rmtoll CCR           SUSPIE       LL_DMA_IsEnabledIT_SUSP
7887   * @param  DMAx DMAx Instance
7888   * @param  Channel This parameter can be one of the following values:
7889   *         @arg @ref LL_DMA_CHANNEL_0
7890   *         @arg @ref LL_DMA_CHANNEL_1
7891   *         @arg @ref LL_DMA_CHANNEL_2
7892   *         @arg @ref LL_DMA_CHANNEL_3
7893   *         @arg @ref LL_DMA_CHANNEL_4
7894   *         @arg @ref LL_DMA_CHANNEL_5
7895   *         @arg @ref LL_DMA_CHANNEL_6
7896   *         @arg @ref LL_DMA_CHANNEL_7
7897   *         @arg @ref LL_DMA_CHANNEL_8
7898   *         @arg @ref LL_DMA_CHANNEL_9
7899   *         @arg @ref LL_DMA_CHANNEL_10
7900   *         @arg @ref LL_DMA_CHANNEL_11
7901   *         @arg @ref LL_DMA_CHANNEL_12
7902   *         @arg @ref LL_DMA_CHANNEL_13
7903   *         @arg @ref LL_DMA_CHANNEL_14
7904   *         @arg @ref LL_DMA_CHANNEL_15
7905   * @retval State of bit (1 or 0).
7906   */
LL_DMA_IsEnabledIT_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)7907 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
7908 {
7909   uint32_t dma_base_addr = (uint32_t)DMAx;
7910   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE)
7911            == DMA_CCR_SUSPIE) ? 1UL : 0UL);
7912 }
7913 
7914 /**
7915   * @brief Check if user setting error interrupt is enabled.
7916   * @note  This API is used for all available DMA channels.
7917   * @rmtoll CCR           USEIE        LL_DMA_IsEnabledIT_USE
7918   * @param  DMAx DMAx Instance
7919   * @param  Channel This parameter can be one of the following values:
7920   *         @arg @ref LL_DMA_CHANNEL_0
7921   *         @arg @ref LL_DMA_CHANNEL_1
7922   *         @arg @ref LL_DMA_CHANNEL_2
7923   *         @arg @ref LL_DMA_CHANNEL_3
7924   *         @arg @ref LL_DMA_CHANNEL_4
7925   *         @arg @ref LL_DMA_CHANNEL_5
7926   *         @arg @ref LL_DMA_CHANNEL_6
7927   *         @arg @ref LL_DMA_CHANNEL_7
7928   *         @arg @ref LL_DMA_CHANNEL_8
7929   *         @arg @ref LL_DMA_CHANNEL_9
7930   *         @arg @ref LL_DMA_CHANNEL_10
7931   *         @arg @ref LL_DMA_CHANNEL_11
7932   *         @arg @ref LL_DMA_CHANNEL_12
7933   *         @arg @ref LL_DMA_CHANNEL_13
7934   *         @arg @ref LL_DMA_CHANNEL_14
7935   *         @arg @ref LL_DMA_CHANNEL_15
7936   * @retval State of bit (1 or 0).
7937   */
LL_DMA_IsEnabledIT_USE(const DMA_TypeDef * DMAx,uint32_t Channel)7938 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
7939 {
7940   uint32_t dma_base_addr = (uint32_t)DMAx;
7941   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE)
7942            == DMA_CCR_USEIE) ? 1UL : 0UL);
7943 }
7944 
7945 /**
7946   * @brief Check if update link transfer error interrupt is enabled.
7947   * @note  This API is used for all available DMA channels.
7948   * @rmtoll CCR        ULEIE         LL_DMA_IsEnabledIT_ULE
7949   * @param  DMAx DMAx Instance
7950   * @param  Channel This parameter can be one of the following values:
7951   *         @arg @ref LL_DMA_CHANNEL_0
7952   *         @arg @ref LL_DMA_CHANNEL_1
7953   *         @arg @ref LL_DMA_CHANNEL_2
7954   *         @arg @ref LL_DMA_CHANNEL_3
7955   *         @arg @ref LL_DMA_CHANNEL_4
7956   *         @arg @ref LL_DMA_CHANNEL_5
7957   *         @arg @ref LL_DMA_CHANNEL_6
7958   *         @arg @ref LL_DMA_CHANNEL_7
7959   *         @arg @ref LL_DMA_CHANNEL_8
7960   *         @arg @ref LL_DMA_CHANNEL_9
7961   *         @arg @ref LL_DMA_CHANNEL_10
7962   *         @arg @ref LL_DMA_CHANNEL_11
7963   *         @arg @ref LL_DMA_CHANNEL_12
7964   *         @arg @ref LL_DMA_CHANNEL_13
7965   *         @arg @ref LL_DMA_CHANNEL_14
7966   *         @arg @ref LL_DMA_CHANNEL_15
7967   * @retval State of bit (1 or 0).
7968   */
LL_DMA_IsEnabledIT_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)7969 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
7970 {
7971   uint32_t dma_base_addr = (uint32_t)DMAx;
7972   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE)
7973            == DMA_CCR_ULEIE) ? 1UL : 0UL);
7974 }
7975 
7976 /**
7977   * @brief Check if data transfer error interrupt is enabled.
7978   * @note  This API is used for all available DMA channels.
7979   * @rmtoll CCR        DTEIE         LL_DMA_IsEnabledIT_DTE
7980   * @param  DMAx DMAx Instance
7981   * @param  Channel This parameter can be one of the following values:
7982   *         @arg @ref LL_DMA_CHANNEL_0
7983   *         @arg @ref LL_DMA_CHANNEL_1
7984   *         @arg @ref LL_DMA_CHANNEL_2
7985   *         @arg @ref LL_DMA_CHANNEL_3
7986   *         @arg @ref LL_DMA_CHANNEL_4
7987   *         @arg @ref LL_DMA_CHANNEL_5
7988   *         @arg @ref LL_DMA_CHANNEL_6
7989   *         @arg @ref LL_DMA_CHANNEL_7
7990   *         @arg @ref LL_DMA_CHANNEL_8
7991   *         @arg @ref LL_DMA_CHANNEL_9
7992   *         @arg @ref LL_DMA_CHANNEL_10
7993   *         @arg @ref LL_DMA_CHANNEL_11
7994   *         @arg @ref LL_DMA_CHANNEL_12
7995   *         @arg @ref LL_DMA_CHANNEL_13
7996   *         @arg @ref LL_DMA_CHANNEL_14
7997   *         @arg @ref LL_DMA_CHANNEL_15
7998   * @retval State of bit (1 or 0).
7999   */
LL_DMA_IsEnabledIT_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)8000 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
8001 {
8002   uint32_t dma_base_addr = (uint32_t)DMAx;
8003   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE)
8004            == DMA_CCR_DTEIE) ? 1UL : 0UL);
8005 }
8006 
8007 /**
8008   * @brief Check if half transfer complete interrupt is enabled.
8009   * @note  This API is used for all available DMA channels.
8010   * @rmtoll CCR        HTIE         LL_DMA_IsEnabledIT_HT
8011   * @param  DMAx DMAx Instance
8012   * @param  Channel This parameter can be one of the following values:
8013   *         @arg @ref LL_DMA_CHANNEL_0
8014   *         @arg @ref LL_DMA_CHANNEL_1
8015   *         @arg @ref LL_DMA_CHANNEL_2
8016   *         @arg @ref LL_DMA_CHANNEL_3
8017   *         @arg @ref LL_DMA_CHANNEL_4
8018   *         @arg @ref LL_DMA_CHANNEL_5
8019   *         @arg @ref LL_DMA_CHANNEL_6
8020   *         @arg @ref LL_DMA_CHANNEL_7
8021   *         @arg @ref LL_DMA_CHANNEL_8
8022   *         @arg @ref LL_DMA_CHANNEL_9
8023   *         @arg @ref LL_DMA_CHANNEL_10
8024   *         @arg @ref LL_DMA_CHANNEL_11
8025   *         @arg @ref LL_DMA_CHANNEL_12
8026   *         @arg @ref LL_DMA_CHANNEL_13
8027   *         @arg @ref LL_DMA_CHANNEL_14
8028   *         @arg @ref LL_DMA_CHANNEL_15
8029   * @retval State of bit (1 or 0).
8030   */
LL_DMA_IsEnabledIT_HT(const DMA_TypeDef * DMAx,uint32_t Channel)8031 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
8032 {
8033   uint32_t dma_base_addr = (uint32_t)DMAx;
8034   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE)
8035            == DMA_CCR_HTIE) ? 1UL : 0UL);
8036 }
8037 
8038 /**
8039   * @brief Check if transfer complete interrupt is enabled.
8040   * @note  This API is used for all available DMA channels.
8041   * @rmtoll CCR        TCIE         LL_DMA_IsEnabledIT_TC
8042   * @param  DMAx DMAx Instance
8043   * @param  Channel This parameter can be one of the following values:
8044   *         @arg @ref LL_DMA_CHANNEL_0
8045   *         @arg @ref LL_DMA_CHANNEL_1
8046   *         @arg @ref LL_DMA_CHANNEL_2
8047   *         @arg @ref LL_DMA_CHANNEL_3
8048   *         @arg @ref LL_DMA_CHANNEL_4
8049   *         @arg @ref LL_DMA_CHANNEL_5
8050   *         @arg @ref LL_DMA_CHANNEL_6
8051   *         @arg @ref LL_DMA_CHANNEL_7
8052   *         @arg @ref LL_DMA_CHANNEL_8
8053   *         @arg @ref LL_DMA_CHANNEL_9
8054   *         @arg @ref LL_DMA_CHANNEL_10
8055   *         @arg @ref LL_DMA_CHANNEL_11
8056   *         @arg @ref LL_DMA_CHANNEL_12
8057   *         @arg @ref LL_DMA_CHANNEL_13
8058   *         @arg @ref LL_DMA_CHANNEL_14
8059   *         @arg @ref LL_DMA_CHANNEL_15
8060   * @retval State of bit (1 or 0).
8061   */
LL_DMA_IsEnabledIT_TC(const DMA_TypeDef * DMAx,uint32_t Channel)8062 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
8063 {
8064   uint32_t dma_base_addr = (uint32_t)DMAx;
8065   return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE)
8066            == DMA_CCR_TCIE) ? 1UL : 0UL);
8067 }
8068 /**
8069   * @}
8070   */
8071 
8072 #if defined (USE_FULL_LL_DRIVER)
8073 /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
8074   * @{
8075   */
8076 uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct);
8077 uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel);
8078 
8079 void     LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
8080 void     LL_DMA_ListStructInit(LL_DMA_InitLinkedListTypeDef *DMA_InitLinkedListStruct);
8081 void     LL_DMA_NodeStructInit(LL_DMA_InitNodeTypeDef *DMA_InitNodeStruct);
8082 
8083 uint32_t LL_DMA_List_Init(DMA_TypeDef *DMAx, uint32_t Channel,
8084                           LL_DMA_InitLinkedListTypeDef *DMA_InitLinkedListStruct);
8085 uint32_t LL_DMA_List_DeInit(DMA_TypeDef *DMAx, uint32_t Channel);
8086 
8087 uint32_t LL_DMA_CreateLinkNode(const LL_DMA_InitNodeTypeDef *DMA_InitNodeStruct, LL_DMA_LinkNodeTypeDef *pNode);
8088 void     LL_DMA_ConnectLinkNode(LL_DMA_LinkNodeTypeDef *pPrevLinkNode, uint32_t PrevNodeCLLRIdx,
8089                                 LL_DMA_LinkNodeTypeDef *pNewLinkNode, uint32_t NewNodeCLLRIdx);
8090 void     LL_DMA_DisconnectNextLinkNode(LL_DMA_LinkNodeTypeDef *pLinkNode, uint32_t LinkNodeCLLRIdx);
8091 /**
8092   * @}
8093   */
8094 #endif /* USE_FULL_LL_DRIVER */
8095 
8096 /**
8097   * @}
8098   */
8099 
8100 /**
8101   * @}
8102   */
8103 
8104 #endif /* GPDMA1 || HPDMA1 */
8105 
8106 /**
8107   * @}
8108   */
8109 
8110 #ifdef __cplusplus
8111 }
8112 #endif /* __cplusplus */
8113 
8114 #endif /* STM32N6xx_LL_DMA_H */
8115 
8116