1 /**
2 ******************************************************************************
3 * @file stm32h7xx_ll_bdma.h
4 * @author MCD Application Team
5 * @brief Header file of BDMA LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2017 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32H7xx_LL_BDMA_H
21 #define STM32H7xx_LL_BDMA_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32h7xx.h"
29 #include "stm32h7xx_ll_dmamux.h"
30
31 /** @addtogroup STM32H7xx_LL_Driver
32 * @{
33 */
34
35 #if defined (BDMA) || defined (BDMA1) || defined (BDMA2)
36
37 /** @defgroup BDMA_LL BDMA
38 * @{
39 */
40
41 /* Private types -------------------------------------------------------------*/
42 /* Private variables ---------------------------------------------------------*/
43 /** @defgroup BDMA_LL_Private_Variables BDMA Private Variables
44 * @{
45 */
46 /* Array used to get the BDMA channel register offset versus channel index LL_BDMA_CHANNEL_x */
47 static const uint8_t LL_BDMA_CH_OFFSET_TAB[] =
48 {
49 (uint8_t)(BDMA_Channel0_BASE - BDMA_BASE),
50 (uint8_t)(BDMA_Channel1_BASE - BDMA_BASE),
51 (uint8_t)(BDMA_Channel2_BASE - BDMA_BASE),
52 (uint8_t)(BDMA_Channel3_BASE - BDMA_BASE),
53 (uint8_t)(BDMA_Channel4_BASE - BDMA_BASE),
54 (uint8_t)(BDMA_Channel5_BASE - BDMA_BASE),
55 (uint8_t)(BDMA_Channel6_BASE - BDMA_BASE),
56 (uint8_t)(BDMA_Channel7_BASE - BDMA_BASE)
57 };
58 /**
59 * @}
60 */
61
62 /* Private constants ---------------------------------------------------------*/
63 /* Private macros ------------------------------------------------------------*/
64 /** @defgroup BDMA_LL_Private_Macros BDMA Private Macros
65 * @{
66 */
67 #if !defined(UNUSED)
68 #define UNUSED(x) ((void)(x))
69 #endif
70 /**
71 * @}
72 */
73 /* Exported types ------------------------------------------------------------*/
74 #if defined(USE_FULL_LL_DRIVER)
75 /** @defgroup BDMA_LL_ES_INIT BDMA Exported Init structure
76 * @{
77 */
78 typedef struct
79 {
80 uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for BDMA transfer
81 or as Source base address in case of memory to memory transfer direction.
82
83 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
84
85 uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer
86 or as Destination base address in case of memory to memory transfer direction.
87
88 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
89
90 uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral,
91 from memory to memory or from peripheral to memory.
92 This parameter can be a value of @ref BDMA_LL_EC_DIRECTION
93
94 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetDataTransferDirection(). */
95
96 uint32_t Mode; /*!< Specifies the normal or circular operation mode.
97 This parameter can be a value of @ref BDMA_LL_EC_MODE
98 @note: The circular buffer mode cannot be used if the memory to memory
99 data transfer direction is configured on the selected Channel
100
101 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetMode(). */
102
103 uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction
104 is incremented or not.
105 This parameter can be a value of @ref BDMA_LL_EC_PERIPH
106
107 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetPeriphIncMode(). */
108
109 uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction
110 is incremented or not.
111 This parameter can be a value of @ref BDMA_LL_EC_MEMORY
112
113 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetMemoryIncMode(). */
114
115 uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word)
116 in case of memory to memory transfer direction.
117 This parameter can be a value of @ref BDMA_LL_EC_PDATAALIGN
118
119 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetPeriphSize(). */
120
121 uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word)
122 in case of memory to memory transfer direction.
123 This parameter can be a value of @ref BDMA_LL_EC_MDATAALIGN
124
125 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetMemorySize(). */
126
127 uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit.
128 The data unit is equal to the source buffer configuration set in PeripheralSize
129 or MemorySize parameters depending in the transfer direction.
130 This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF
131
132 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetDataLength(). */
133
134 uint32_t PeriphRequest; /*!< Specifies the peripheral request.
135 This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST
136
137 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetPeriphRequest(). */
138
139 uint32_t Priority; /*!< Specifies the channel priority level.
140 This parameter can be a value of @ref BDMA_LL_EC_PRIORITY
141
142 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetChannelPriorityLevel(). */
143
144 uint32_t DoubleBufferMode; /*!< Specifies the double buffer mode.
145 This parameter can be a value of @ref BDMA_LL_EC_DOUBLEBUFFER_MODE
146
147 This feature can be modified afterwards using unitary function @ref LL_BDMA_EnableDoubleBufferMode() & LL_BDMA_DisableDoubleBufferMode(). */
148
149 uint32_t TargetMemInDoubleBufferMode; /*!< Specifies the target memory in double buffer mode.
150 This parameter can be a value of @ref BDMA_LL_EC_CURRENTTARGETMEM
151
152 This feature can be modified afterwards using unitary function @ref LL_BDMA_SetCurrentTargetMem(). */
153 } LL_BDMA_InitTypeDef;
154 /**
155 * @}
156 */
157 #endif /* USE_FULL_LL_DRIVER */
158
159 /* Exported constants --------------------------------------------------------*/
160 /** @defgroup BDMA_LL_Exported_Constants BDMA Exported Constants
161 * @{
162 */
163 /** @defgroup BDMA_LL_EC_CLEAR_FLAG Clear Flags Defines
164 * @brief Flags defines which can be used with LL_BDMA_WriteReg function
165 * @{
166 */
167 #define LL_BDMA_IFCR_CGIF1 BDMA_IFCR_CGIF1 /*!< Channel 1 global flag */
168 #define LL_BDMA_IFCR_CTCIF1 BDMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */
169 #define LL_BDMA_IFCR_CHTIF1 BDMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */
170 #define LL_BDMA_IFCR_CTEIF1 BDMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */
171 #define LL_BDMA_IFCR_CGIF2 BDMA_IFCR_CGIF2 /*!< Channel 2 global flag */
172 #define LL_BDMA_IFCR_CTCIF2 BDMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */
173 #define LL_BDMA_IFCR_CHTIF2 BDMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */
174 #define LL_BDMA_IFCR_CTEIF2 BDMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */
175 #define LL_BDMA_IFCR_CGIF3 BDMA_IFCR_CGIF3 /*!< Channel 3 global flag */
176 #define LL_BDMA_IFCR_CTCIF3 BDMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */
177 #define LL_BDMA_IFCR_CHTIF3 BDMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */
178 #define LL_BDMA_IFCR_CTEIF3 BDMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */
179 #define LL_BDMA_IFCR_CGIF4 BDMA_IFCR_CGIF4 /*!< Channel 4 global flag */
180 #define LL_BDMA_IFCR_CTCIF4 BDMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */
181 #define LL_BDMA_IFCR_CHTIF4 BDMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */
182 #define LL_BDMA_IFCR_CTEIF4 BDMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */
183 #define LL_BDMA_IFCR_CGIF5 BDMA_IFCR_CGIF5 /*!< Channel 5 global flag */
184 #define LL_BDMA_IFCR_CTCIF5 BDMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */
185 #define LL_BDMA_IFCR_CHTIF5 BDMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */
186 #define LL_BDMA_IFCR_CTEIF5 BDMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */
187 #define LL_BDMA_IFCR_CGIF6 BDMA_IFCR_CGIF6 /*!< Channel 6 global flag */
188 #define LL_BDMA_IFCR_CTCIF6 BDMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */
189 #define LL_BDMA_IFCR_CHTIF6 BDMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */
190 #define LL_BDMA_IFCR_CTEIF6 BDMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */
191 #define LL_BDMA_IFCR_CGIF7 BDMA_IFCR_CGIF7 /*!< Channel 7 global flag */
192 #define LL_BDMA_IFCR_CTCIF7 BDMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */
193 #define LL_BDMA_IFCR_CHTIF7 BDMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */
194 #define LL_BDMA_IFCR_CTEIF7 BDMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */
195 /**
196 * @}
197 */
198
199 /** @defgroup BDMA_LL_EC_GET_FLAG Get Flags Defines
200 * @brief Flags defines which can be used with LL_BDMA_ReadReg function
201 * @{
202 */
203 #define LL_BDMA_ISR_GIF0 BDMA_ISR_GIF0 /*!< Channel 1 global flag */
204 #define LL_BDMA_ISR_TCIF0 BDMA_ISR_TCIF0 /*!< Channel 1 transfer complete flag */
205 #define LL_BDMA_ISR_HTIF0 BDMA_ISR_HTIF0 /*!< Channel 1 half transfer flag */
206 #define LL_BDMA_ISR_TEIF0 BDMA_ISR_TEIF0 /*!< Channel 1 transfer error flag */
207 #define LL_BDMA_ISR_GIF1 BDMA_ISR_GIF1 /*!< Channel 1 global flag */
208 #define LL_BDMA_ISR_TCIF1 BDMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */
209 #define LL_BDMA_ISR_HTIF1 BDMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */
210 #define LL_BDMA_ISR_TEIF1 BDMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */
211 #define LL_BDMA_ISR_GIF2 BDMA_ISR_GIF2 /*!< Channel 2 global flag */
212 #define LL_BDMA_ISR_TCIF2 BDMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */
213 #define LL_BDMA_ISR_HTIF2 BDMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */
214 #define LL_BDMA_ISR_TEIF2 BDMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */
215 #define LL_BDMA_ISR_GIF3 BDMA_ISR_GIF3 /*!< Channel 3 global flag */
216 #define LL_BDMA_ISR_TCIF3 BDMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */
217 #define LL_BDMA_ISR_HTIF3 BDMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */
218 #define LL_BDMA_ISR_TEIF3 BDMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */
219 #define LL_BDMA_ISR_GIF4 BDMA_ISR_GIF4 /*!< Channel 4 global flag */
220 #define LL_BDMA_ISR_TCIF4 BDMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */
221 #define LL_BDMA_ISR_HTIF4 BDMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */
222 #define LL_BDMA_ISR_TEIF4 BDMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */
223 #define LL_BDMA_ISR_GIF5 BDMA_ISR_GIF5 /*!< Channel 5 global flag */
224 #define LL_BDMA_ISR_TCIF5 BDMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */
225 #define LL_BDMA_ISR_HTIF5 BDMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */
226 #define LL_BDMA_ISR_TEIF5 BDMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */
227 #define LL_BDMA_ISR_GIF6 BDMA_ISR_GIF6 /*!< Channel 6 global flag */
228 #define LL_BDMA_ISR_TCIF6 BDMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */
229 #define LL_BDMA_ISR_HTIF6 BDMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */
230 #define LL_BDMA_ISR_TEIF6 BDMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */
231 #define LL_BDMA_ISR_GIF7 BDMA_ISR_GIF7 /*!< Channel 7 global flag */
232 #define LL_BDMA_ISR_TCIF7 BDMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */
233 #define LL_BDMA_ISR_HTIF7 BDMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */
234 #define LL_BDMA_ISR_TEIF7 BDMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */
235 /**
236 * @}
237 */
238
239 /** @defgroup BDMA_LL_EC_IT IT Defines
240 * @brief IT defines which can be used with LL_BDMA_ReadReg and LL_BDMA_WriteReg functions
241 * @{
242 */
243 #define LL_BDMA_CCR_TCIE BDMA_CCR_TCIE /*!< Transfer complete interrupt */
244 #define LL_BDMA_CCR_HTIE BDMA_CCR_HTIE /*!< Half Transfer interrupt */
245 #define LL_BDMA_CCR_TEIE BDMA_CCR_TEIE /*!< Transfer error interrupt */
246 /**
247 * @}
248 */
249
250 /** @defgroup BDMA_LL_EC_CHANNEL CHANNEL
251 * @{
252 */
253 #define LL_BDMA_CHANNEL_0 0x00000000U /*!< DMA Channel 0 */
254 #define LL_BDMA_CHANNEL_1 0x00000001U /*!< BDMA Channel 1 */
255 #define LL_BDMA_CHANNEL_2 0x00000002U /*!< BDMA Channel 2 */
256 #define LL_BDMA_CHANNEL_3 0x00000003U /*!< BDMA Channel 3 */
257 #define LL_BDMA_CHANNEL_4 0x00000004U /*!< BDMA Channel 4 */
258 #define LL_BDMA_CHANNEL_5 0x00000005U /*!< BDMA Channel 5 */
259 #define LL_BDMA_CHANNEL_6 0x00000006U /*!< BDMA Channel 6 */
260 #define LL_BDMA_CHANNEL_7 0x00000007U /*!< BDMA Channel 7 */
261 #if defined(USE_FULL_LL_DRIVER)
262 #define LL_BDMA_CHANNEL_ALL 0xFFFF0000U /*!< BDMA Channel all (used only for function @ref LL_BDMA_DeInit(). */
263 #endif /*USE_FULL_LL_DRIVER*/
264 /**
265 * @}
266 */
267
268 /** @defgroup BDMA_LL_EC_DIRECTION Transfer Direction
269 * @{
270 */
271 #define LL_BDMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */
272 #define LL_BDMA_DIRECTION_MEMORY_TO_PERIPH BDMA_CCR_DIR /*!< Memory to peripheral direction */
273 #define LL_BDMA_DIRECTION_MEMORY_TO_MEMORY BDMA_CCR_MEM2MEM /*!< Memory to memory direction */
274 /**
275 * @}
276 */
277
278 /** @defgroup BDMA_LL_EC_MODE Transfer mode
279 * @{
280 */
281 #define LL_BDMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */
282 #define LL_BDMA_MODE_CIRCULAR BDMA_CCR_CIRC /*!< Circular Mode */
283 /**
284 * @}
285 */
286
287 /** @defgroup BDMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE
288 * @{
289 */
290 #define LL_BDMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering mode */
291 #define LL_BDMA_DOUBLEBUFFER_MODE_ENABLE BDMA_CCR_DBM /*!< Enable double buffering mode */
292 /**
293 * @}
294 */
295
296 /** @defgroup BDMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM
297 * @{
298 */
299 #define LL_BDMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentTarget Memory to Memory 0 */
300 #define LL_BDMA_CURRENTTARGETMEM1 BDMA_CCR_CT /*!< Set CurrentTarget Memory to Memory 1 */
301 /**
302 * @}
303 */
304
305 /** @defgroup BDMA_LL_EC_PERIPH Peripheral increment mode
306 * @{
307 */
308 #define LL_BDMA_PERIPH_INCREMENT BDMA_CCR_PINC /*!< Peripheral increment mode Enable */
309 #define LL_BDMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */
310 /**
311 * @}
312 */
313
314 /** @defgroup BDMA_LL_EC_MEMORY Memory increment mode
315 * @{
316 */
317 #define LL_BDMA_MEMORY_INCREMENT BDMA_CCR_MINC /*!< Memory increment mode Enable */
318 #define LL_BDMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */
319 /**
320 * @}
321 */
322
323 /** @defgroup BDMA_LL_EC_PDATAALIGN Peripheral data alignment
324 * @{
325 */
326 #define LL_BDMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */
327 #define LL_BDMA_PDATAALIGN_HALFWORD BDMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */
328 #define LL_BDMA_PDATAALIGN_WORD BDMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */
329 /**
330 * @}
331 */
332
333 /** @defgroup BDMA_LL_EC_MDATAALIGN Memory data alignment
334 * @{
335 */
336 #define LL_BDMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */
337 #define LL_BDMA_MDATAALIGN_HALFWORD BDMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */
338 #define LL_BDMA_MDATAALIGN_WORD BDMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */
339 /**
340 * @}
341 */
342
343 /** @defgroup BDMA_LL_EC_PRIORITY Transfer Priority level
344 * @{
345 */
346 #define LL_BDMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */
347 #define LL_BDMA_PRIORITY_MEDIUM BDMA_CCR_PL_0 /*!< Priority level : Medium */
348 #define LL_BDMA_PRIORITY_HIGH BDMA_CCR_PL_1 /*!< Priority level : High */
349 #define LL_BDMA_PRIORITY_VERYHIGH BDMA_CCR_PL /*!< Priority level : Very_High */
350 /**
351 * @}
352 */
353
354
355 /**
356 * @}
357 */
358 /* Exported macro ------------------------------------------------------------*/
359 /** @defgroup BDMA_LL_Exported_Macros BDMA Exported Macros
360 * @{
361 */
362
363 /** @defgroup BDMA_LL_EM_WRITE_READ Common Write and read registers macros
364 * @{
365 */
366 /**
367 * @brief Write a value in BDMA register
368 * @param __INSTANCE__ BDMA Instance
369 * @param __REG__ Register to be written
370 * @param __VALUE__ Value to be written in the register
371 * @retval None
372 */
373 #define LL_BDMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
374
375 /**
376 * @brief Read a value in BDMA register
377 * @param __INSTANCE__ BDMA Instance
378 * @param __REG__ Register to be read
379 * @retval Register value
380 */
381 #define LL_BDMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
382 /**
383 * @}
384 */
385
386 /** @defgroup BDMA_LL_EM_CONVERT_DMAxCHANNELy Convert BDMAxChannely
387 * @{
388 */
389 /**
390 * @brief Convert BDMAx_Channely into BDMAx
391 * @param __CHANNEL_INSTANCE__ BDMAx_Channely
392 * @retval BDMAx
393 */
394 #if defined (BDMA1)
395 #define __LL_BDMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \
396 (((uint32_t)(__CHANNEL_INSTANCE__) < LL_BDMA_CHANNEL_0) ? BDMA1 : BDMA)
397 #else
398 #define __LL_BDMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (BDMA)
399 #endif /* BDMA1 */
400
401 /**
402 * @brief Convert BDMAx_Channely into LL_BDMA_CHANNEL_y
403 * @param __CHANNEL_INSTANCE__ BDMAx_Channely
404 * @retval LL_BDMA_CHANNEL_y
405 */
406 #if defined (BDMA1)
407 #define __LL_BDMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
408 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel0)) ? LL_BDMA_CHANNEL_0 : \
409 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel0)) ? LL_BDMA_CHANNEL_0 : \
410 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel1)) ? LL_BDMA_CHANNEL_1 : \
411 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel1)) ? LL_BDMA_CHANNEL_1 : \
412 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel2)) ? LL_BDMA_CHANNEL_2 : \
413 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel2)) ? LL_BDMA_CHANNEL_2 : \
414 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel3)) ? LL_BDMA_CHANNEL_3 : \
415 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel3)) ? LL_BDMA_CHANNEL_3 : \
416 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel4)) ? LL_BDMA_CHANNEL_4 : \
417 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel4)) ? LL_BDMA_CHANNEL_4 : \
418 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel5)) ? LL_BDMA_CHANNEL_5 : \
419 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel5)) ? LL_BDMA_CHANNEL_5 : \
420 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel6)) ? LL_BDMA_CHANNEL_6 : \
421 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel6)) ? LL_BDMA_CHANNEL_6 : \
422 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel7)) ? LL_BDMA_CHANNEL_7 : \
423 LL_BDMA_CHANNEL_7)
424 #else
425 #define __LL_BDMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
426 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel0)) ? LL_BDMA_CHANNEL_0 : \
427 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel1)) ? LL_BDMA_CHANNEL_1 : \
428 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel2)) ? LL_BDMA_CHANNEL_2 : \
429 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel3)) ? LL_BDMA_CHANNEL_3 : \
430 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel4)) ? LL_BDMA_CHANNEL_4 : \
431 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel5)) ? LL_BDMA_CHANNEL_5 : \
432 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel6)) ? LL_BDMA_CHANNEL_6 : \
433 LL_BDMA_CHANNEL_7)
434 #endif /* BDMA1 */
435
436 /**
437 * @brief Convert BDMA Instance BDMAx and LL_BDMA_CHANNEL_y into BDMAx_Channely
438 * @param __BDMA_INSTANCE__ BDMAx
439 * @param __CHANNEL__ LL_BDMA_CHANNEL_y
440 * @retval BDMAx_Channely
441 */
442 #if defined (BDMA1)
443 #define __LL_BDMA_GET_CHANNEL_INSTANCE(__BDMA_INSTANCE__, __CHANNEL__) \
444 ((((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_0))) ? BDMA_Channel0 : \
445 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_0))) ? BDMA1_Channel0 : \
446 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_1))) ? BDMA_Channel1 : \
447 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_1))) ? BDMA1_Channel1 : \
448 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_2))) ? BDMA_Channel2 : \
449 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_2))) ? BDMA1_Channel2 : \
450 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_3))) ? BDMA_Channel3 : \
451 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_3))) ? BDMA1_Channel3 : \
452 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_4))) ? BDMA_Channel4 : \
453 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_4))) ? BDMA1_Channel4 : \
454 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_5))) ? BDMA_Channel5 : \
455 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_5))) ? BDMA1_Channel5 : \
456 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_6))) ? BDMA_Channel6 : \
457 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_6))) ? BDMA1_Channel6 : \
458 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_7))) ? BDMA_Channel7 : \
459 BDMA1_Channel7)
460 #else
461 #define __LL_BDMA_GET_CHANNEL_INSTANCE(__BDMA_INSTANCE__, __CHANNEL__) \
462 ((((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_0))) ? BDMA_Channel0 : \
463 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_1))) ? BDMA_Channel1 : \
464 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_2))) ? BDMA_Channel2 : \
465 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_3))) ? BDMA_Channel3 : \
466 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_4))) ? BDMA_Channel4 : \
467 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_5))) ? BDMA_Channel5 : \
468 (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_6))) ? BDMA_Channel6 : \
469 BDMA_Channel7)
470 #endif /* BDMA1 */
471 /**
472 * @}
473 */
474
475 /**
476 * @}
477 */
478
479 /* Exported functions --------------------------------------------------------*/
480 /** @defgroup BDMA_LL_Exported_Functions BDMA Exported Functions
481 * @{
482 */
483
484 /** @defgroup BDMA_LL_EF_Configuration Configuration
485 * @{
486 */
487 /**
488 * @brief Enable BDMA channel.
489 * @rmtoll CCR EN LL_BDMA_EnableChannel
490 * @param BDMAx BDMA Instance
491 * @param Channel This parameter can be one of the following values:
492 * @arg @ref LL_BDMA_CHANNEL_0
493 * @arg @ref LL_BDMA_CHANNEL_1
494 * @arg @ref LL_BDMA_CHANNEL_2
495 * @arg @ref LL_BDMA_CHANNEL_3
496 * @arg @ref LL_BDMA_CHANNEL_4
497 * @arg @ref LL_BDMA_CHANNEL_5
498 * @arg @ref LL_BDMA_CHANNEL_6
499 * @arg @ref LL_BDMA_CHANNEL_7
500 * @retval None
501 */
LL_BDMA_EnableChannel(const BDMA_TypeDef * BDMAx,uint32_t Channel)502 __STATIC_INLINE void LL_BDMA_EnableChannel(const BDMA_TypeDef *BDMAx, uint32_t Channel)
503 {
504 uint32_t bdma_base_addr = (uint32_t)BDMAx;
505
506 SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN);
507 }
508
509 /**
510 * @brief Disable BDMA channel.
511 * @rmtoll CCR EN LL_BDMA_DisableChannel
512 * @param BDMAx BDMA Instance
513 * @param Channel This parameter can be one of the following values:
514 * @arg @ref LL_BDMA_CHANNEL_0
515 * @arg @ref LL_BDMA_CHANNEL_1
516 * @arg @ref LL_BDMA_CHANNEL_2
517 * @arg @ref LL_BDMA_CHANNEL_3
518 * @arg @ref LL_BDMA_CHANNEL_4
519 * @arg @ref LL_BDMA_CHANNEL_5
520 * @arg @ref LL_BDMA_CHANNEL_6
521 * @arg @ref LL_BDMA_CHANNEL_7
522 * @retval None
523 */
LL_BDMA_DisableChannel(const BDMA_TypeDef * BDMAx,uint32_t Channel)524 __STATIC_INLINE void LL_BDMA_DisableChannel(const BDMA_TypeDef *BDMAx, uint32_t Channel)
525 {
526 uint32_t bdma_base_addr = (uint32_t)BDMAx;
527
528 CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN);
529 }
530
531 /**
532 * @brief Check if BDMA channel is enabled or disabled.
533 * @rmtoll CCR EN LL_BDMA_IsEnabledChannel
534 * @param BDMAx BDMA Instance
535 * @param Channel This parameter can be one of the following values:
536 * @arg @ref LL_BDMA_CHANNEL_0
537 * @arg @ref LL_BDMA_CHANNEL_1
538 * @arg @ref LL_BDMA_CHANNEL_2
539 * @arg @ref LL_BDMA_CHANNEL_3
540 * @arg @ref LL_BDMA_CHANNEL_4
541 * @arg @ref LL_BDMA_CHANNEL_5
542 * @arg @ref LL_BDMA_CHANNEL_6
543 * @arg @ref LL_BDMA_CHANNEL_7
544 * @retval State of bit (1 or 0).
545 */
LL_BDMA_IsEnabledChannel(const BDMA_TypeDef * BDMAx,uint32_t Channel)546 __STATIC_INLINE uint32_t LL_BDMA_IsEnabledChannel(const BDMA_TypeDef *BDMAx, uint32_t Channel)
547 {
548 uint32_t bdma_base_addr = (uint32_t)BDMAx;
549
550 return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN) == (BDMA_CCR_EN)) ? 1UL : 0UL);
551 }
552
553 /**
554 * @brief Configure all parameters link to BDMA transfer.
555 * @rmtoll CCR DIR LL_BDMA_ConfigTransfer\n
556 * CCR MEM2MEM LL_BDMA_ConfigTransfer\n
557 * CCR CIRC LL_BDMA_ConfigTransfer\n
558 * CCR PINC LL_BDMA_ConfigTransfer\n
559 * CCR MINC LL_BDMA_ConfigTransfer\n
560 * CCR PSIZE LL_BDMA_ConfigTransfer\n
561 * CCR MSIZE LL_BDMA_ConfigTransfer\n
562 * CCR PL LL_BDMA_ConfigTransfer\n
563 * CCR DBM LL_BDMA_ConfigTransfer\n
564 * CCR CT LL_BDMA_ConfigTransfer
565 * @param BDMAx BDMA Instance
566 * @param Channel This parameter can be one of the following values:
567 * @arg @ref LL_BDMA_CHANNEL_0
568 * @arg @ref LL_BDMA_CHANNEL_1
569 * @arg @ref LL_BDMA_CHANNEL_2
570 * @arg @ref LL_BDMA_CHANNEL_3
571 * @arg @ref LL_BDMA_CHANNEL_4
572 * @arg @ref LL_BDMA_CHANNEL_5
573 * @arg @ref LL_BDMA_CHANNEL_6
574 * @arg @ref LL_BDMA_CHANNEL_7
575 * @param Configuration This parameter must be a combination of all the following values:
576 * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
577 * @arg @ref LL_BDMA_MODE_NORMAL or @ref LL_BDMA_MODE_CIRCULAR
578 * @arg @ref LL_BDMA_PERIPH_INCREMENT or @ref LL_BDMA_PERIPH_NOINCREMENT
579 * @arg @ref LL_BDMA_MEMORY_INCREMENT or @ref LL_BDMA_MEMORY_NOINCREMENT
580 * @arg @ref LL_BDMA_PDATAALIGN_BYTE or @ref LL_BDMA_PDATAALIGN_HALFWORD or @ref LL_BDMA_PDATAALIGN_WORD
581 * @arg @ref LL_BDMA_MDATAALIGN_BYTE or @ref LL_BDMA_MDATAALIGN_HALFWORD or @ref LL_BDMA_MDATAALIGN_WORD
582 * @arg @ref LL_BDMA_PRIORITY_LOW or @ref LL_BDMA_PRIORITY_MEDIUM or @ref LL_BDMA_PRIORITY_HIGH or @ref LL_BDMA_PRIORITY_VERYHIGH
583 * @arg @ref LL_BDMA_DOUBLEBUFFER_MODE_DISABLE or @ref LL_BDMA_DOUBLEBUFFER_MODE_ENABLE
584 * @arg @ref LL_BDMA_CURRENTTARGETMEM0 or @ref LL_BDMA_CURRENTTARGETMEM1
585 * @retval None
586 */
LL_BDMA_ConfigTransfer(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t Configuration)587 __STATIC_INLINE void LL_BDMA_ConfigTransfer(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Configuration)
588 {
589 uint32_t bdma_base_addr = (uint32_t)BDMAx;
590
591 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
592 BDMA_CCR_DIR | BDMA_CCR_MEM2MEM | BDMA_CCR_CIRC | BDMA_CCR_PINC | BDMA_CCR_MINC | BDMA_CCR_PSIZE | BDMA_CCR_MSIZE | BDMA_CCR_PL | \
593 BDMA_CCR_DBM | BDMA_CCR_CT, Configuration);
594 }
595
596 /**
597 * @brief Set Data transfer direction (read from peripheral or from memory).
598 * @rmtoll CCR DIR LL_BDMA_SetDataTransferDirection\n
599 * CCR MEM2MEM LL_BDMA_SetDataTransferDirection
600 * @param BDMAx BDMA Instance
601 * @param Channel This parameter can be one of the following values:
602 * @arg @ref LL_BDMA_CHANNEL_0
603 * @arg @ref LL_BDMA_CHANNEL_1
604 * @arg @ref LL_BDMA_CHANNEL_2
605 * @arg @ref LL_BDMA_CHANNEL_3
606 * @arg @ref LL_BDMA_CHANNEL_4
607 * @arg @ref LL_BDMA_CHANNEL_5
608 * @arg @ref LL_BDMA_CHANNEL_6
609 * @arg @ref LL_BDMA_CHANNEL_7
610 * @param Direction This parameter can be one of the following values:
611 * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
612 * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
613 * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
614 * @retval None
615 */
LL_BDMA_SetDataTransferDirection(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t Direction)616 __STATIC_INLINE void LL_BDMA_SetDataTransferDirection(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Direction)
617 {
618 uint32_t bdma_base_addr = (uint32_t)BDMAx;
619
620 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
621 BDMA_CCR_DIR | BDMA_CCR_MEM2MEM, Direction);
622 }
623
624 /**
625 * @brief Get Data transfer direction (read from peripheral or from memory).
626 * @rmtoll CCR DIR LL_BDMA_GetDataTransferDirection\n
627 * CCR MEM2MEM LL_BDMA_GetDataTransferDirection
628 * @param BDMAx BDMA Instance
629 * @param Channel This parameter can be one of the following values:
630 * @arg @ref LL_BDMA_CHANNEL_0
631 * @arg @ref LL_BDMA_CHANNEL_1
632 * @arg @ref LL_BDMA_CHANNEL_2
633 * @arg @ref LL_BDMA_CHANNEL_3
634 * @arg @ref LL_BDMA_CHANNEL_4
635 * @arg @ref LL_BDMA_CHANNEL_5
636 * @arg @ref LL_BDMA_CHANNEL_6
637 * @arg @ref LL_BDMA_CHANNEL_7
638 * @retval Returned value can be one of the following values:
639 * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
640 * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
641 * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
642 */
LL_BDMA_GetDataTransferDirection(const BDMA_TypeDef * BDMAx,uint32_t Channel)643 __STATIC_INLINE uint32_t LL_BDMA_GetDataTransferDirection(const BDMA_TypeDef *BDMAx, uint32_t Channel)
644 {
645 uint32_t bdma_base_addr = (uint32_t)BDMAx;
646
647 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
648 BDMA_CCR_DIR | BDMA_CCR_MEM2MEM));
649 }
650
651 /**
652 * @brief Set BDMA mode circular or normal.
653 * @note The circular buffer mode cannot be used if the memory-to-memory
654 * data transfer is configured on the selected Channel.
655 * @rmtoll CCR CIRC LL_BDMA_SetMode
656 * @param BDMAx BDMA Instance
657 * @param Channel This parameter can be one of the following values:
658 * @arg @ref LL_BDMA_CHANNEL_0
659 * @arg @ref LL_BDMA_CHANNEL_1
660 * @arg @ref LL_BDMA_CHANNEL_2
661 * @arg @ref LL_BDMA_CHANNEL_3
662 * @arg @ref LL_BDMA_CHANNEL_4
663 * @arg @ref LL_BDMA_CHANNEL_5
664 * @arg @ref LL_BDMA_CHANNEL_6
665 * @arg @ref LL_BDMA_CHANNEL_7
666 * @param Mode This parameter can be one of the following values:
667 * @arg @ref LL_BDMA_MODE_NORMAL
668 * @arg @ref LL_BDMA_MODE_CIRCULAR
669 * @retval None
670 */
LL_BDMA_SetMode(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t Mode)671 __STATIC_INLINE void LL_BDMA_SetMode(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Mode)
672 {
673 uint32_t bdma_base_addr = (uint32_t)BDMAx;
674
675 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CIRC,
676 Mode);
677 }
678
679 /**
680 * @brief Get BDMA mode circular or normal.
681 * @rmtoll CCR CIRC LL_BDMA_GetMode
682 * @param BDMAx BDMA Instance
683 * @param Channel This parameter can be one of the following values:
684 * @arg @ref LL_BDMA_CHANNEL_0
685 * @arg @ref LL_BDMA_CHANNEL_1
686 * @arg @ref LL_BDMA_CHANNEL_2
687 * @arg @ref LL_BDMA_CHANNEL_3
688 * @arg @ref LL_BDMA_CHANNEL_4
689 * @arg @ref LL_BDMA_CHANNEL_5
690 * @arg @ref LL_BDMA_CHANNEL_6
691 * @arg @ref LL_BDMA_CHANNEL_7
692 * @retval Returned value can be one of the following values:
693 * @arg @ref LL_BDMA_MODE_NORMAL
694 * @arg @ref LL_BDMA_MODE_CIRCULAR
695 */
LL_BDMA_GetMode(const BDMA_TypeDef * BDMAx,uint32_t Channel)696 __STATIC_INLINE uint32_t LL_BDMA_GetMode(const BDMA_TypeDef *BDMAx, uint32_t Channel)
697 {
698 uint32_t bdma_base_addr = (uint32_t)BDMAx;
699
700 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
701 BDMA_CCR_CIRC));
702 }
703
704 /**
705 * @brief Set Peripheral increment mode.
706 * @rmtoll CCR PINC LL_BDMA_SetPeriphIncMode
707 * @param BDMAx BDMA Instance
708 * @param Channel This parameter can be one of the following values:
709 * @arg @ref LL_BDMA_CHANNEL_0
710 * @arg @ref LL_BDMA_CHANNEL_1
711 * @arg @ref LL_BDMA_CHANNEL_2
712 * @arg @ref LL_BDMA_CHANNEL_3
713 * @arg @ref LL_BDMA_CHANNEL_4
714 * @arg @ref LL_BDMA_CHANNEL_5
715 * @arg @ref LL_BDMA_CHANNEL_6
716 * @arg @ref LL_BDMA_CHANNEL_7
717 * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values:
718 * @arg @ref LL_BDMA_PERIPH_INCREMENT
719 * @arg @ref LL_BDMA_PERIPH_NOINCREMENT
720 * @retval None
721 */
LL_BDMA_SetPeriphIncMode(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t PeriphOrM2MSrcIncMode)722 __STATIC_INLINE void LL_BDMA_SetPeriphIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode)
723 {
724 uint32_t bdma_base_addr = (uint32_t)BDMAx;
725
726 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PINC,
727 PeriphOrM2MSrcIncMode);
728 }
729
730 /**
731 * @brief Get Peripheral increment mode.
732 * @rmtoll CCR PINC LL_BDMA_GetPeriphIncMode
733 * @param BDMAx BDMA Instance
734 * @param Channel This parameter can be one of the following values:
735 * @arg @ref LL_BDMA_CHANNEL_0
736 * @arg @ref LL_BDMA_CHANNEL_1
737 * @arg @ref LL_BDMA_CHANNEL_2
738 * @arg @ref LL_BDMA_CHANNEL_3
739 * @arg @ref LL_BDMA_CHANNEL_4
740 * @arg @ref LL_BDMA_CHANNEL_5
741 * @arg @ref LL_BDMA_CHANNEL_6
742 * @arg @ref LL_BDMA_CHANNEL_7
743 * @retval Returned value can be one of the following values:
744 * @arg @ref LL_BDMA_PERIPH_INCREMENT
745 * @arg @ref LL_BDMA_PERIPH_NOINCREMENT
746 */
LL_BDMA_GetPeriphIncMode(const BDMA_TypeDef * BDMAx,uint32_t Channel)747 __STATIC_INLINE uint32_t LL_BDMA_GetPeriphIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel)
748 {
749 uint32_t bdma_base_addr = (uint32_t)BDMAx;
750
751 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
752 BDMA_CCR_PINC));
753 }
754
755 /**
756 * @brief Set Memory increment mode.
757 * @rmtoll CCR MINC LL_BDMA_SetMemoryIncMode
758 * @param BDMAx BDMA Instance
759 * @param Channel This parameter can be one of the following values:
760 * @arg @ref LL_BDMA_CHANNEL_0
761 * @arg @ref LL_BDMA_CHANNEL_1
762 * @arg @ref LL_BDMA_CHANNEL_2
763 * @arg @ref LL_BDMA_CHANNEL_3
764 * @arg @ref LL_BDMA_CHANNEL_4
765 * @arg @ref LL_BDMA_CHANNEL_5
766 * @arg @ref LL_BDMA_CHANNEL_6
767 * @arg @ref LL_BDMA_CHANNEL_7
768 * @param MemoryOrM2MDstIncMode This parameter can be one of the following values:
769 * @arg @ref LL_BDMA_MEMORY_INCREMENT
770 * @arg @ref LL_BDMA_MEMORY_NOINCREMENT
771 * @retval None
772 */
LL_BDMA_SetMemoryIncMode(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t MemoryOrM2MDstIncMode)773 __STATIC_INLINE void LL_BDMA_SetMemoryIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode)
774 {
775 uint32_t bdma_base_addr = (uint32_t)BDMAx;
776
777 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_MINC,
778 MemoryOrM2MDstIncMode);
779 }
780
781 /**
782 * @brief Get Memory increment mode.
783 * @rmtoll CCR MINC LL_BDMA_GetMemoryIncMode
784 * @param BDMAx BDMA Instance
785 * @param Channel This parameter can be one of the following values:
786 * @arg @ref LL_BDMA_CHANNEL_0
787 * @arg @ref LL_BDMA_CHANNEL_1
788 * @arg @ref LL_BDMA_CHANNEL_2
789 * @arg @ref LL_BDMA_CHANNEL_3
790 * @arg @ref LL_BDMA_CHANNEL_4
791 * @arg @ref LL_BDMA_CHANNEL_5
792 * @arg @ref LL_BDMA_CHANNEL_6
793 * @arg @ref LL_BDMA_CHANNEL_7
794 * @retval Returned value can be one of the following values:
795 * @arg @ref LL_BDMA_MEMORY_INCREMENT
796 * @arg @ref LL_BDMA_MEMORY_NOINCREMENT
797 */
LL_BDMA_GetMemoryIncMode(const BDMA_TypeDef * BDMAx,uint32_t Channel)798 __STATIC_INLINE uint32_t LL_BDMA_GetMemoryIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel)
799 {
800 uint32_t bdma_base_addr = (uint32_t)BDMAx;
801
802 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
803 BDMA_CCR_MINC));
804 }
805
806 /**
807 * @brief Set Peripheral size.
808 * @rmtoll CCR PSIZE LL_BDMA_SetPeriphSize
809 * @param BDMAx BDMA Instance
810 * @param Channel This parameter can be one of the following values:
811 * @arg @ref LL_BDMA_CHANNEL_0
812 * @arg @ref LL_BDMA_CHANNEL_1
813 * @arg @ref LL_BDMA_CHANNEL_2
814 * @arg @ref LL_BDMA_CHANNEL_3
815 * @arg @ref LL_BDMA_CHANNEL_4
816 * @arg @ref LL_BDMA_CHANNEL_5
817 * @arg @ref LL_BDMA_CHANNEL_6
818 * @arg @ref LL_BDMA_CHANNEL_7
819 * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values:
820 * @arg @ref LL_BDMA_PDATAALIGN_BYTE
821 * @arg @ref LL_BDMA_PDATAALIGN_HALFWORD
822 * @arg @ref LL_BDMA_PDATAALIGN_WORD
823 * @retval None
824 */
LL_BDMA_SetPeriphSize(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t PeriphOrM2MSrcDataSize)825 __STATIC_INLINE void LL_BDMA_SetPeriphSize(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize)
826 {
827 uint32_t bdma_base_addr = (uint32_t)BDMAx;
828
829 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PSIZE,
830 PeriphOrM2MSrcDataSize);
831 }
832
833 /**
834 * @brief Get Peripheral size.
835 * @rmtoll CCR PSIZE LL_BDMA_GetPeriphSize
836 * @param BDMAx BDMA Instance
837 * @param Channel This parameter can be one of the following values:
838 * @arg @ref LL_BDMA_CHANNEL_0
839 * @arg @ref LL_BDMA_CHANNEL_1
840 * @arg @ref LL_BDMA_CHANNEL_2
841 * @arg @ref LL_BDMA_CHANNEL_3
842 * @arg @ref LL_BDMA_CHANNEL_4
843 * @arg @ref LL_BDMA_CHANNEL_5
844 * @arg @ref LL_BDMA_CHANNEL_6
845 * @arg @ref LL_BDMA_CHANNEL_7
846 * @retval Returned value can be one of the following values:
847 * @arg @ref LL_BDMA_PDATAALIGN_BYTE
848 * @arg @ref LL_BDMA_PDATAALIGN_HALFWORD
849 * @arg @ref LL_BDMA_PDATAALIGN_WORD
850 */
LL_BDMA_GetPeriphSize(const BDMA_TypeDef * BDMAx,uint32_t Channel)851 __STATIC_INLINE uint32_t LL_BDMA_GetPeriphSize(const BDMA_TypeDef *BDMAx, uint32_t Channel)
852 {
853 uint32_t bdma_base_addr = (uint32_t)BDMAx;
854
855 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
856 BDMA_CCR_PSIZE));
857 }
858
859 /**
860 * @brief Set Memory size.
861 * @rmtoll CCR MSIZE LL_BDMA_SetMemorySize
862 * @param BDMAx BDMA Instance
863 * @param Channel This parameter can be one of the following values:
864 * @arg @ref LL_BDMA_CHANNEL_0
865 * @arg @ref LL_BDMA_CHANNEL_1
866 * @arg @ref LL_BDMA_CHANNEL_2
867 * @arg @ref LL_BDMA_CHANNEL_3
868 * @arg @ref LL_BDMA_CHANNEL_4
869 * @arg @ref LL_BDMA_CHANNEL_5
870 * @arg @ref LL_BDMA_CHANNEL_6
871 * @arg @ref LL_BDMA_CHANNEL_7
872 * @param MemoryOrM2MDstDataSize This parameter can be one of the following values:
873 * @arg @ref LL_BDMA_MDATAALIGN_BYTE
874 * @arg @ref LL_BDMA_MDATAALIGN_HALFWORD
875 * @arg @ref LL_BDMA_MDATAALIGN_WORD
876 * @retval None
877 */
LL_BDMA_SetMemorySize(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t MemoryOrM2MDstDataSize)878 __STATIC_INLINE void LL_BDMA_SetMemorySize(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize)
879 {
880 uint32_t bdma_base_addr = (uint32_t)BDMAx;
881
882 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_MSIZE,
883 MemoryOrM2MDstDataSize);
884 }
885
886 /**
887 * @brief Get Memory size.
888 * @rmtoll CCR MSIZE LL_BDMA_GetMemorySize
889 * @param BDMAx BDMA Instance
890 * @param Channel This parameter can be one of the following values:
891 * @arg @ref LL_BDMA_CHANNEL_0
892 * @arg @ref LL_BDMA_CHANNEL_1
893 * @arg @ref LL_BDMA_CHANNEL_2
894 * @arg @ref LL_BDMA_CHANNEL_3
895 * @arg @ref LL_BDMA_CHANNEL_4
896 * @arg @ref LL_BDMA_CHANNEL_5
897 * @arg @ref LL_BDMA_CHANNEL_6
898 * @arg @ref LL_BDMA_CHANNEL_7
899 * @retval Returned value can be one of the following values:
900 * @arg @ref LL_BDMA_MDATAALIGN_BYTE
901 * @arg @ref LL_BDMA_MDATAALIGN_HALFWORD
902 * @arg @ref LL_BDMA_MDATAALIGN_WORD
903 */
LL_BDMA_GetMemorySize(const BDMA_TypeDef * BDMAx,uint32_t Channel)904 __STATIC_INLINE uint32_t LL_BDMA_GetMemorySize(const BDMA_TypeDef *BDMAx, uint32_t Channel)
905 {
906 uint32_t bdma_base_addr = (uint32_t)BDMAx;
907
908 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
909 BDMA_CCR_MSIZE));
910 }
911
912 /**
913 * @brief Set Channel priority level.
914 * @rmtoll CCR PL LL_BDMA_SetChannelPriorityLevel
915 * @param BDMAx BDMA Instance
916 * @param Channel This parameter can be one of the following values:
917 * @arg @ref LL_BDMA_CHANNEL_0
918 * @arg @ref LL_BDMA_CHANNEL_1
919 * @arg @ref LL_BDMA_CHANNEL_2
920 * @arg @ref LL_BDMA_CHANNEL_3
921 * @arg @ref LL_BDMA_CHANNEL_4
922 * @arg @ref LL_BDMA_CHANNEL_5
923 * @arg @ref LL_BDMA_CHANNEL_6
924 * @arg @ref LL_BDMA_CHANNEL_7
925 * @param Priority This parameter can be one of the following values:
926 * @arg @ref LL_BDMA_PRIORITY_LOW
927 * @arg @ref LL_BDMA_PRIORITY_MEDIUM
928 * @arg @ref LL_BDMA_PRIORITY_HIGH
929 * @arg @ref LL_BDMA_PRIORITY_VERYHIGH
930 * @retval None
931 */
LL_BDMA_SetChannelPriorityLevel(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t Priority)932 __STATIC_INLINE void LL_BDMA_SetChannelPriorityLevel(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Priority)
933 {
934 uint32_t bdma_base_addr = (uint32_t)BDMAx;
935
936 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PL,
937 Priority);
938 }
939
940 /**
941 * @brief Get Channel priority level.
942 * @rmtoll CCR PL LL_BDMA_GetChannelPriorityLevel
943 * @param BDMAx BDMA Instance
944 * @param Channel This parameter can be one of the following values:
945 * @arg @ref LL_BDMA_CHANNEL_0
946 * @arg @ref LL_BDMA_CHANNEL_1
947 * @arg @ref LL_BDMA_CHANNEL_2
948 * @arg @ref LL_BDMA_CHANNEL_3
949 * @arg @ref LL_BDMA_CHANNEL_4
950 * @arg @ref LL_BDMA_CHANNEL_5
951 * @arg @ref LL_BDMA_CHANNEL_6
952 * @arg @ref LL_BDMA_CHANNEL_7
953 * @retval Returned value can be one of the following values:
954 * @arg @ref LL_BDMA_PRIORITY_LOW
955 * @arg @ref LL_BDMA_PRIORITY_MEDIUM
956 * @arg @ref LL_BDMA_PRIORITY_HIGH
957 * @arg @ref LL_BDMA_PRIORITY_VERYHIGH
958 */
LL_BDMA_GetChannelPriorityLevel(const BDMA_TypeDef * BDMAx,uint32_t Channel)959 __STATIC_INLINE uint32_t LL_BDMA_GetChannelPriorityLevel(const BDMA_TypeDef *BDMAx, uint32_t Channel)
960 {
961 uint32_t bdma_base_addr = (uint32_t)BDMAx;
962
963 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
964 BDMA_CCR_PL));
965 }
966
967 /**
968 * @brief Set Number of data to transfer.
969 * @note This action has no effect if
970 * channel is enabled.
971 * @rmtoll CNDTR NDT LL_BDMA_SetDataLength
972 * @param BDMAx BDMA Instance
973 * @param Channel This parameter can be one of the following values:
974 * @arg @ref LL_BDMA_CHANNEL_0
975 * @arg @ref LL_BDMA_CHANNEL_1
976 * @arg @ref LL_BDMA_CHANNEL_2
977 * @arg @ref LL_BDMA_CHANNEL_3
978 * @arg @ref LL_BDMA_CHANNEL_4
979 * @arg @ref LL_BDMA_CHANNEL_5
980 * @arg @ref LL_BDMA_CHANNEL_6
981 * @arg @ref LL_BDMA_CHANNEL_7
982 * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF
983 * @retval None
984 */
LL_BDMA_SetDataLength(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t NbData)985 __STATIC_INLINE void LL_BDMA_SetDataLength(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t NbData)
986 {
987 uint32_t bdma_base_addr = (uint32_t)BDMAx;
988
989 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CNDTR,
990 BDMA_CNDTR_NDT, NbData);
991 }
992
993 /**
994 * @brief Get Number of data to transfer.
995 * @note Once the channel is enabled, the return value indicate the
996 * remaining bytes to be transmitted.
997 * @rmtoll CNDTR NDT LL_BDMA_GetDataLength
998 * @param BDMAx BDMA Instance
999 * @param Channel This parameter can be one of the following values:
1000 * @arg @ref LL_BDMA_CHANNEL_0
1001 * @arg @ref LL_BDMA_CHANNEL_1
1002 * @arg @ref LL_BDMA_CHANNEL_2
1003 * @arg @ref LL_BDMA_CHANNEL_3
1004 * @arg @ref LL_BDMA_CHANNEL_4
1005 * @arg @ref LL_BDMA_CHANNEL_5
1006 * @arg @ref LL_BDMA_CHANNEL_6
1007 * @arg @ref LL_BDMA_CHANNEL_7
1008 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1009 */
LL_BDMA_GetDataLength(const BDMA_TypeDef * BDMAx,uint32_t Channel)1010 __STATIC_INLINE uint32_t LL_BDMA_GetDataLength(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1011 {
1012 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1013
1014 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CNDTR,
1015 BDMA_CNDTR_NDT));
1016 }
1017
1018 /**
1019 * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
1020 * @rmtoll CR CT LL_BDMA_SetCurrentTargetMem
1021 * @param BDMAx BDMAx Instance
1022 * @param Channel This parameter can be one of the following values:
1023 * @arg @ref LL_BDMA_CHANNEL_0
1024 * @arg @ref LL_BDMA_CHANNEL_1
1025 * @arg @ref LL_BDMA_CHANNEL_2
1026 * @arg @ref LL_BDMA_CHANNEL_3
1027 * @arg @ref LL_BDMA_CHANNEL_4
1028 * @arg @ref LL_BDMA_CHANNEL_5
1029 * @arg @ref LL_BDMA_CHANNEL_6
1030 * @arg @ref LL_BDMA_CHANNEL_7
1031 * @param CurrentMemory This parameter can be one of the following values:
1032 * @arg @ref LL_BDMA_CURRENTTARGETMEM0
1033 * @arg @ref LL_BDMA_CURRENTTARGETMEM1
1034 * @retval None
1035 */
LL_BDMA_SetCurrentTargetMem(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t CurrentMemory)1036 __STATIC_INLINE void LL_BDMA_SetCurrentTargetMem(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t CurrentMemory)
1037 {
1038 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1039
1040 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CT, CurrentMemory);
1041 }
1042
1043 /**
1044 * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
1045 * @rmtoll CR CT LL_BDMA_GetCurrentTargetMem
1046 * @param BDMAx BDMAx Instance
1047 * @param Channel This parameter can be one of the following values:
1048 * @arg @ref LL_BDMA_CHANNEL_0
1049 * @arg @ref LL_BDMA_CHANNEL_1
1050 * @arg @ref LL_BDMA_CHANNEL_2
1051 * @arg @ref LL_BDMA_CHANNEL_3
1052 * @arg @ref LL_BDMA_CHANNEL_4
1053 * @arg @ref LL_BDMA_CHANNEL_5
1054 * @arg @ref LL_BDMA_CHANNEL_6
1055 * @arg @ref LL_BDMA_CHANNEL_7
1056 * @retval Returned value can be one of the following values:
1057 * @arg @ref LL_BDMA_CURRENTTARGETMEM0
1058 * @arg @ref LL_BDMA_CURRENTTARGETMEM1
1059 */
LL_BDMA_GetCurrentTargetMem(const BDMA_TypeDef * BDMAx,uint32_t Channel)1060 __STATIC_INLINE uint32_t LL_BDMA_GetCurrentTargetMem(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1061 {
1062 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1063
1064 return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CT));
1065 }
1066
1067 /**
1068 * @brief Enable the double buffer mode.
1069 * @rmtoll CR DBM LL_BDMA_EnableDoubleBufferMode
1070 * @param BDMAx BDMAx Instance
1071 * @param Channel This parameter can be one of the following values:
1072 * @arg @ref LL_BDMA_CHANNEL_0
1073 * @arg @ref LL_BDMA_CHANNEL_1
1074 * @arg @ref LL_BDMA_CHANNEL_2
1075 * @arg @ref LL_BDMA_CHANNEL_3
1076 * @arg @ref LL_BDMA_CHANNEL_4
1077 * @arg @ref LL_BDMA_CHANNEL_5
1078 * @arg @ref LL_BDMA_CHANNEL_6
1079 * @arg @ref LL_BDMA_CHANNEL_7
1080 * @retval None
1081 */
LL_BDMA_EnableDoubleBufferMode(const BDMA_TypeDef * BDMAx,uint32_t Channel)1082 __STATIC_INLINE void LL_BDMA_EnableDoubleBufferMode(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1083 {
1084 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1085
1086 SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_DBM);
1087 }
1088
1089 /**
1090 * @brief Disable the double buffer mode.
1091 * @rmtoll CR DBM LL_BDMA_DisableDoubleBufferMode
1092 * @param BDMAx BDMAx Instance
1093 * @param Channel This parameter can be one of the following values:
1094 * @arg @ref LL_BDMA_CHANNEL_0
1095 * @arg @ref LL_BDMA_CHANNEL_1
1096 * @arg @ref LL_BDMA_CHANNEL_2
1097 * @arg @ref LL_BDMA_CHANNEL_3
1098 * @arg @ref LL_BDMA_CHANNEL_4
1099 * @arg @ref LL_BDMA_CHANNEL_5
1100 * @arg @ref LL_BDMA_CHANNEL_6
1101 * @arg @ref LL_BDMA_CHANNEL_7
1102 * @retval None
1103 */
LL_BDMA_DisableDoubleBufferMode(const BDMA_TypeDef * BDMAx,uint32_t Channel)1104 __STATIC_INLINE void LL_BDMA_DisableDoubleBufferMode(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1105 {
1106 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1107
1108 CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_DBM);
1109 }
1110
1111 /**
1112 * @brief Check if double buffer mode is enabled or not.
1113 * @rmtoll CCR DBM LL_BDMA_IsEnabledDoubleBufferMode
1114 * @param BDMAx BDMAx Instance
1115 * @param Channel This parameter can be one of the following values:
1116 * @arg @ref LL_BDMA_CHANNEL_0
1117 * @arg @ref LL_BDMA_CHANNEL_1
1118 * @arg @ref LL_BDMA_CHANNEL_2
1119 * @arg @ref LL_BDMA_CHANNEL_3
1120 * @arg @ref LL_BDMA_CHANNEL_4
1121 * @arg @ref LL_BDMA_CHANNEL_5
1122 * @arg @ref LL_BDMA_CHANNEL_6
1123 * @arg @ref LL_BDMA_CHANNEL_7
1124 * @retval State of bit (1 or 0).
1125 */
LL_BDMA_IsEnabledDoubleBufferMode(const BDMA_TypeDef * BDMAx,uint32_t Channel)1126 __STATIC_INLINE uint32_t LL_BDMA_IsEnabledDoubleBufferMode(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1127 {
1128 register uint32_t bdma_base_addr = (uint32_t)BDMAx;
1129
1130 return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_DBM) == (BDMA_CCR_DBM)) ? 1UL : 0UL);
1131 }
1132
1133 /**
1134 * @brief Configure the Source and Destination addresses.
1135 * @note This API must not be called when the BDMA channel is enabled.
1136 * @note Each IP using BDMA provides an API to get directly the register address (LL_PPP_BDMA_GetRegAddr).
1137 * @rmtoll CPAR PA LL_BDMA_ConfigAddresses\n
1138 * CMAR MA LL_BDMA_ConfigAddresses
1139 * @param BDMAx BDMA Instance
1140 * @param Channel This parameter can be one of the following values:
1141 * @arg @ref LL_BDMA_CHANNEL_0
1142 * @arg @ref LL_BDMA_CHANNEL_1
1143 * @arg @ref LL_BDMA_CHANNEL_2
1144 * @arg @ref LL_BDMA_CHANNEL_3
1145 * @arg @ref LL_BDMA_CHANNEL_4
1146 * @arg @ref LL_BDMA_CHANNEL_5
1147 * @arg @ref LL_BDMA_CHANNEL_6
1148 * @arg @ref LL_BDMA_CHANNEL_7
1149 * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1150 * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1151 * @param Direction This parameter can be one of the following values:
1152 * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
1153 * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
1154 * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
1155 * @retval None
1156 */
LL_BDMA_ConfigAddresses(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t SrcAddress,uint32_t DstAddress,uint32_t Direction)1157 __STATIC_INLINE void LL_BDMA_ConfigAddresses(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t SrcAddress,
1158 uint32_t DstAddress, uint32_t Direction)
1159 {
1160 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1161
1162 /* Direction Memory to Periph */
1163 if (Direction == LL_BDMA_DIRECTION_MEMORY_TO_PERIPH)
1164 {
1165 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, SrcAddress);
1166 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, DstAddress);
1167 }
1168 /* Direction Periph to Memory and Memory to Memory */
1169 else
1170 {
1171 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, SrcAddress);
1172 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, DstAddress);
1173 }
1174 }
1175
1176 /**
1177 * @brief Set the Memory address.
1178 * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
1179 * @note This API must not be called when the BDMA channel is enabled.
1180 * @rmtoll CMAR MA LL_BDMA_SetMemoryAddress
1181 * @param BDMAx BDMA Instance
1182 * @param Channel This parameter can be one of the following values:
1183 * @arg @ref LL_BDMA_CHANNEL_0
1184 * @arg @ref LL_BDMA_CHANNEL_1
1185 * @arg @ref LL_BDMA_CHANNEL_2
1186 * @arg @ref LL_BDMA_CHANNEL_3
1187 * @arg @ref LL_BDMA_CHANNEL_4
1188 * @arg @ref LL_BDMA_CHANNEL_5
1189 * @arg @ref LL_BDMA_CHANNEL_6
1190 * @arg @ref LL_BDMA_CHANNEL_7
1191 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1192 * @retval None
1193 */
LL_BDMA_SetMemoryAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t MemoryAddress)1194 __STATIC_INLINE void LL_BDMA_SetMemoryAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
1195 {
1196 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1197
1198 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, MemoryAddress);
1199 }
1200
1201 /**
1202 * @brief Set the Peripheral address.
1203 * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
1204 * @note This API must not be called when the BDMA channel is enabled.
1205 * @rmtoll CPAR PA LL_BDMA_SetPeriphAddress
1206 * @param BDMAx BDMA Instance
1207 * @param Channel This parameter can be one of the following values:
1208 * @arg @ref LL_BDMA_CHANNEL_0
1209 * @arg @ref LL_BDMA_CHANNEL_1
1210 * @arg @ref LL_BDMA_CHANNEL_2
1211 * @arg @ref LL_BDMA_CHANNEL_3
1212 * @arg @ref LL_BDMA_CHANNEL_4
1213 * @arg @ref LL_BDMA_CHANNEL_5
1214 * @arg @ref LL_BDMA_CHANNEL_6
1215 * @arg @ref LL_BDMA_CHANNEL_7
1216 * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1217 * @retval None
1218 */
LL_BDMA_SetPeriphAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t PeriphAddress)1219 __STATIC_INLINE void LL_BDMA_SetPeriphAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphAddress)
1220 {
1221 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1222
1223 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, PeriphAddress);
1224 }
1225
1226 /**
1227 * @brief Get Memory address.
1228 * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
1229 * @rmtoll CMAR MA LL_BDMA_GetMemoryAddress
1230 * @param BDMAx BDMA Instance
1231 * @param Channel This parameter can be one of the following values:
1232 * @arg @ref LL_BDMA_CHANNEL_0
1233 * @arg @ref LL_BDMA_CHANNEL_1
1234 * @arg @ref LL_BDMA_CHANNEL_2
1235 * @arg @ref LL_BDMA_CHANNEL_3
1236 * @arg @ref LL_BDMA_CHANNEL_4
1237 * @arg @ref LL_BDMA_CHANNEL_5
1238 * @arg @ref LL_BDMA_CHANNEL_6
1239 * @arg @ref LL_BDMA_CHANNEL_7
1240 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1241 */
LL_BDMA_GetMemoryAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel)1242 __STATIC_INLINE uint32_t LL_BDMA_GetMemoryAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1243 {
1244 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1245
1246 return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR));
1247 }
1248
1249 /**
1250 * @brief Get Peripheral address.
1251 * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
1252 * @rmtoll CPAR PA LL_BDMA_GetPeriphAddress
1253 * @param BDMAx BDMA Instance
1254 * @param Channel This parameter can be one of the following values:
1255 * @arg @ref LL_BDMA_CHANNEL_0
1256 * @arg @ref LL_BDMA_CHANNEL_1
1257 * @arg @ref LL_BDMA_CHANNEL_2
1258 * @arg @ref LL_BDMA_CHANNEL_3
1259 * @arg @ref LL_BDMA_CHANNEL_4
1260 * @arg @ref LL_BDMA_CHANNEL_5
1261 * @arg @ref LL_BDMA_CHANNEL_6
1262 * @arg @ref LL_BDMA_CHANNEL_7
1263 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1264 */
LL_BDMA_GetPeriphAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel)1265 __STATIC_INLINE uint32_t LL_BDMA_GetPeriphAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1266 {
1267 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1268
1269 return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR));
1270 }
1271
1272 /**
1273 * @brief Set the Memory to Memory Source address.
1274 * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
1275 * @note This API must not be called when the BDMA channel is enabled.
1276 * @rmtoll CPAR PA LL_BDMA_SetM2MSrcAddress
1277 * @param BDMAx BDMA Instance
1278 * @param Channel This parameter can be one of the following values:
1279 * @arg @ref LL_BDMA_CHANNEL_0
1280 * @arg @ref LL_BDMA_CHANNEL_1
1281 * @arg @ref LL_BDMA_CHANNEL_2
1282 * @arg @ref LL_BDMA_CHANNEL_3
1283 * @arg @ref LL_BDMA_CHANNEL_4
1284 * @arg @ref LL_BDMA_CHANNEL_5
1285 * @arg @ref LL_BDMA_CHANNEL_6
1286 * @arg @ref LL_BDMA_CHANNEL_7
1287 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1288 * @retval None
1289 */
LL_BDMA_SetM2MSrcAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t MemoryAddress)1290 __STATIC_INLINE void LL_BDMA_SetM2MSrcAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
1291 {
1292 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1293
1294 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, MemoryAddress);
1295 }
1296
1297 /**
1298 * @brief Set the Memory to Memory Destination address.
1299 * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
1300 * @note This API must not be called when the BDMA channel is enabled.
1301 * @rmtoll CMAR MA LL_BDMA_SetM2MDstAddress
1302 * @param BDMAx BDMA Instance
1303 * @param Channel This parameter can be one of the following values:
1304 * @arg @ref LL_BDMA_CHANNEL_0
1305 * @arg @ref LL_BDMA_CHANNEL_1
1306 * @arg @ref LL_BDMA_CHANNEL_2
1307 * @arg @ref LL_BDMA_CHANNEL_3
1308 * @arg @ref LL_BDMA_CHANNEL_4
1309 * @arg @ref LL_BDMA_CHANNEL_5
1310 * @arg @ref LL_BDMA_CHANNEL_6
1311 * @arg @ref LL_BDMA_CHANNEL_7
1312 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1313 * @retval None
1314 */
LL_BDMA_SetM2MDstAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t MemoryAddress)1315 __STATIC_INLINE void LL_BDMA_SetM2MDstAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
1316 {
1317 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1318
1319 WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, MemoryAddress);
1320 }
1321
1322 /**
1323 * @brief Get the Memory to Memory Source address.
1324 * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
1325 * @rmtoll CPAR PA LL_BDMA_GetM2MSrcAddress
1326 * @param BDMAx BDMA Instance
1327 * @param Channel This parameter can be one of the following values:
1328 * @arg @ref LL_BDMA_CHANNEL_0
1329 * @arg @ref LL_BDMA_CHANNEL_1
1330 * @arg @ref LL_BDMA_CHANNEL_2
1331 * @arg @ref LL_BDMA_CHANNEL_3
1332 * @arg @ref LL_BDMA_CHANNEL_4
1333 * @arg @ref LL_BDMA_CHANNEL_5
1334 * @arg @ref LL_BDMA_CHANNEL_6
1335 * @arg @ref LL_BDMA_CHANNEL_7
1336 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1337 */
LL_BDMA_GetM2MSrcAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel)1338 __STATIC_INLINE uint32_t LL_BDMA_GetM2MSrcAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1339 {
1340 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1341
1342 return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR));
1343 }
1344
1345 /**
1346 * @brief Get the Memory to Memory Destination address.
1347 * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
1348 * @rmtoll CMAR MA LL_BDMA_GetM2MDstAddress
1349 * @param BDMAx BDMA Instance
1350 * @param Channel This parameter can be one of the following values:
1351 * @arg @ref LL_BDMA_CHANNEL_0
1352 * @arg @ref LL_BDMA_CHANNEL_1
1353 * @arg @ref LL_BDMA_CHANNEL_2
1354 * @arg @ref LL_BDMA_CHANNEL_3
1355 * @arg @ref LL_BDMA_CHANNEL_4
1356 * @arg @ref LL_BDMA_CHANNEL_5
1357 * @arg @ref LL_BDMA_CHANNEL_6
1358 * @arg @ref LL_BDMA_CHANNEL_7
1359 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
1360 */
LL_BDMA_GetM2MDstAddress(const BDMA_TypeDef * BDMAx,uint32_t Channel)1361 __STATIC_INLINE uint32_t LL_BDMA_GetM2MDstAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1362 {
1363 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1364
1365 return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR));
1366 }
1367
1368 /**
1369 * @brief Set Memory 1 address (used in case of Double buffer mode).
1370 * @rmtoll M1AR M1A LL_BDMA_SetMemory1Address
1371 * @param BDMAx BDMAx Instance
1372 * @param Channel This parameter can be one of the following values:
1373 * @arg @ref LL_BDMA_CHANNEL_0
1374 * @arg @ref LL_BDMA_CHANNEL_1
1375 * @arg @ref LL_BDMA_CHANNEL_2
1376 * @arg @ref LL_BDMA_CHANNEL_3
1377 * @arg @ref LL_BDMA_CHANNEL_4
1378 * @arg @ref LL_BDMA_CHANNEL_5
1379 * @arg @ref LL_BDMA_CHANNEL_6
1380 * @arg @ref LL_BDMA_CHANNEL_7
1381 * @param Address Between 0 to 0xFFFFFFFF
1382 * @retval None
1383 */
LL_BDMA_SetMemory1Address(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t Address)1384 __STATIC_INLINE void LL_BDMA_SetMemory1Address(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Address)
1385 {
1386 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1387
1388 MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM1AR, BDMA_CM1AR_MA, Address);
1389 }
1390
1391 /**
1392 * @brief Get Memory 1 address (used in case of Double buffer mode).
1393 * @rmtoll M1AR M1A LL_BDMA_GetMemory1Address
1394 * @param BDMAx BDMAx Instance
1395 * @param Channel This parameter can be one of the following values:
1396 * @arg @ref LL_BDMA_CHANNEL_0
1397 * @arg @ref LL_BDMA_CHANNEL_1
1398 * @arg @ref LL_BDMA_CHANNEL_2
1399 * @arg @ref LL_BDMA_CHANNEL_3
1400 * @arg @ref LL_BDMA_CHANNEL_4
1401 * @arg @ref LL_BDMA_CHANNEL_5
1402 * @arg @ref LL_BDMA_CHANNEL_6
1403 * @arg @ref LL_BDMA_CHANNEL_7
1404 * @retval Between 0 to 0xFFFFFFFF
1405 */
LL_BDMA_GetMemory1Address(const BDMA_TypeDef * BDMAx,uint32_t Channel)1406 __STATIC_INLINE uint32_t LL_BDMA_GetMemory1Address(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1407 {
1408 uint32_t bdma_base_addr = (uint32_t)BDMAx;
1409
1410 return (((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM1AR);
1411 }
1412
1413 /**
1414 * @brief Set BDMA request for BDMA Channels on DMAMUX Channel x.
1415 * @note DMAMUX2 channel 0 to 7 are mapped to BDMA channel 0 to 7.
1416 * @rmtoll CxCR DMAREQ_ID LL_BDMA_SetPeriphRequest
1417 * @param BDMAx BDMAx Instance
1418 * @param Channel This parameter can be one of the following values:
1419 * @arg @ref LL_BDMA_CHANNEL_0
1420 * @arg @ref LL_BDMA_CHANNEL_1
1421 * @arg @ref LL_BDMA_CHANNEL_2
1422 * @arg @ref LL_BDMA_CHANNEL_3
1423 * @arg @ref LL_BDMA_CHANNEL_4
1424 * @arg @ref LL_BDMA_CHANNEL_5
1425 * @arg @ref LL_BDMA_CHANNEL_6
1426 * @arg @ref LL_BDMA_CHANNEL_7
1427 * @param Request This parameter can be one of the following values:
1428 * @arg @ref LL_DMAMUX2_REQ_MEM2MEM
1429 * @arg @ref LL_DMAMUX2_REQ_GENERATOR0
1430 * @arg @ref LL_DMAMUX2_REQ_GENERATOR1
1431 * @arg @ref LL_DMAMUX2_REQ_GENERATOR2
1432 * @arg @ref LL_DMAMUX2_REQ_GENERATOR3
1433 * @arg @ref LL_DMAMUX2_REQ_GENERATOR4
1434 * @arg @ref LL_DMAMUX2_REQ_GENERATOR5
1435 * @arg @ref LL_DMAMUX2_REQ_GENERATOR6
1436 * @arg @ref LL_DMAMUX2_REQ_GENERATOR7
1437 * @arg @ref LL_DMAMUX2_REQ_LPUART1_RX
1438 * @arg @ref LL_DMAMUX2_REQ_LPUART1_TX
1439 * @arg @ref LL_DMAMUX2_REQ_SPI6_RX
1440 * @arg @ref LL_DMAMUX2_REQ_SPI6_TX
1441 * @arg @ref LL_DMAMUX2_REQ_I2C4_RX
1442 * @arg @ref LL_DMAMUX2_REQ_I2C4_TX
1443 * @arg @ref LL_DMAMUX2_REQ_SAI4_A (*)
1444 * @arg @ref LL_DMAMUX2_REQ_SAI4_B (*)
1445 * @arg @ref LL_DMAMUX2_REQ_ADC3 (*)
1446 * @arg @ref LL_DMAMUX2_REQ_DAC2_CH1 (*)
1447 * @arg @ref LL_DMAMUX2_REQ_DFSDM2_FLT0 (*)
1448 *
1449 * @note (*) Availability depends on devices.
1450 * @retval None
1451 */
LL_BDMA_SetPeriphRequest(const BDMA_TypeDef * BDMAx,uint32_t Channel,uint32_t Request)1452 __STATIC_INLINE void LL_BDMA_SetPeriphRequest(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Request)
1453 {
1454 UNUSED(BDMAx);
1455 MODIFY_REG(((DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel))))->CCR, DMAMUX_CxCR_DMAREQ_ID, Request);
1456 }
1457
1458 /**
1459 * @brief Get BDMA request for BDMA Channels on DMAMUX Channel x.
1460 * @note DMAMUX channel 0 to 7 are mapped to BDMA channel 0 to 7.
1461 * @rmtoll CxCR DMAREQ_ID LL_BDMA_GetPeriphRequest
1462 * @param BDMAx BDMAx Instance
1463 * @param Channel This parameter can be one of the following values:
1464 * @arg @ref LL_BDMA_CHANNEL_0
1465 * @arg @ref LL_BDMA_CHANNEL_1
1466 * @arg @ref LL_BDMA_CHANNEL_2
1467 * @arg @ref LL_BDMA_CHANNEL_3
1468 * @arg @ref LL_BDMA_CHANNEL_4
1469 * @arg @ref LL_BDMA_CHANNEL_5
1470 * @arg @ref LL_BDMA_CHANNEL_6
1471 * @arg @ref LL_BDMA_CHANNEL_7
1472 * @retval Returned value can be one of the following values:
1473 * @arg @ref LL_DMAMUX2_REQ_MEM2MEM
1474 * @arg @ref LL_DMAMUX2_REQ_GENERATOR0
1475 * @arg @ref LL_DMAMUX2_REQ_GENERATOR1
1476 * @arg @ref LL_DMAMUX2_REQ_GENERATOR2
1477 * @arg @ref LL_DMAMUX2_REQ_GENERATOR3
1478 * @arg @ref LL_DMAMUX2_REQ_GENERATOR4
1479 * @arg @ref LL_DMAMUX2_REQ_GENERATOR5
1480 * @arg @ref LL_DMAMUX2_REQ_GENERATOR6
1481 * @arg @ref LL_DMAMUX2_REQ_GENERATOR7
1482 * @arg @ref LL_DMAMUX2_REQ_LPUART1_RX
1483 * @arg @ref LL_DMAMUX2_REQ_LPUART1_TX
1484 * @arg @ref LL_DMAMUX2_REQ_SPI6_RX
1485 * @arg @ref LL_DMAMUX2_REQ_SPI6_TX
1486 * @arg @ref LL_DMAMUX2_REQ_I2C4_RX
1487 * @arg @ref LL_DMAMUX2_REQ_I2C4_TX
1488 * @arg @ref LL_DMAMUX2_REQ_SAI4_A (*)
1489 * @arg @ref LL_DMAMUX2_REQ_SAI4_B (*)
1490 * @arg @ref LL_DMAMUX2_REQ_ADC3 (*)
1491 * @arg @ref LL_DMAMUX2_REQ_DAC2_CH1 (*)
1492 * @arg @ref LL_DMAMUX2_REQ_DFSDM2_FLT0 (*)
1493 *
1494 * @note (*) Availability depends on devices.
1495 */
LL_BDMA_GetPeriphRequest(const BDMA_TypeDef * BDMAx,uint32_t Channel)1496 __STATIC_INLINE uint32_t LL_BDMA_GetPeriphRequest(const BDMA_TypeDef *BDMAx, uint32_t Channel)
1497 {
1498 UNUSED(BDMAx);
1499 return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel)))))->CCR, DMAMUX_CxCR_DMAREQ_ID));
1500 }
1501
1502 /**
1503 * @}
1504 */
1505
1506
1507 /** @defgroup BDMA_LL_EF_FLAG_Management FLAG_Management
1508 * @{
1509 */
1510 /**
1511 * @brief Get Channel 0 global interrupt flag.
1512 * @rmtoll ISR GIF0 LL_BDMA_IsActiveFlag_GI0
1513 * @param BDMAx BDMA Instance
1514 * @retval State of bit (1 or 0).
1515 */
LL_BDMA_IsActiveFlag_GI0(const BDMA_TypeDef * BDMAx)1516 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI0(const BDMA_TypeDef *BDMAx)
1517 {
1518 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF0) == (BDMA_ISR_GIF0)) ? 1UL : 0UL);
1519 }
1520
1521 /**
1522 * @brief Get Channel 1 global interrupt flag.
1523 * @rmtoll ISR GIF1 LL_BDMA_IsActiveFlag_GI1
1524 * @param BDMAx BDMA Instance
1525 * @retval State of bit (1 or 0).
1526 */
LL_BDMA_IsActiveFlag_GI1(const BDMA_TypeDef * BDMAx)1527 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI1(const BDMA_TypeDef *BDMAx)
1528 {
1529 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF1) == (BDMA_ISR_GIF1)) ? 1UL : 0UL);
1530 }
1531
1532 /**
1533 * @brief Get Channel 2 global interrupt flag.
1534 * @rmtoll ISR GIF2 LL_BDMA_IsActiveFlag_GI2
1535 * @param BDMAx BDMA Instance
1536 * @retval State of bit (1 or 0).
1537 */
LL_BDMA_IsActiveFlag_GI2(const BDMA_TypeDef * BDMAx)1538 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI2(const BDMA_TypeDef *BDMAx)
1539 {
1540 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF2) == (BDMA_ISR_GIF2)) ? 1UL : 0UL);
1541 }
1542
1543 /**
1544 * @brief Get Channel 3 global interrupt flag.
1545 * @rmtoll ISR GIF3 LL_BDMA_IsActiveFlag_GI3
1546 * @param BDMAx BDMA Instance
1547 * @retval State of bit (1 or 0).
1548 */
LL_BDMA_IsActiveFlag_GI3(const BDMA_TypeDef * BDMAx)1549 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI3(const BDMA_TypeDef *BDMAx)
1550 {
1551 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF3) == (BDMA_ISR_GIF3)) ? 1UL : 0UL);
1552 }
1553
1554 /**
1555 * @brief Get Channel 4 global interrupt flag.
1556 * @rmtoll ISR GIF4 LL_BDMA_IsActiveFlag_GI4
1557 * @param BDMAx BDMA Instance
1558 * @retval State of bit (1 or 0).
1559 */
LL_BDMA_IsActiveFlag_GI4(const BDMA_TypeDef * BDMAx)1560 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI4(const BDMA_TypeDef *BDMAx)
1561 {
1562 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF4) == (BDMA_ISR_GIF4)) ? 1UL : 0UL);
1563 }
1564
1565 /**
1566 * @brief Get Channel 5 global interrupt flag.
1567 * @rmtoll ISR GIF5 LL_BDMA_IsActiveFlag_GI5
1568 * @param BDMAx BDMA Instance
1569 * @retval State of bit (1 or 0).
1570 */
LL_BDMA_IsActiveFlag_GI5(const BDMA_TypeDef * BDMAx)1571 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI5(const BDMA_TypeDef *BDMAx)
1572 {
1573 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF5) == (BDMA_ISR_GIF5)) ? 1UL : 0UL);
1574 }
1575
1576 /**
1577 * @brief Get Channel 6 global interrupt flag.
1578 * @rmtoll ISR GIF6 LL_BDMA_IsActiveFlag_GI6
1579 * @param BDMAx BDMA Instance
1580 * @retval State of bit (1 or 0).
1581 */
LL_BDMA_IsActiveFlag_GI6(const BDMA_TypeDef * BDMAx)1582 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI6(const BDMA_TypeDef *BDMAx)
1583 {
1584 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF6) == (BDMA_ISR_GIF6)) ? 1UL : 0UL);
1585 }
1586
1587 /**
1588 * @brief Get Channel 7 global interrupt flag.
1589 * @rmtoll ISR GIF7 LL_BDMA_IsActiveFlag_GI7
1590 * @param BDMAx BDMA Instance
1591 * @retval State of bit (1 or 0).
1592 */
LL_BDMA_IsActiveFlag_GI7(const BDMA_TypeDef * BDMAx)1593 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI7(const BDMA_TypeDef *BDMAx)
1594 {
1595 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF7) == (BDMA_ISR_GIF7)) ? 1UL : 0UL);
1596 }
1597
1598 /**
1599 * @brief Get Channel 0 transfer complete flag.
1600 * @rmtoll ISR TCIF0 LL_BDMA_IsActiveFlag_TC0
1601 * @param BDMAx BDMA Instance
1602 * @retval State of bit (1 or 0).
1603 */
LL_BDMA_IsActiveFlag_TC0(const BDMA_TypeDef * BDMAx)1604 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC0(const BDMA_TypeDef *BDMAx)
1605 {
1606 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF0) == (BDMA_ISR_TCIF0)) ? 1UL : 0UL);
1607 }
1608 /**
1609 * @brief Get Channel 1 transfer complete flag.
1610 * @rmtoll ISR TCIF1 LL_BDMA_IsActiveFlag_TC1
1611 * @param BDMAx BDMA Instance
1612 * @retval State of bit (1 or 0).
1613 */
LL_BDMA_IsActiveFlag_TC1(const BDMA_TypeDef * BDMAx)1614 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC1(const BDMA_TypeDef *BDMAx)
1615 {
1616 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF1) == (BDMA_ISR_TCIF1)) ? 1UL : 0UL);
1617 }
1618
1619 /**
1620 * @brief Get Channel 2 transfer complete flag.
1621 * @rmtoll ISR TCIF2 LL_BDMA_IsActiveFlag_TC2
1622 * @param BDMAx BDMA Instance
1623 * @retval State of bit (1 or 0).
1624 */
LL_BDMA_IsActiveFlag_TC2(const BDMA_TypeDef * BDMAx)1625 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC2(const BDMA_TypeDef *BDMAx)
1626 {
1627 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF2) == (BDMA_ISR_TCIF2)) ? 1UL : 0UL);
1628 }
1629
1630 /**
1631 * @brief Get Channel 3 transfer complete flag.
1632 * @rmtoll ISR TCIF3 LL_BDMA_IsActiveFlag_TC3
1633 * @param BDMAx BDMA Instance
1634 * @retval State of bit (1 or 0).
1635 */
LL_BDMA_IsActiveFlag_TC3(const BDMA_TypeDef * BDMAx)1636 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC3(const BDMA_TypeDef *BDMAx)
1637 {
1638 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF3) == (BDMA_ISR_TCIF3)) ? 1UL : 0UL);
1639 }
1640
1641 /**
1642 * @brief Get Channel 4 transfer complete flag.
1643 * @rmtoll ISR TCIF4 LL_BDMA_IsActiveFlag_TC4
1644 * @param BDMAx BDMA Instance
1645 * @retval State of bit (1 or 0).
1646 */
LL_BDMA_IsActiveFlag_TC4(const BDMA_TypeDef * BDMAx)1647 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC4(const BDMA_TypeDef *BDMAx)
1648 {
1649 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF4) == (BDMA_ISR_TCIF4)) ? 1UL : 0UL);
1650 }
1651
1652 /**
1653 * @brief Get Channel 5 transfer complete flag.
1654 * @rmtoll ISR TCIF5 LL_BDMA_IsActiveFlag_TC5
1655 * @param BDMAx BDMA Instance
1656 * @retval State of bit (1 or 0).
1657 */
LL_BDMA_IsActiveFlag_TC5(const BDMA_TypeDef * BDMAx)1658 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC5(const BDMA_TypeDef *BDMAx)
1659 {
1660 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF5) == (BDMA_ISR_TCIF5)) ? 1UL : 0UL);
1661 }
1662
1663 /**
1664 * @brief Get Channel 6 transfer complete flag.
1665 * @rmtoll ISR TCIF6 LL_BDMA_IsActiveFlag_TC6
1666 * @param BDMAx BDMA Instance
1667 * @retval State of bit (1 or 0).
1668 */
LL_BDMA_IsActiveFlag_TC6(const BDMA_TypeDef * BDMAx)1669 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC6(const BDMA_TypeDef *BDMAx)
1670 {
1671 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF6) == (BDMA_ISR_TCIF6)) ? 1UL : 0UL);
1672 }
1673
1674 /**
1675 * @brief Get Channel 7 transfer complete flag.
1676 * @rmtoll ISR TCIF7 LL_BDMA_IsActiveFlag_TC7
1677 * @param BDMAx BDMA Instance
1678 * @retval State of bit (1 or 0).
1679 */
LL_BDMA_IsActiveFlag_TC7(const BDMA_TypeDef * BDMAx)1680 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC7(const BDMA_TypeDef *BDMAx)
1681 {
1682 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF7) == (BDMA_ISR_TCIF7)) ? 1UL : 0UL);
1683 }
1684
1685 /**
1686 * @brief Get Channel 0 half transfer flag.
1687 * @rmtoll ISR HTIF0 LL_BDMA_IsActiveFlag_HT0
1688 * @param BDMAx BDMA Instance
1689 * @retval State of bit (1 or 0).
1690 */
LL_BDMA_IsActiveFlag_HT0(const BDMA_TypeDef * BDMAx)1691 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT0(const BDMA_TypeDef *BDMAx)
1692 {
1693 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF0) == (BDMA_ISR_HTIF0)) ? 1UL : 0UL);
1694 }
1695
1696 /**
1697 * @brief Get Channel 1 half transfer flag.
1698 * @rmtoll ISR HTIF1 LL_BDMA_IsActiveFlag_HT1
1699 * @param BDMAx BDMA Instance
1700 * @retval State of bit (1 or 0).
1701 */
LL_BDMA_IsActiveFlag_HT1(const BDMA_TypeDef * BDMAx)1702 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT1(const BDMA_TypeDef *BDMAx)
1703 {
1704 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF1) == (BDMA_ISR_HTIF1)) ? 1UL : 0UL);
1705 }
1706
1707 /**
1708 * @brief Get Channel 2 half transfer flag.
1709 * @rmtoll ISR HTIF2 LL_BDMA_IsActiveFlag_HT2
1710 * @param BDMAx BDMA Instance
1711 * @retval State of bit (1 or 0).
1712 */
LL_BDMA_IsActiveFlag_HT2(const BDMA_TypeDef * BDMAx)1713 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT2(const BDMA_TypeDef *BDMAx)
1714 {
1715 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF2) == (BDMA_ISR_HTIF2)) ? 1UL : 0UL);
1716 }
1717
1718 /**
1719 * @brief Get Channel 3 half transfer flag.
1720 * @rmtoll ISR HTIF3 LL_BDMA_IsActiveFlag_HT3
1721 * @param BDMAx BDMA Instance
1722 * @retval State of bit (1 or 0).
1723 */
LL_BDMA_IsActiveFlag_HT3(const BDMA_TypeDef * BDMAx)1724 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT3(const BDMA_TypeDef *BDMAx)
1725 {
1726 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF3) == (BDMA_ISR_HTIF3)) ? 1UL : 0UL);
1727 }
1728
1729 /**
1730 * @brief Get Channel 4 half transfer flag.
1731 * @rmtoll ISR HTIF4 LL_BDMA_IsActiveFlag_HT4
1732 * @param BDMAx BDMA Instance
1733 * @retval State of bit (1 or 0).
1734 */
LL_BDMA_IsActiveFlag_HT4(const BDMA_TypeDef * BDMAx)1735 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT4(const BDMA_TypeDef *BDMAx)
1736 {
1737 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF4) == (BDMA_ISR_HTIF4)) ? 1UL : 0UL);
1738 }
1739
1740 /**
1741 * @brief Get Channel 5 half transfer flag.
1742 * @rmtoll ISR HTIF5 LL_BDMA_IsActiveFlag_HT5
1743 * @param BDMAx BDMA Instance
1744 * @retval State of bit (1 or 0).
1745 */
LL_BDMA_IsActiveFlag_HT5(const BDMA_TypeDef * BDMAx)1746 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT5(const BDMA_TypeDef *BDMAx)
1747 {
1748 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF5) == (BDMA_ISR_HTIF5)) ? 1UL : 0UL);
1749 }
1750
1751 /**
1752 * @brief Get Channel 6 half transfer flag.
1753 * @rmtoll ISR HTIF6 LL_BDMA_IsActiveFlag_HT6
1754 * @param BDMAx BDMA Instance
1755 * @retval State of bit (1 or 0).
1756 */
LL_BDMA_IsActiveFlag_HT6(const BDMA_TypeDef * BDMAx)1757 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT6(const BDMA_TypeDef *BDMAx)
1758 {
1759 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF6) == (BDMA_ISR_HTIF6)) ? 1UL : 0UL);
1760 }
1761
1762 /**
1763 * @brief Get Channel 7 half transfer flag.
1764 * @rmtoll ISR HTIF7 LL_BDMA_IsActiveFlag_HT7
1765 * @param BDMAx BDMA Instance
1766 * @retval State of bit (1 or 0).
1767 */
LL_BDMA_IsActiveFlag_HT7(const BDMA_TypeDef * BDMAx)1768 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT7(const BDMA_TypeDef *BDMAx)
1769 {
1770 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF7) == (BDMA_ISR_HTIF7)) ? 1UL : 0UL);
1771 }
1772
1773 /**
1774 * @brief Get Channel 0 transfer error flag.
1775 * @rmtoll ISR TEIF0 LL_BDMA_IsActiveFlag_TE0
1776 * @param BDMAx BDMA Instance
1777 * @retval State of bit (1 or 0).
1778 */
LL_BDMA_IsActiveFlag_TE0(const BDMA_TypeDef * BDMAx)1779 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE0(const BDMA_TypeDef *BDMAx)
1780 {
1781 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF0) == (BDMA_ISR_TEIF0)) ? 1UL : 0UL);
1782 }
1783
1784 /**
1785 * @brief Get Channel 1 transfer error flag.
1786 * @rmtoll ISR TEIF1 LL_BDMA_IsActiveFlag_TE1
1787 * @param BDMAx BDMA Instance
1788 * @retval State of bit (1 or 0).
1789 */
LL_BDMA_IsActiveFlag_TE1(const BDMA_TypeDef * BDMAx)1790 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE1(const BDMA_TypeDef *BDMAx)
1791 {
1792 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF1) == (BDMA_ISR_TEIF1)) ? 1UL : 0UL);
1793 }
1794
1795 /**
1796 * @brief Get Channel 2 transfer error flag.
1797 * @rmtoll ISR TEIF2 LL_BDMA_IsActiveFlag_TE2
1798 * @param BDMAx BDMA Instance
1799 * @retval State of bit (1 or 0).
1800 */
LL_BDMA_IsActiveFlag_TE2(const BDMA_TypeDef * BDMAx)1801 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE2(const BDMA_TypeDef *BDMAx)
1802 {
1803 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF2) == (BDMA_ISR_TEIF2)) ? 1UL : 0UL);
1804 }
1805
1806 /**
1807 * @brief Get Channel 3 transfer error flag.
1808 * @rmtoll ISR TEIF3 LL_BDMA_IsActiveFlag_TE3
1809 * @param BDMAx BDMA Instance
1810 * @retval State of bit (1 or 0).
1811 */
LL_BDMA_IsActiveFlag_TE3(const BDMA_TypeDef * BDMAx)1812 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE3(const BDMA_TypeDef *BDMAx)
1813 {
1814 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF3) == (BDMA_ISR_TEIF3)) ? 1UL : 0UL);
1815 }
1816
1817 /**
1818 * @brief Get Channel 4 transfer error flag.
1819 * @rmtoll ISR TEIF4 LL_BDMA_IsActiveFlag_TE4
1820 * @param BDMAx BDMA Instance
1821 * @retval State of bit (1 or 0).
1822 */
LL_BDMA_IsActiveFlag_TE4(const BDMA_TypeDef * BDMAx)1823 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE4(const BDMA_TypeDef *BDMAx)
1824 {
1825 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF4) == (BDMA_ISR_TEIF4)) ? 1UL : 0UL);
1826 }
1827
1828 /**
1829 * @brief Get Channel 5 transfer error flag.
1830 * @rmtoll ISR TEIF5 LL_BDMA_IsActiveFlag_TE5
1831 * @param BDMAx BDMA Instance
1832 * @retval State of bit (1 or 0).
1833 */
LL_BDMA_IsActiveFlag_TE5(const BDMA_TypeDef * BDMAx)1834 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE5(const BDMA_TypeDef *BDMAx)
1835 {
1836 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF5) == (BDMA_ISR_TEIF5)) ? 1UL : 0UL);
1837 }
1838
1839 /**
1840 * @brief Get Channel 6 transfer error flag.
1841 * @rmtoll ISR TEIF6 LL_BDMA_IsActiveFlag_TE6
1842 * @param BDMAx BDMA Instance
1843 * @retval State of bit (1 or 0).
1844 */
LL_BDMA_IsActiveFlag_TE6(const BDMA_TypeDef * BDMAx)1845 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE6(const BDMA_TypeDef *BDMAx)
1846 {
1847 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF6) == (BDMA_ISR_TEIF6)) ? 1UL : 0UL);
1848 }
1849
1850 /**
1851 * @brief Get Channel 7 transfer error flag.
1852 * @rmtoll ISR TEIF7 LL_BDMA_IsActiveFlag_TE7
1853 * @param BDMAx BDMA Instance
1854 * @retval State of bit (1 or 0).
1855 */
LL_BDMA_IsActiveFlag_TE7(const BDMA_TypeDef * BDMAx)1856 __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE7(const BDMA_TypeDef *BDMAx)
1857 {
1858 return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF7) == (BDMA_ISR_TEIF7)) ? 1UL : 0UL);
1859 }
1860
1861 /**
1862 * @brief Clear Channel 0 global interrupt flag.
1863 * @note Do not Clear Channel 0 global interrupt flag when the channel in ON.
1864 Instead clear specific flags transfer complete, half transfer & transfer
1865 error flag with LL_DMA_ClearFlag_TC0, LL_DMA_ClearFlag_HT0,
1866 LL_DMA_ClearFlag_TE0. bug id 2.3.1 in Product Errata Sheet.
1867 * @rmtoll IFCR CGIF0 LL_BDMA_ClearFlag_GI0
1868 * @param BDMAx BDMA Instance
1869 * @retval None
1870 */
LL_BDMA_ClearFlag_GI0(BDMA_TypeDef * BDMAx)1871 __STATIC_INLINE void LL_BDMA_ClearFlag_GI0(BDMA_TypeDef *BDMAx)
1872 {
1873 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF0);
1874 }
1875
1876 /**
1877 * @brief Clear Channel 1 global interrupt flag.
1878 * @note Do not Clear Channel 1 global interrupt flag when the channel in ON.
1879 Instead clear specific flags transfer complete, half transfer & transfer
1880 error flag with LL_DMA_ClearFlag_TC1, LL_DMA_ClearFlag_HT1,
1881 LL_DMA_ClearFlag_TE1. bug id 2.3.1 in Product Errata Sheet.
1882 * @rmtoll IFCR CGIF1 LL_BDMA_ClearFlag_GI1
1883 * @param BDMAx BDMA Instance
1884 * @retval None
1885 */
LL_BDMA_ClearFlag_GI1(BDMA_TypeDef * BDMAx)1886 __STATIC_INLINE void LL_BDMA_ClearFlag_GI1(BDMA_TypeDef *BDMAx)
1887 {
1888 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF1);
1889 }
1890
1891 /**
1892 * @brief Clear Channel 2 global interrupt flag.
1893 * @note Do not Clear Channel 2 global interrupt flag when the channel in ON.
1894 Instead clear specific flags transfer complete, half transfer & transfer
1895 error flag with LL_DMA_ClearFlag_TC2, LL_DMA_ClearFlag_HT2,
1896 LL_DMA_ClearFlag_TE2. bug id 2.3.1 in Product Errata Sheet.
1897 * @rmtoll IFCR CGIF2 LL_BDMA_ClearFlag_GI2
1898 * @param BDMAx BDMA Instance
1899 * @retval None
1900 */
LL_BDMA_ClearFlag_GI2(BDMA_TypeDef * BDMAx)1901 __STATIC_INLINE void LL_BDMA_ClearFlag_GI2(BDMA_TypeDef *BDMAx)
1902 {
1903 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF2);
1904 }
1905
1906 /**
1907 * @brief Clear Channel 3 global interrupt flag.
1908 * @note Do not Clear Channel 3 global interrupt flag when the channel in ON.
1909 Instead clear specific flags transfer complete, half transfer & transfer
1910 error flag with LL_DMA_ClearFlag_TC3, LL_DMA_ClearFlag_HT3,
1911 LL_DMA_ClearFlag_TE3. bug id 2.3.1 in Product Errata Sheet.
1912 * @rmtoll IFCR CGIF3 LL_BDMA_ClearFlag_GI3
1913 * @param BDMAx BDMA Instance
1914 * @retval None
1915 */
LL_BDMA_ClearFlag_GI3(BDMA_TypeDef * BDMAx)1916 __STATIC_INLINE void LL_BDMA_ClearFlag_GI3(BDMA_TypeDef *BDMAx)
1917 {
1918 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF3);
1919 }
1920
1921 /**
1922 * @brief Clear Channel 4 global interrupt flag.
1923 * @note Do not Clear Channel 4 global interrupt flag when the channel in ON.
1924 Instead clear specific flags transfer complete, half transfer & transfer
1925 error flag with LL_DMA_ClearFlag_TC4, LL_DMA_ClearFlag_HT4,
1926 LL_DMA_ClearFlag_TE4. bug id 2.3.1 in Product Errata Sheet.
1927 * @rmtoll IFCR CGIF4 LL_BDMA_ClearFlag_GI4
1928 * @param BDMAx BDMA Instance
1929 * @retval None
1930 */
LL_BDMA_ClearFlag_GI4(BDMA_TypeDef * BDMAx)1931 __STATIC_INLINE void LL_BDMA_ClearFlag_GI4(BDMA_TypeDef *BDMAx)
1932 {
1933 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF4);
1934 }
1935
1936 /**
1937 * @brief Clear Channel 5 global interrupt flag.
1938 * @note Do not Clear Channel 5 global interrupt flag when the channel in ON.
1939 Instead clear specific flags transfer complete, half transfer & transfer
1940 error flag with LL_DMA_ClearFlag_TC5, LL_DMA_ClearFlag_HT5,
1941 LL_DMA_ClearFlag_TE5. bug id 2.3.1 in Product Errata Sheet.
1942 * @rmtoll IFCR CGIF5 LL_BDMA_ClearFlag_GI5
1943 * @param BDMAx BDMA Instance
1944 * @retval None
1945 */
LL_BDMA_ClearFlag_GI5(BDMA_TypeDef * BDMAx)1946 __STATIC_INLINE void LL_BDMA_ClearFlag_GI5(BDMA_TypeDef *BDMAx)
1947 {
1948 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF5);
1949 }
1950
1951 /**
1952 * @brief Clear Channel 6 global interrupt flag.
1953 * @note Do not Clear Channel 6 global interrupt flag when the channel in ON.
1954 Instead clear specific flags transfer complete, half transfer & transfer
1955 error flag with LL_DMA_ClearFlag_TC6, LL_DMA_ClearFlag_HT6,
1956 LL_DMA_ClearFlag_TE6. bug id 2.3.1 in Product Errata Sheet.
1957 * @rmtoll IFCR CGIF6 LL_BDMA_ClearFlag_GI6
1958 * @param BDMAx BDMA Instance
1959 * @retval None
1960 */
LL_BDMA_ClearFlag_GI6(BDMA_TypeDef * BDMAx)1961 __STATIC_INLINE void LL_BDMA_ClearFlag_GI6(BDMA_TypeDef *BDMAx)
1962 {
1963 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF6);
1964 }
1965
1966 /**
1967 * @brief Clear Channel 7 global interrupt flag.
1968 * @note Do not Clear Channel 7 global interrupt flag when the channel in ON.
1969 Instead clear specific flags transfer complete, half transfer & transfer
1970 error flag with LL_DMA_ClearFlag_TC7, LL_DMA_ClearFlag_HT7,
1971 LL_DMA_ClearFlag_TE7. bug id 2.3.1 in Product Errata Sheet.
1972 * @rmtoll IFCR CGIF7 LL_BDMA_ClearFlag_GI7
1973 * @param BDMAx BDMA Instance
1974 * @retval None
1975 */
LL_BDMA_ClearFlag_GI7(BDMA_TypeDef * BDMAx)1976 __STATIC_INLINE void LL_BDMA_ClearFlag_GI7(BDMA_TypeDef *BDMAx)
1977 {
1978 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF7);
1979 }
1980
1981 /**
1982 * @brief Clear Channel 0 transfer complete flag.
1983 * @rmtoll IFCR CTCIF0 LL_BDMA_ClearFlag_TC0
1984 * @param BDMAx BDMA Instance
1985 * @retval None
1986 */
LL_BDMA_ClearFlag_TC0(BDMA_TypeDef * BDMAx)1987 __STATIC_INLINE void LL_BDMA_ClearFlag_TC0(BDMA_TypeDef *BDMAx)
1988 {
1989 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF0);
1990 }
1991
1992 /**
1993 * @brief Clear Channel 1 transfer complete flag.
1994 * @rmtoll IFCR CTCIF1 LL_BDMA_ClearFlag_TC1
1995 * @param BDMAx BDMA Instance
1996 * @retval None
1997 */
LL_BDMA_ClearFlag_TC1(BDMA_TypeDef * BDMAx)1998 __STATIC_INLINE void LL_BDMA_ClearFlag_TC1(BDMA_TypeDef *BDMAx)
1999 {
2000 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF1);
2001 }
2002
2003 /**
2004 * @brief Clear Channel 2 transfer complete flag.
2005 * @rmtoll IFCR CTCIF2 LL_BDMA_ClearFlag_TC2
2006 * @param BDMAx BDMA Instance
2007 * @retval None
2008 */
LL_BDMA_ClearFlag_TC2(BDMA_TypeDef * BDMAx)2009 __STATIC_INLINE void LL_BDMA_ClearFlag_TC2(BDMA_TypeDef *BDMAx)
2010 {
2011 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF2);
2012 }
2013
2014 /**
2015 * @brief Clear Channel 3 transfer complete flag.
2016 * @rmtoll IFCR CTCIF3 LL_BDMA_ClearFlag_TC3
2017 * @param BDMAx BDMA Instance
2018 * @retval None
2019 */
LL_BDMA_ClearFlag_TC3(BDMA_TypeDef * BDMAx)2020 __STATIC_INLINE void LL_BDMA_ClearFlag_TC3(BDMA_TypeDef *BDMAx)
2021 {
2022 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF3);
2023 }
2024
2025 /**
2026 * @brief Clear Channel 4 transfer complete flag.
2027 * @rmtoll IFCR CTCIF4 LL_BDMA_ClearFlag_TC4
2028 * @param BDMAx BDMA Instance
2029 * @retval None
2030 */
LL_BDMA_ClearFlag_TC4(BDMA_TypeDef * BDMAx)2031 __STATIC_INLINE void LL_BDMA_ClearFlag_TC4(BDMA_TypeDef *BDMAx)
2032 {
2033 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF4);
2034 }
2035
2036 /**
2037 * @brief Clear Channel 5 transfer complete flag.
2038 * @rmtoll IFCR CTCIF5 LL_BDMA_ClearFlag_TC5
2039 * @param BDMAx BDMA Instance
2040 * @retval None
2041 */
LL_BDMA_ClearFlag_TC5(BDMA_TypeDef * BDMAx)2042 __STATIC_INLINE void LL_BDMA_ClearFlag_TC5(BDMA_TypeDef *BDMAx)
2043 {
2044 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF5);
2045 }
2046
2047 /**
2048 * @brief Clear Channel 6 transfer complete flag.
2049 * @rmtoll IFCR CTCIF6 LL_BDMA_ClearFlag_TC6
2050 * @param BDMAx BDMA Instance
2051 * @retval None
2052 */
LL_BDMA_ClearFlag_TC6(BDMA_TypeDef * BDMAx)2053 __STATIC_INLINE void LL_BDMA_ClearFlag_TC6(BDMA_TypeDef *BDMAx)
2054 {
2055 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF6);
2056 }
2057
2058 /**
2059 * @brief Clear Channel 7 transfer complete flag.
2060 * @rmtoll IFCR CTCIF7 LL_BDMA_ClearFlag_TC7
2061 * @param BDMAx BDMA Instance
2062 * @retval None
2063 */
LL_BDMA_ClearFlag_TC7(BDMA_TypeDef * BDMAx)2064 __STATIC_INLINE void LL_BDMA_ClearFlag_TC7(BDMA_TypeDef *BDMAx)
2065 {
2066 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF7);
2067 }
2068
2069 /**
2070 * @brief Clear Channel 0 half transfer flag.
2071 * @rmtoll IFCR CHTIF0 LL_BDMA_ClearFlag_HT0
2072 * @param BDMAx BDMA Instance
2073 * @retval None
2074 */
LL_BDMA_ClearFlag_HT0(BDMA_TypeDef * BDMAx)2075 __STATIC_INLINE void LL_BDMA_ClearFlag_HT0(BDMA_TypeDef *BDMAx)
2076 {
2077 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF0);
2078 }
2079
2080 /**
2081 * @brief Clear Channel 1 half transfer flag.
2082 * @rmtoll IFCR CHTIF1 LL_BDMA_ClearFlag_HT1
2083 * @param BDMAx BDMA Instance
2084 * @retval None
2085 */
LL_BDMA_ClearFlag_HT1(BDMA_TypeDef * BDMAx)2086 __STATIC_INLINE void LL_BDMA_ClearFlag_HT1(BDMA_TypeDef *BDMAx)
2087 {
2088 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF1);
2089 }
2090
2091 /**
2092 * @brief Clear Channel 2 half transfer flag.
2093 * @rmtoll IFCR CHTIF2 LL_BDMA_ClearFlag_HT2
2094 * @param BDMAx BDMA Instance
2095 * @retval None
2096 */
LL_BDMA_ClearFlag_HT2(BDMA_TypeDef * BDMAx)2097 __STATIC_INLINE void LL_BDMA_ClearFlag_HT2(BDMA_TypeDef *BDMAx)
2098 {
2099 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF2);
2100 }
2101
2102 /**
2103 * @brief Clear Channel 3 half transfer flag.
2104 * @rmtoll IFCR CHTIF3 LL_BDMA_ClearFlag_HT3
2105 * @param BDMAx BDMA Instance
2106 * @retval None
2107 */
LL_BDMA_ClearFlag_HT3(BDMA_TypeDef * BDMAx)2108 __STATIC_INLINE void LL_BDMA_ClearFlag_HT3(BDMA_TypeDef *BDMAx)
2109 {
2110 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF3);
2111 }
2112
2113 /**
2114 * @brief Clear Channel 4 half transfer flag.
2115 * @rmtoll IFCR CHTIF4 LL_BDMA_ClearFlag_HT4
2116 * @param BDMAx BDMA Instance
2117 * @retval None
2118 */
LL_BDMA_ClearFlag_HT4(BDMA_TypeDef * BDMAx)2119 __STATIC_INLINE void LL_BDMA_ClearFlag_HT4(BDMA_TypeDef *BDMAx)
2120 {
2121 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF4);
2122 }
2123
2124 /**
2125 * @brief Clear Channel 5 half transfer flag.
2126 * @rmtoll IFCR CHTIF5 LL_BDMA_ClearFlag_HT5
2127 * @param BDMAx BDMA Instance
2128 * @retval None
2129 */
LL_BDMA_ClearFlag_HT5(BDMA_TypeDef * BDMAx)2130 __STATIC_INLINE void LL_BDMA_ClearFlag_HT5(BDMA_TypeDef *BDMAx)
2131 {
2132 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF5);
2133 }
2134
2135 /**
2136 * @brief Clear Channel 6 half transfer flag.
2137 * @rmtoll IFCR CHTIF6 LL_BDMA_ClearFlag_HT6
2138 * @param BDMAx BDMA Instance
2139 * @retval None
2140 */
LL_BDMA_ClearFlag_HT6(BDMA_TypeDef * BDMAx)2141 __STATIC_INLINE void LL_BDMA_ClearFlag_HT6(BDMA_TypeDef *BDMAx)
2142 {
2143 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF6);
2144 }
2145
2146 /**
2147 * @brief Clear Channel 7 half transfer flag.
2148 * @rmtoll IFCR CHTIF7 LL_BDMA_ClearFlag_HT7
2149 * @param BDMAx BDMA Instance
2150 * @retval None
2151 */
LL_BDMA_ClearFlag_HT7(BDMA_TypeDef * BDMAx)2152 __STATIC_INLINE void LL_BDMA_ClearFlag_HT7(BDMA_TypeDef *BDMAx)
2153 {
2154 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF7);
2155 }
2156
2157 /**
2158 * @brief Clear Channel 0 transfer error flag.
2159 * @rmtoll IFCR CTEIF0 LL_BDMA_ClearFlag_TE0
2160 * @param BDMAx BDMA Instance
2161 * @retval None
2162 */
LL_BDMA_ClearFlag_TE0(BDMA_TypeDef * BDMAx)2163 __STATIC_INLINE void LL_BDMA_ClearFlag_TE0(BDMA_TypeDef *BDMAx)
2164 {
2165 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF0);
2166 }
2167
2168 /**
2169 * @brief Clear Channel 1 transfer error flag.
2170 * @rmtoll IFCR CTEIF1 LL_BDMA_ClearFlag_TE1
2171 * @param BDMAx BDMA Instance
2172 * @retval None
2173 */
LL_BDMA_ClearFlag_TE1(BDMA_TypeDef * BDMAx)2174 __STATIC_INLINE void LL_BDMA_ClearFlag_TE1(BDMA_TypeDef *BDMAx)
2175 {
2176 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF1);
2177 }
2178
2179 /**
2180 * @brief Clear Channel 2 transfer error flag.
2181 * @rmtoll IFCR CTEIF2 LL_BDMA_ClearFlag_TE2
2182 * @param BDMAx BDMA Instance
2183 * @retval None
2184 */
LL_BDMA_ClearFlag_TE2(BDMA_TypeDef * BDMAx)2185 __STATIC_INLINE void LL_BDMA_ClearFlag_TE2(BDMA_TypeDef *BDMAx)
2186 {
2187 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF2);
2188 }
2189
2190 /**
2191 * @brief Clear Channel 3 transfer error flag.
2192 * @rmtoll IFCR CTEIF3 LL_BDMA_ClearFlag_TE3
2193 * @param BDMAx BDMA Instance
2194 * @retval None
2195 */
LL_BDMA_ClearFlag_TE3(BDMA_TypeDef * BDMAx)2196 __STATIC_INLINE void LL_BDMA_ClearFlag_TE3(BDMA_TypeDef *BDMAx)
2197 {
2198 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF3);
2199 }
2200
2201 /**
2202 * @brief Clear Channel 4 transfer error flag.
2203 * @rmtoll IFCR CTEIF4 LL_BDMA_ClearFlag_TE4
2204 * @param BDMAx BDMA Instance
2205 * @retval None
2206 */
LL_BDMA_ClearFlag_TE4(BDMA_TypeDef * BDMAx)2207 __STATIC_INLINE void LL_BDMA_ClearFlag_TE4(BDMA_TypeDef *BDMAx)
2208 {
2209 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF4);
2210 }
2211
2212 /**
2213 * @brief Clear Channel 5 transfer error flag.
2214 * @rmtoll IFCR CTEIF5 LL_BDMA_ClearFlag_TE5
2215 * @param BDMAx BDMA Instance
2216 * @retval None
2217 */
LL_BDMA_ClearFlag_TE5(BDMA_TypeDef * BDMAx)2218 __STATIC_INLINE void LL_BDMA_ClearFlag_TE5(BDMA_TypeDef *BDMAx)
2219 {
2220 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF5);
2221 }
2222
2223 /**
2224 * @brief Clear Channel 6 transfer error flag.
2225 * @rmtoll IFCR CTEIF6 LL_BDMA_ClearFlag_TE6
2226 * @param BDMAx BDMA Instance
2227 * @retval None
2228 */
LL_BDMA_ClearFlag_TE6(BDMA_TypeDef * BDMAx)2229 __STATIC_INLINE void LL_BDMA_ClearFlag_TE6(BDMA_TypeDef *BDMAx)
2230 {
2231 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF6);
2232 }
2233
2234 /**
2235 * @brief Clear Channel 7 transfer error flag.
2236 * @rmtoll IFCR CTEIF7 LL_BDMA_ClearFlag_TE7
2237 * @param BDMAx BDMA Instance
2238 * @retval None
2239 */
LL_BDMA_ClearFlag_TE7(BDMA_TypeDef * BDMAx)2240 __STATIC_INLINE void LL_BDMA_ClearFlag_TE7(BDMA_TypeDef *BDMAx)
2241 {
2242 WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF7);
2243 }
2244
2245 /**
2246 * @}
2247 */
2248
2249 /** @defgroup BDMA_LL_EF_IT_Management IT_Management
2250 * @{
2251 */
2252 /**
2253 * @brief Enable Transfer complete interrupt.
2254 * @rmtoll CCR TCIE LL_BDMA_EnableIT_TC
2255 * @param BDMAx BDMA Instance
2256 * @param Channel This parameter can be one of the following values:
2257 * @arg @ref LL_BDMA_CHANNEL_0
2258 * @arg @ref LL_BDMA_CHANNEL_1
2259 * @arg @ref LL_BDMA_CHANNEL_2
2260 * @arg @ref LL_BDMA_CHANNEL_3
2261 * @arg @ref LL_BDMA_CHANNEL_4
2262 * @arg @ref LL_BDMA_CHANNEL_5
2263 * @arg @ref LL_BDMA_CHANNEL_6
2264 * @arg @ref LL_BDMA_CHANNEL_7
2265 * @retval None
2266 */
LL_BDMA_EnableIT_TC(const BDMA_TypeDef * BDMAx,uint32_t Channel)2267 __STATIC_INLINE void LL_BDMA_EnableIT_TC(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2268 {
2269 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2270
2271 SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE);
2272 }
2273
2274 /**
2275 * @brief Enable Half transfer interrupt.
2276 * @rmtoll CCR HTIE LL_BDMA_EnableIT_HT
2277 * @param BDMAx BDMA Instance
2278 * @param Channel This parameter can be one of the following values:
2279 * @arg @ref LL_BDMA_CHANNEL_0
2280 * @arg @ref LL_BDMA_CHANNEL_1
2281 * @arg @ref LL_BDMA_CHANNEL_2
2282 * @arg @ref LL_BDMA_CHANNEL_3
2283 * @arg @ref LL_BDMA_CHANNEL_4
2284 * @arg @ref LL_BDMA_CHANNEL_5
2285 * @arg @ref LL_BDMA_CHANNEL_6
2286 * @arg @ref LL_BDMA_CHANNEL_7
2287 * @retval None
2288 */
LL_BDMA_EnableIT_HT(const BDMA_TypeDef * BDMAx,uint32_t Channel)2289 __STATIC_INLINE void LL_BDMA_EnableIT_HT(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2290 {
2291 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2292
2293 SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE);
2294 }
2295
2296 /**
2297 * @brief Enable Transfer error interrupt.
2298 * @rmtoll CCR TEIE LL_BDMA_EnableIT_TE
2299 * @param BDMAx BDMA Instance
2300 * @param Channel This parameter can be one of the following values:
2301 * @arg @ref LL_BDMA_CHANNEL_0
2302 * @arg @ref LL_BDMA_CHANNEL_1
2303 * @arg @ref LL_BDMA_CHANNEL_2
2304 * @arg @ref LL_BDMA_CHANNEL_3
2305 * @arg @ref LL_BDMA_CHANNEL_4
2306 * @arg @ref LL_BDMA_CHANNEL_5
2307 * @arg @ref LL_BDMA_CHANNEL_6
2308 * @arg @ref LL_BDMA_CHANNEL_7
2309 * @retval None
2310 */
LL_BDMA_EnableIT_TE(const BDMA_TypeDef * BDMAx,uint32_t Channel)2311 __STATIC_INLINE void LL_BDMA_EnableIT_TE(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2312 {
2313 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2314
2315 SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE);
2316 }
2317
2318 /**
2319 * @brief Disable Transfer complete interrupt.
2320 * @rmtoll CCR TCIE LL_BDMA_DisableIT_TC
2321 * @param BDMAx BDMA Instance
2322 * @param Channel This parameter can be one of the following values:
2323 * @arg @ref LL_BDMA_CHANNEL_0
2324 * @arg @ref LL_BDMA_CHANNEL_1
2325 * @arg @ref LL_BDMA_CHANNEL_2
2326 * @arg @ref LL_BDMA_CHANNEL_3
2327 * @arg @ref LL_BDMA_CHANNEL_4
2328 * @arg @ref LL_BDMA_CHANNEL_5
2329 * @arg @ref LL_BDMA_CHANNEL_6
2330 * @arg @ref LL_BDMA_CHANNEL_7
2331 * @retval None
2332 */
LL_BDMA_DisableIT_TC(const BDMA_TypeDef * BDMAx,uint32_t Channel)2333 __STATIC_INLINE void LL_BDMA_DisableIT_TC(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2334 {
2335 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2336
2337 CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE);
2338 }
2339
2340 /**
2341 * @brief Disable Half transfer interrupt.
2342 * @rmtoll CCR HTIE LL_BDMA_DisableIT_HT
2343 * @param BDMAx BDMA Instance
2344 * @param Channel This parameter can be one of the following values:
2345 * @arg @ref LL_BDMA_CHANNEL_0
2346 * @arg @ref LL_BDMA_CHANNEL_1
2347 * @arg @ref LL_BDMA_CHANNEL_2
2348 * @arg @ref LL_BDMA_CHANNEL_3
2349 * @arg @ref LL_BDMA_CHANNEL_4
2350 * @arg @ref LL_BDMA_CHANNEL_5
2351 * @arg @ref LL_BDMA_CHANNEL_6
2352 * @arg @ref LL_BDMA_CHANNEL_7
2353 * @retval None
2354 */
LL_BDMA_DisableIT_HT(const BDMA_TypeDef * BDMAx,uint32_t Channel)2355 __STATIC_INLINE void LL_BDMA_DisableIT_HT(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2356 {
2357 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2358
2359 CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE);
2360 }
2361
2362 /**
2363 * @brief Disable Transfer error interrupt.
2364 * @rmtoll CCR TEIE LL_BDMA_DisableIT_TE
2365 * @param BDMAx BDMA Instance
2366 * @param Channel This parameter can be one of the following values:
2367 * @arg @ref LL_BDMA_CHANNEL_0
2368 * @arg @ref LL_BDMA_CHANNEL_1
2369 * @arg @ref LL_BDMA_CHANNEL_2
2370 * @arg @ref LL_BDMA_CHANNEL_3
2371 * @arg @ref LL_BDMA_CHANNEL_4
2372 * @arg @ref LL_BDMA_CHANNEL_5
2373 * @arg @ref LL_BDMA_CHANNEL_6
2374 * @arg @ref LL_BDMA_CHANNEL_7
2375 * @retval None
2376 */
LL_BDMA_DisableIT_TE(const BDMA_TypeDef * BDMAx,uint32_t Channel)2377 __STATIC_INLINE void LL_BDMA_DisableIT_TE(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2378 {
2379 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2380
2381 CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE);
2382 }
2383
2384 /**
2385 * @brief Check if Transfer complete Interrupt is enabled.
2386 * @rmtoll CCR TCIE LL_BDMA_IsEnabledIT_TC
2387 * @param BDMAx BDMA Instance
2388 * @param Channel This parameter can be one of the following values:
2389 * @arg @ref LL_BDMA_CHANNEL_0
2390 * @arg @ref LL_BDMA_CHANNEL_1
2391 * @arg @ref LL_BDMA_CHANNEL_2
2392 * @arg @ref LL_BDMA_CHANNEL_3
2393 * @arg @ref LL_BDMA_CHANNEL_4
2394 * @arg @ref LL_BDMA_CHANNEL_5
2395 * @arg @ref LL_BDMA_CHANNEL_6
2396 * @arg @ref LL_BDMA_CHANNEL_7
2397 * @retval State of bit (1 or 0).
2398 */
LL_BDMA_IsEnabledIT_TC(const BDMA_TypeDef * BDMAx,uint32_t Channel)2399 __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TC(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2400 {
2401 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2402
2403 return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE) == (BDMA_CCR_TCIE)) ? 1UL : 0UL);
2404 }
2405
2406 /**
2407 * @brief Check if Half transfer Interrupt is enabled.
2408 * @rmtoll CCR HTIE LL_BDMA_IsEnabledIT_HT
2409 * @param BDMAx BDMA Instance
2410 * @param Channel This parameter can be one of the following values:
2411 * @arg @ref LL_BDMA_CHANNEL_0
2412 * @arg @ref LL_BDMA_CHANNEL_1
2413 * @arg @ref LL_BDMA_CHANNEL_2
2414 * @arg @ref LL_BDMA_CHANNEL_3
2415 * @arg @ref LL_BDMA_CHANNEL_4
2416 * @arg @ref LL_BDMA_CHANNEL_5
2417 * @arg @ref LL_BDMA_CHANNEL_6
2418 * @arg @ref LL_BDMA_CHANNEL_7
2419 * @retval State of bit (1 or 0).
2420 */
LL_BDMA_IsEnabledIT_HT(const BDMA_TypeDef * BDMAx,uint32_t Channel)2421 __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_HT(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2422 {
2423 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2424
2425 return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE) == (BDMA_CCR_HTIE)) ? 1UL : 0UL);
2426 }
2427
2428 /**
2429 * @brief Check if Transfer error Interrupt is enabled.
2430 * @rmtoll CCR TEIE LL_BDMA_IsEnabledIT_TE
2431 * @param BDMAx BDMA Instance
2432 * @param Channel This parameter can be one of the following values:
2433 * @arg @ref LL_BDMA_CHANNEL_0
2434 * @arg @ref LL_BDMA_CHANNEL_1
2435 * @arg @ref LL_BDMA_CHANNEL_2
2436 * @arg @ref LL_BDMA_CHANNEL_3
2437 * @arg @ref LL_BDMA_CHANNEL_4
2438 * @arg @ref LL_BDMA_CHANNEL_5
2439 * @arg @ref LL_BDMA_CHANNEL_6
2440 * @arg @ref LL_BDMA_CHANNEL_7
2441 * @retval State of bit (1 or 0).
2442 */
LL_BDMA_IsEnabledIT_TE(const BDMA_TypeDef * BDMAx,uint32_t Channel)2443 __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TE(const BDMA_TypeDef *BDMAx, uint32_t Channel)
2444 {
2445 uint32_t bdma_base_addr = (uint32_t)BDMAx;
2446
2447 return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE) == (BDMA_CCR_TEIE)) ? 1UL : 0UL);
2448 }
2449
2450 /**
2451 * @}
2452 */
2453
2454 #if defined(USE_FULL_LL_DRIVER)
2455 /** @defgroup BDMA_LL_EF_Init Initialization and de-initialization functions
2456 * @{
2457 */
2458
2459 uint32_t LL_BDMA_Init(BDMA_TypeDef *BDMAx, uint32_t Channel, LL_BDMA_InitTypeDef *BDMA_InitStruct);
2460 uint32_t LL_BDMA_DeInit(BDMA_TypeDef *BDMAx, uint32_t Channel);
2461 void LL_BDMA_StructInit(LL_BDMA_InitTypeDef *BDMA_InitStruct);
2462
2463 /**
2464 * @}
2465 */
2466 #endif /* USE_FULL_LL_DRIVER */
2467
2468 /**
2469 * @}
2470 */
2471
2472 /**
2473 * @}
2474 */
2475
2476 #endif /* BDMA || BDMA1 || BDMA2 */
2477 /**
2478 * @}
2479 */
2480
2481 #ifdef __cplusplus
2482 }
2483 #endif
2484
2485 #endif /* STM32H7xx_LL_BDMA_H */
2486
2487