1 /**
2 ******************************************************************************
3 * @file stm32u5xx_ll_dma2d.h
4 * @author MCD Application Team
5 * @brief Header file of DMA2D LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2021 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 STM32U5xx_LL_DMA2D_H
21 #define STM32U5xx_LL_DMA2D_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32u5xx.h"
29
30 /** @addtogroup STM32U5xx_LL_Driver
31 * @{
32 */
33
34 #if defined (DMA2D)
35
36 /** @defgroup DMA2D_LL DMA2D
37 * @{
38 */
39
40 /* Private types -------------------------------------------------------------*/
41 /* Private variables ---------------------------------------------------------*/
42 /* Private constants ---------------------------------------------------------*/
43 /* Private macros ------------------------------------------------------------*/
44 #if defined(USE_FULL_LL_DRIVER)
45 /** @defgroup DMA2D_LL_Private_Macros DMA2D Private Macros
46 * @{
47 */
48
49 /**
50 * @}
51 */
52 #endif /*USE_FULL_LL_DRIVER*/
53
54 /* Exported types ------------------------------------------------------------*/
55 #if defined(USE_FULL_LL_DRIVER)
56 /** @defgroup DMA2D_LL_ES_Init_Struct DMA2D Exported Init structures
57 * @{
58 */
59
60 /**
61 * @brief LL DMA2D Init Structure Definition
62 */
63 typedef struct
64 {
65 uint32_t Mode; /*!< Specifies the DMA2D transfer mode.
66 - This parameter can be one value of @ref DMA2D_LL_EC_MODE.
67
68 This parameter can be modified afterwards,
69 using unitary function @ref LL_DMA2D_SetMode(). */
70
71 uint32_t ColorMode; /*!< Specifies the color format of the output image.
72 - This parameter can be one value of @ref DMA2D_LL_EC_OUTPUT_COLOR_MODE.
73
74 This parameter can be modified afterwards using,
75 unitary function @ref LL_DMA2D_SetOutputColorMode(). */
76
77 uint32_t OutputBlue; /*!< Specifies the Blue value of the output image.
78 - This parameter must be a number between:
79 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
80 - This parameter must be a number between:
81 Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
82 - This parameter must be a number between:
83 Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
84 - This parameter must be a number between:
85 Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
86 - This parameter must be a number between:
87 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
88
89 This parameter can be modified afterwards,
90 using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
91 function @ref LL_DMA2D_ConfigOutputColor(). */
92
93 uint32_t OutputGreen; /*!< Specifies the Green value of the output image.
94 - This parameter must be a number between:
95 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
96 - This parameter must be a number between:
97 Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
98 - This parameter must be a number between:
99 Min_Data = 0x00 and Max_Data = 0x3F if RGB565 color mode is selected.
100 - This parameter must be a number between:
101 Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
102 - This parameter must be a number between:
103 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
104
105 This parameter can be modified afterwards
106 using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
107 function @ref LL_DMA2D_ConfigOutputColor(). */
108
109 uint32_t OutputRed; /*!< Specifies the Red value of the output image.
110 - This parameter must be a number between:
111 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
112 - This parameter must be a number between:
113 Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
114 - This parameter must be a number between:
115 Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
116 - This parameter must be a number between:
117 Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
118 - This parameter must be a number between:
119 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
120
121 This parameter can be modified afterwards
122 using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
123 function @ref LL_DMA2D_ConfigOutputColor(). */
124
125 uint32_t OutputAlpha; /*!< Specifies the Alpha channel of the output image.
126 - This parameter must be a number between:
127 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
128 - This parameter must be a number between:
129 Min_Data = 0x00 and Max_Data = 0x01 if ARGB1555 color mode is selected.
130 - This parameter must be a number between:
131 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
132 - This parameter is not considered if RGB888 or RGB565 color mode is selected.
133
134 This parameter can be modified afterwards using,
135 unitary function @ref LL_DMA2D_SetOutputColor() or configuration
136 function @ref LL_DMA2D_ConfigOutputColor(). */
137
138 uint32_t OutputMemoryAddress; /*!< Specifies the memory address.
139 - This parameter must be a number between:
140 Min_Data = 0x0000 and Max_Data = 0xFFFFFFFF.
141
142 This parameter can be modified afterwards,
143 using unitary function @ref LL_DMA2D_SetOutputMemAddr(). */
144
145 uint32_t OutputSwapMode; /*!< Specifies the output swap mode color format of the output image.
146 - This parameter can be one value of @ref DMA2D_LL_EC_OUTPUT_SWAP_MODE.
147
148 This parameter can be modified afterwards,
149 using unitary function @ref LL_DMA2D_SetOutputSwapMode(). */
150
151 uint32_t LineOffsetMode; /*!< Specifies the output line offset mode.
152 - This parameter can be one value of @ref DMA2D_LL_EC_LINE_OFFSET_MODE.
153
154 This parameter can be modified afterwards,
155 using unitary function @ref LL_DMA2D_SetLineOffsetMode(). */
156
157 uint32_t LineOffset; /*!< Specifies the output line offset value.
158 - This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.
159
160 This parameter can be modified afterwards,
161 using unitary function @ref LL_DMA2D_SetLineOffset(). */
162
163 uint32_t NbrOfLines; /*!< Specifies the number of lines of the area to be transferred.
164 - This parameter must be a number between:
165 Min_Data = 0x0000 and Max_Data = 0xFFFF.
166
167 This parameter can be modified afterwards,
168 using unitary function @ref LL_DMA2D_SetNbrOfLines(). */
169
170 uint32_t NbrOfPixelsPerLines; /*!< Specifies the number of pixels per lines of the area to be transferred.
171 - This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0x3FFF.
172
173 This parameter can be modified afterwards using,
174 unitary function @ref LL_DMA2D_SetNbrOfPixelsPerLines(). */
175
176 uint32_t AlphaInversionMode; /*!< Specifies the output alpha inversion mode.
177 - This parameter can be one value of @ref DMA2D_LL_EC_ALPHA_INVERSION.
178
179 This parameter can be modified afterwards,
180 using unitary function @ref LL_DMA2D_SetOutputAlphaInvMode(). */
181
182 uint32_t RBSwapMode; /*!< Specifies the output Red Blue swap mode.
183 - This parameter can be one value of @ref DMA2D_LL_EC_RED_BLUE_SWAP.
184
185 This parameter can be modified afterwards,
186 using unitary function @ref LL_DMA2D_SetOutputRBSwapMode(). */
187
188 } LL_DMA2D_InitTypeDef;
189
190 /**
191 * @brief LL DMA2D Layer Configuration Structure Definition
192 */
193 typedef struct
194 {
195 uint32_t MemoryAddress; /*!< Specifies the foreground or background memory address.
196 - This parameter must be a number between:
197 Min_Data = 0x0000 and Max_Data = 0xFFFFFFFF.
198
199 This parameter can be modified afterwards using unitary functions
200 - @ref LL_DMA2D_FGND_SetMemAddr() for foreground layer,
201 - @ref LL_DMA2D_BGND_SetMemAddr() for background layer. */
202
203 uint32_t LineOffset; /*!< Specifies the foreground or background line offset value.
204 - This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0x3FFF.
205
206 This parameter can be modified afterwards using unitary functions
207 - @ref LL_DMA2D_FGND_SetLineOffset() for foreground layer,
208 - @ref LL_DMA2D_BGND_SetLineOffset() for background layer. */
209
210 uint32_t ColorMode; /*!< Specifies the foreground or background color mode.
211 - This parameter can be one value of @ref DMA2D_LL_EC_INPUT_COLOR_MODE.
212
213 This parameter can be modified afterwards using unitary functions
214 - @ref LL_DMA2D_FGND_SetColorMode() for foreground layer,
215 - @ref LL_DMA2D_BGND_SetColorMode() for background layer. */
216
217 uint32_t CLUTColorMode; /*!< Specifies the foreground or background CLUT color mode.
218 - This parameter can be one value of @ref DMA2D_LL_EC_CLUT_COLOR_MODE.
219
220 This parameter can be modified afterwards using unitary functions
221 - @ref LL_DMA2D_FGND_SetCLUTColorMode() for foreground layer,
222 - @ref LL_DMA2D_BGND_SetCLUTColorMode() for background layer. */
223
224 uint32_t CLUTSize; /*!< Specifies the foreground or background CLUT size.
225 - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
226
227 This parameter can be modified afterwards using unitary functions
228 - @ref LL_DMA2D_FGND_SetCLUTSize() for foreground layer,
229 - @ref LL_DMA2D_BGND_SetCLUTSize() for background layer. */
230
231 uint32_t AlphaMode; /*!< Specifies the foreground or background alpha mode.
232 - This parameter can be one value of @ref DMA2D_LL_EC_ALPHA_MODE.
233
234 This parameter can be modified afterwards using unitary functions
235 - @ref LL_DMA2D_FGND_SetAlphaMode() for foreground layer,
236 - @ref LL_DMA2D_BGND_SetAlphaMode() for background layer. */
237
238 uint32_t Alpha; /*!< Specifies the foreground or background Alpha value.
239 - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
240
241 This parameter can be modified afterwards using unitary functions
242 - @ref LL_DMA2D_FGND_SetAlpha() for foreground layer,
243 - @ref LL_DMA2D_BGND_SetAlpha() for background layer. */
244
245 uint32_t Blue; /*!< Specifies the foreground or background Blue color value.
246 - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
247
248 This parameter can be modified afterwards using unitary functions
249 - @ref LL_DMA2D_FGND_SetBlueColor() for foreground layer,
250 - @ref LL_DMA2D_BGND_SetBlueColor() for background layer. */
251
252 uint32_t Green; /*!< Specifies the foreground or background Green color value.
253 - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
254
255 This parameter can be modified afterwards using unitary functions
256 - @ref LL_DMA2D_FGND_SetGreenColor() for foreground layer,
257 - @ref LL_DMA2D_BGND_SetGreenColor() for background layer. */
258
259 uint32_t Red; /*!< Specifies the foreground or background Red color value.
260 - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
261
262 This parameter can be modified afterwards using unitary functions
263 - @ref LL_DMA2D_FGND_SetRedColor() for foreground layer,
264 - @ref LL_DMA2D_BGND_SetRedColor() for background layer. */
265
266 uint32_t CLUTMemoryAddress; /*!< Specifies the foreground or background CLUT memory address.
267 - This parameter must be a number between:
268 Min_Data = 0x0000 and Max_Data = 0xFFFFFFFF.
269
270 This parameter can be modified afterwards using unitary functions
271 - @ref LL_DMA2D_FGND_SetCLUTMemAddr() for foreground layer,
272 - @ref LL_DMA2D_BGND_SetCLUTMemAddr() for background layer. */
273
274 uint32_t AlphaInversionMode; /*!< Specifies the foreground or background alpha inversion mode.
275 - This parameter can be one value of @ref DMA2D_LL_EC_ALPHA_INVERSION.
276
277 This parameter can be modified afterwards using unitary functions
278 - @ref LL_DMA2D_FGND_SetAlphaInvMode() for foreground layer,
279 - @ref LL_DMA2D_BGND_SetAlphaInvMode() for background layer. */
280
281 uint32_t RBSwapMode; /*!< Specifies the foreground or background Red Blue swap mode.
282 This parameter can be one value of @ref DMA2D_LL_EC_RED_BLUE_SWAP .
283
284 This parameter can be modified afterwards using unitary functions
285 - @ref LL_DMA2D_FGND_SetRBSwapMode() for foreground layer,
286 - @ref LL_DMA2D_BGND_SetRBSwapMode() for background layer. */
287
288 #if defined(DMA2D_FGPFCCR_CSS)
289 uint32_t ChromaSubSampling; /*!< Configure the chroma sub-sampling mode for the YCbCr color mode
290 This parameter is applicable for foreground layer only.
291 This parameter can be one value of @ref DMA2D_LL_CHROMA_SUB_SAMPLING
292
293 This parameter can be modified afterwards using unitary functions
294 - @ref LL_DMA2D_FGND_SetChrSubSampling() for foreground layer. */
295 #endif /* DMA2D_FGPFCCR_CSS */
296
297 } LL_DMA2D_LayerCfgTypeDef;
298
299 /**
300 * @brief LL DMA2D Output Color Structure Definition
301 */
302 typedef struct
303 {
304 uint32_t ColorMode; /*!< Specifies the color format of the output image.
305 - This parameter can be one value of @ref DMA2D_LL_EC_OUTPUT_COLOR_MODE.
306
307 This parameter can be modified afterwards using
308 unitary function @ref LL_DMA2D_SetOutputColorMode(). */
309
310 uint32_t OutputBlue; /*!< Specifies the Blue value of the output image.
311 - This parameter must be a number between:
312 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
313 - This parameter must be a number between:
314 Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
315 - This parameter must be a number between:
316 Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
317 - This parameter must be a number between:
318 Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
319 - This parameter must be a number between:
320 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
321
322 This parameter can be modified afterwards using,
323 unitary function @ref LL_DMA2D_SetOutputColor() or configuration
324 function @ref LL_DMA2D_ConfigOutputColor(). */
325
326 uint32_t OutputGreen; /*!< Specifies the Green value of the output image.
327 - This parameter must be a number between:
328 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
329 - This parameter must be a number between
330 Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
331 - This parameter must be a number between:
332 Min_Data = 0x00 and Max_Data = 0x3F if RGB565 color mode is selected.
333 - This parameter must be a number between:
334 Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
335 - This parameter must be a number between:
336 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
337
338 This parameter can be modified afterwards,
339 using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
340 function @ref LL_DMA2D_ConfigOutputColor(). */
341
342 uint32_t OutputRed; /*!< Specifies the Red value of the output image.
343 - This parameter must be a number between:
344 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
345 - This parameter must be a number between:
346 Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
347 - This parameter must be a number between:
348 Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
349 - This parameter must be a number between:
350 Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
351 - This parameter must be a number between:
352 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
353
354 This parameter can be modified afterwards,
355 using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
356 function @ref LL_DMA2D_ConfigOutputColor(). */
357
358 uint32_t OutputAlpha; /*!< Specifies the Alpha channel of the output image.
359 - This parameter must be a number between:
360 Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
361 - This parameter must be a number between:
362 Min_Data = 0x00 and Max_Data = 0x01 if ARGB1555 color mode is selected.
363 - This parameter must be a number between:
364 Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
365 - This parameter is not considered if RGB888 or RGB565 color mode is selected.
366
367 This parameter can be modified afterwards,
368 using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
369 function @ref LL_DMA2D_ConfigOutputColor(). */
370
371 } LL_DMA2D_ColorTypeDef;
372
373 /**
374 * @}
375 */
376 #endif /* USE_FULL_LL_DRIVER */
377
378 /* Exported constants --------------------------------------------------------*/
379 /** @defgroup DMA2D_LL_Exported_Constants DMA2D Exported Constants
380 * @{
381 */
382
383 /** @defgroup DMA2D_LL_EC_GET_FLAG Get Flags Defines
384 * @brief Flags defines which can be used with LL_DMA2D_ReadReg function
385 * @{
386 */
387 #define LL_DMA2D_FLAG_CEIF DMA2D_ISR_CEIF /*!< Configuration Error Interrupt Flag */
388 #define LL_DMA2D_FLAG_CTCIF DMA2D_ISR_CTCIF /*!< CLUT Transfer Complete Interrupt Flag */
389 #define LL_DMA2D_FLAG_CAEIF DMA2D_ISR_CAEIF /*!< CLUT Access Error Interrupt Flag */
390 #define LL_DMA2D_FLAG_TWIF DMA2D_ISR_TWIF /*!< Transfer Watermark Interrupt Flag */
391 #define LL_DMA2D_FLAG_TCIF DMA2D_ISR_TCIF /*!< Transfer Complete Interrupt Flag */
392 #define LL_DMA2D_FLAG_TEIF DMA2D_ISR_TEIF /*!< Transfer Error Interrupt Flag */
393 /**
394 * @}
395 */
396
397 /** @defgroup DMA2D_LL_EC_IT IT Defines
398 * @brief IT defines which can be used with LL_DMA2D_ReadReg and LL_DMA2D_WriteReg functions
399 * @{
400 */
401 #define LL_DMA2D_IT_CEIE DMA2D_CR_CEIE /*!< Configuration Error Interrupt */
402 #define LL_DMA2D_IT_CTCIE DMA2D_CR_CTCIE /*!< CLUT Transfer Complete Interrupt */
403 #define LL_DMA2D_IT_CAEIE DMA2D_CR_CAEIE /*!< CLUT Access Error Interrupt */
404 #define LL_DMA2D_IT_TWIE DMA2D_CR_TWIE /*!< Transfer Watermark Interrupt */
405 #define LL_DMA2D_IT_TCIE DMA2D_CR_TCIE /*!< Transfer Complete Interrupt */
406 #define LL_DMA2D_IT_TEIE DMA2D_CR_TEIE /*!< Transfer Error Interrupt */
407 /**
408 * @}
409 */
410
411 /** @defgroup DMA2D_LL_EC_MODE Mode
412 * @{
413 */
414 #define LL_DMA2D_MODE_M2M 0x00000000U /*!< DMA2D memory to memory transfer mode */
415 #define LL_DMA2D_MODE_M2M_PFC DMA2D_CR_MODE_0 /*!< DMA2D memory to memory with pixel format conversion transfer mode */
416 #define LL_DMA2D_MODE_M2M_BLEND DMA2D_CR_MODE_1 /*!< DMA2D memory to memory with blending transfer mode */
417 #define LL_DMA2D_MODE_R2M (DMA2D_CR_MODE_0|DMA2D_CR_MODE_1) /*!< DMA2D register to memory transfer mode */
418 #define LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG DMA2D_CR_MODE_2 /*!< DMA2D memory to memory with blending transfer mode and fixed color foreground */
419 #define LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG (DMA2D_CR_MODE_0|DMA2D_CR_MODE_2) /*!< DMA2D memory to memory with blending transfer mode and fixed color background */
420 /**
421 * @}
422 */
423
424 /** @defgroup DMA2D_LL_EC_OUTPUT_COLOR_MODE Output Color Mode
425 * @{
426 */
427 #define LL_DMA2D_OUTPUT_MODE_ARGB8888 0x00000000U /*!< ARGB8888 */
428 #define LL_DMA2D_OUTPUT_MODE_RGB888 DMA2D_OPFCCR_CM_0 /*!< RGB888 */
429 #define LL_DMA2D_OUTPUT_MODE_RGB565 DMA2D_OPFCCR_CM_1 /*!< RGB565 */
430 #define LL_DMA2D_OUTPUT_MODE_ARGB1555 (DMA2D_OPFCCR_CM_0|DMA2D_OPFCCR_CM_1) /*!< ARGB1555 */
431 #define LL_DMA2D_OUTPUT_MODE_ARGB4444 DMA2D_OPFCCR_CM_2 /*!< ARGB4444 */
432 /**
433 * @}
434 */
435
436 /** @defgroup DMA2D_LL_EC_INPUT_COLOR_MODE Input Color Mode
437 * @{
438 */
439 #define LL_DMA2D_INPUT_MODE_ARGB8888 0x00000000U /*!< ARGB8888 */
440 #define LL_DMA2D_INPUT_MODE_RGB888 DMA2D_FGPFCCR_CM_0 /*!< RGB888 */
441 #define LL_DMA2D_INPUT_MODE_RGB565 DMA2D_FGPFCCR_CM_1 /*!< RGB565 */
442 #define LL_DMA2D_INPUT_MODE_ARGB1555 (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_1) /*!< ARGB1555 */
443 #define LL_DMA2D_INPUT_MODE_ARGB4444 DMA2D_FGPFCCR_CM_2 /*!< ARGB4444 */
444 #define LL_DMA2D_INPUT_MODE_L8 (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_2) /*!< L8 */
445 #define LL_DMA2D_INPUT_MODE_AL44 (DMA2D_FGPFCCR_CM_1|DMA2D_FGPFCCR_CM_2) /*!< AL44 */
446 #define LL_DMA2D_INPUT_MODE_AL88 (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_1|DMA2D_FGPFCCR_CM_2) /*!< AL88 */
447 #define LL_DMA2D_INPUT_MODE_L4 DMA2D_FGPFCCR_CM_3 /*!< L4 */
448 #define LL_DMA2D_INPUT_MODE_A8 (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_3) /*!< A8 */
449 #define LL_DMA2D_INPUT_MODE_A4 (DMA2D_FGPFCCR_CM_1|DMA2D_FGPFCCR_CM_3) /*!< A4 */
450 #if defined(DMA2D_FGPFCCR_CSS)
451 #define LL_DMA2D_INPUT_MODE_YCBCR (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_1|DMA2D_FGPFCCR_CM_3) /*!< YCbCr */
452 #endif /* DMA2D_FGPFCCR_CSS */
453 /**
454 * @}
455 */
456
457 /** @defgroup DMA2D_LL_EC_ALPHA_MODE Alpha Mode
458 * @{
459 */
460 #define LL_DMA2D_ALPHA_MODE_NO_MODIF 0x00000000U /*!< No modification of the alpha channel value */
461 #define LL_DMA2D_ALPHA_MODE_REPLACE DMA2D_FGPFCCR_AM_0 /*!< Replace original alpha channel value by
462 programmed alpha value */
463 #define LL_DMA2D_ALPHA_MODE_COMBINE DMA2D_FGPFCCR_AM_1 /*!< Replace original alpha channel value by
464 programmed alpha value with,
465 original alpha channel value */
466 /**
467 * @}
468 */
469
470 /** @defgroup DMA2D_LL_EC_OUTPUT_SWAP_MODE Swap Mode
471 * @{
472 */
473 #define LL_DMA2D_SWAP_MODE_REGULAR 0x00000000U /*!< Regular order */
474 #define LL_DMA2D_SWAP_MODE_TWO_BY_TWO DMA2D_OPFCCR_SB /*!< Bytes swapped two by two */
475 /**
476 * @}
477 */
478
479 /** @defgroup DMA2D_LL_EC_RED_BLUE_SWAP Red Blue Swap
480 * @{
481 */
482 #define LL_DMA2D_RB_MODE_REGULAR 0x00000000U /*!< RGB or ARGB */
483 #define LL_DMA2D_RB_MODE_SWAP DMA2D_FGPFCCR_RBS /*!< BGR or ABGR */
484 /**
485 * @}
486 */
487
488 /** @defgroup DMA2D_LL_EC_ALPHA_INVERSION Alpha Inversion
489 * @{
490 */
491 #define LL_DMA2D_ALPHA_REGULAR 0x00000000U /*!< Regular alpha */
492 #define LL_DMA2D_ALPHA_INVERTED DMA2D_FGPFCCR_AI /*!< Inverted alpha */
493 /**
494 * @}
495 */
496
497
498 /** @defgroup DMA2D_LL_EC_LINE_OFFSET_MODE Line Offset Mode
499 * @{
500 */
501 #define LL_DMA2D_LINE_OFFSET_PIXELS 0x00000000U /*!< Line offsets are expressed in pixels */
502 #define LL_DMA2D_LINE_OFFSET_BYTES DMA2D_CR_LOM /*!< Line offsets are expressed in bytes */
503 /**
504 * @}
505 */
506
507 /** @defgroup DMA2D_LL_EC_CLUT_COLOR_MODE CLUT Color Mode
508 * @{
509 */
510 #define LL_DMA2D_CLUT_COLOR_MODE_ARGB8888 0x00000000U /*!< ARGB8888 */
511 #define LL_DMA2D_CLUT_COLOR_MODE_RGB888 DMA2D_FGPFCCR_CCM /*!< RGB888 */
512 /**
513 * @}
514 */
515
516 #if defined(DMA2D_FGPFCCR_CSS)
517 /** @defgroup DMA2D_LL_CHROMA_SUB_SAMPLING Chroma Sub Sampling
518 * @{
519 */
520 #define LL_DMA2D_CSS_444 0x00000000U /*!< No chroma sub-sampling 4:4:4 */
521 #define LL_DMA2D_CSS_422 DMA2D_FGPFCCR_CSS_0 /*!< chroma sub-sampling 4:2:2 */
522 #define LL_DMA2D_CSS_420 DMA2D_FGPFCCR_CSS_1 /*!< chroma sub-sampling 4:2:0 */
523 /**
524 * @}
525 */
526 #endif /* DMA2D_FGPFCCR_CSS */
527
528 /**
529 * @}
530 */
531
532 /* Exported macro ------------------------------------------------------------*/
533 /** @defgroup DMA2D_LL_Exported_Macros DMA2D Exported Macros
534 * @{
535 */
536
537 /** @defgroup DMA2D_LL_EM_WRITE_READ Common Write and read registers Macros
538 * @{
539 */
540
541 /**
542 * @brief Write a value in DMA2D register.
543 * @param __INSTANCE__ DMA2D Instance
544 * @param __REG__ Register to be written
545 * @param __VALUE__ Value to be written in the register
546 * @retval None
547 */
548 #define LL_DMA2D_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
549
550 /**
551 * @brief Read a value in DMA2D register.
552 * @param __INSTANCE__ DMA2D Instance
553 * @param __REG__ Register to be read
554 * @retval Register value
555 */
556 #define LL_DMA2D_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__)
557 /**
558 * @}
559 */
560
561 /**
562 * @}
563 */
564
565 /* Exported functions --------------------------------------------------------*/
566 /** @defgroup DMA2D_LL_Exported_Functions DMA2D Exported Functions
567 * @{
568 */
569
570 /** @defgroup DMA2D_LL_EF_Configuration Configuration Functions
571 * @{
572 */
573
574 /**
575 * @brief Start a DMA2D transfer.
576 * @rmtoll CR START LL_DMA2D_Start
577 * @param DMA2Dx DMA2D Instance
578 * @retval None
579 */
LL_DMA2D_Start(DMA2D_TypeDef * DMA2Dx)580 __STATIC_INLINE void LL_DMA2D_Start(DMA2D_TypeDef *DMA2Dx)
581 {
582 SET_BIT(DMA2Dx->CR, DMA2D_CR_START);
583 }
584
585 /**
586 * @brief Indicate if a DMA2D transfer is ongoing.
587 * @rmtoll CR START LL_DMA2D_IsTransferOngoing
588 * @param DMA2Dx DMA2D Instance
589 * @retval State of bit (1 or 0).
590 */
LL_DMA2D_IsTransferOngoing(const DMA2D_TypeDef * DMA2Dx)591 __STATIC_INLINE uint32_t LL_DMA2D_IsTransferOngoing(const DMA2D_TypeDef *DMA2Dx)
592 {
593 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_START) == (DMA2D_CR_START)) ? 1UL : 0UL);
594 }
595
596 /**
597 * @brief Suspend DMA2D transfer.
598 * @note This API can be used to suspend automatic foreground or background CLUT loading.
599 * @rmtoll CR SUSP LL_DMA2D_Suspend
600 * @param DMA2Dx DMA2D Instance
601 * @retval None
602 */
LL_DMA2D_Suspend(DMA2D_TypeDef * DMA2Dx)603 __STATIC_INLINE void LL_DMA2D_Suspend(DMA2D_TypeDef *DMA2Dx)
604 {
605 MODIFY_REG(DMA2Dx->CR, DMA2D_CR_SUSP | DMA2D_CR_START, DMA2D_CR_SUSP);
606 }
607
608 /**
609 * @brief Resume DMA2D transfer.
610 * @note This API can be used to resume automatic foreground or background CLUT loading.
611 * @rmtoll CR SUSP LL_DMA2D_Resume
612 * @param DMA2Dx DMA2D Instance
613 * @retval None
614 */
LL_DMA2D_Resume(DMA2D_TypeDef * DMA2Dx)615 __STATIC_INLINE void LL_DMA2D_Resume(DMA2D_TypeDef *DMA2Dx)
616 {
617 CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_SUSP | DMA2D_CR_START);
618 }
619
620 /**
621 * @brief Indicate if DMA2D transfer is suspended.
622 * @note This API can be used to indicate whether or not automatic foreground or
623 * background CLUT loading is suspended.
624 * @rmtoll CR SUSP LL_DMA2D_IsSuspended
625 * @param DMA2Dx DMA2D Instance
626 * @retval State of bit (1 or 0).
627 */
LL_DMA2D_IsSuspended(const DMA2D_TypeDef * DMA2Dx)628 __STATIC_INLINE uint32_t LL_DMA2D_IsSuspended(const DMA2D_TypeDef *DMA2Dx)
629 {
630 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_SUSP) == (DMA2D_CR_SUSP)) ? 1UL : 0UL);
631 }
632
633 /**
634 * @brief Abort DMA2D transfer.
635 * @note This API can be used to abort automatic foreground or background CLUT loading.
636 * @rmtoll CR ABORT LL_DMA2D_Abort
637 * @param DMA2Dx DMA2D Instance
638 * @retval None
639 */
LL_DMA2D_Abort(DMA2D_TypeDef * DMA2Dx)640 __STATIC_INLINE void LL_DMA2D_Abort(DMA2D_TypeDef *DMA2Dx)
641 {
642 MODIFY_REG(DMA2Dx->CR, DMA2D_CR_ABORT | DMA2D_CR_START, DMA2D_CR_ABORT);
643 }
644
645 /**
646 * @brief Indicate if DMA2D transfer is aborted.
647 * @note This API can be used to indicate whether or not automatic foreground or
648 * background CLUT loading is aborted.
649 * @rmtoll CR ABORT LL_DMA2D_IsAborted
650 * @param DMA2Dx DMA2D Instance
651 * @retval State of bit (1 or 0).
652 */
LL_DMA2D_IsAborted(const DMA2D_TypeDef * DMA2Dx)653 __STATIC_INLINE uint32_t LL_DMA2D_IsAborted(const DMA2D_TypeDef *DMA2Dx)
654 {
655 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_ABORT) == (DMA2D_CR_ABORT)) ? 1UL : 0UL);
656 }
657
658 /**
659 * @brief Set DMA2D mode.
660 * @rmtoll CR MODE LL_DMA2D_SetMode
661 * @param DMA2Dx DMA2D Instance
662 * @param Mode This parameter can be one of the following values:
663 * @arg @ref LL_DMA2D_MODE_M2M
664 * @arg @ref LL_DMA2D_MODE_M2M_PFC
665 * @arg @ref LL_DMA2D_MODE_M2M_BLEND
666 * @arg @ref LL_DMA2D_MODE_R2M
667 * @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG
668 * @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG
669 * @retval None
670 */
LL_DMA2D_SetMode(DMA2D_TypeDef * DMA2Dx,uint32_t Mode)671 __STATIC_INLINE void LL_DMA2D_SetMode(DMA2D_TypeDef *DMA2Dx, uint32_t Mode)
672 {
673 MODIFY_REG(DMA2Dx->CR, DMA2D_CR_MODE, Mode);
674 }
675
676 /**
677 * @brief Return DMA2D mode
678 * @rmtoll CR MODE LL_DMA2D_GetMode
679 * @param DMA2Dx DMA2D Instance
680 * @retval Returned value can be one of the following values:
681 * @arg @ref LL_DMA2D_MODE_M2M
682 * @arg @ref LL_DMA2D_MODE_M2M_PFC
683 * @arg @ref LL_DMA2D_MODE_M2M_BLEND
684 * @arg @ref LL_DMA2D_MODE_R2M
685 * @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG
686 * @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG
687 */
LL_DMA2D_GetMode(const DMA2D_TypeDef * DMA2Dx)688 __STATIC_INLINE uint32_t LL_DMA2D_GetMode(const DMA2D_TypeDef *DMA2Dx)
689 {
690 return (uint32_t)(READ_BIT(DMA2Dx->CR, DMA2D_CR_MODE));
691 }
692
693 /**
694 * @brief Set DMA2D output color mode.
695 * @rmtoll OPFCCR CM LL_DMA2D_SetOutputColorMode
696 * @param DMA2Dx DMA2D Instance
697 * @param ColorMode This parameter can be one of the following values:
698 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
699 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
700 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
701 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
702 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
703 * @retval None
704 */
LL_DMA2D_SetOutputColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t ColorMode)705 __STATIC_INLINE void LL_DMA2D_SetOutputColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
706 {
707 MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_CM, ColorMode);
708 }
709
710 /**
711 * @brief Return DMA2D output color mode.
712 * @rmtoll OPFCCR CM LL_DMA2D_GetOutputColorMode
713 * @param DMA2Dx DMA2D Instance
714 * @retval Returned value can be one of the following values:
715 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
716 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
717 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
718 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
719 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
720 */
LL_DMA2D_GetOutputColorMode(const DMA2D_TypeDef * DMA2Dx)721 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputColorMode(const DMA2D_TypeDef *DMA2Dx)
722 {
723 return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_CM));
724 }
725
726 /**
727 * @brief Set DMA2D output Red Blue swap mode.
728 * @rmtoll OPFCCR RBS LL_DMA2D_SetOutputRBSwapMode
729 * @param DMA2Dx DMA2D Instance
730 * @param RBSwapMode This parameter can be one of the following values:
731 * @arg @ref LL_DMA2D_RB_MODE_REGULAR
732 * @arg @ref LL_DMA2D_RB_MODE_SWAP
733 * @retval None
734 */
LL_DMA2D_SetOutputRBSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t RBSwapMode)735 __STATIC_INLINE void LL_DMA2D_SetOutputRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t RBSwapMode)
736 {
737 MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_RBS, RBSwapMode);
738 }
739
740 /**
741 * @brief Return DMA2D output Red Blue swap mode.
742 * @rmtoll OPFCCR RBS LL_DMA2D_GetOutputRBSwapMode
743 * @param DMA2Dx DMA2D Instance
744 * @retval Returned value can be one of the following values:
745 * @arg @ref LL_DMA2D_RB_MODE_REGULAR
746 * @arg @ref LL_DMA2D_RB_MODE_SWAP
747 */
LL_DMA2D_GetOutputRBSwapMode(const DMA2D_TypeDef * DMA2Dx)748 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputRBSwapMode(const DMA2D_TypeDef *DMA2Dx)
749 {
750 return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_RBS));
751 }
752
753 /**
754 * @brief Set DMA2D output alpha inversion mode.
755 * @rmtoll OPFCCR AI LL_DMA2D_SetOutputAlphaInvMode
756 * @param DMA2Dx DMA2D Instance
757 * @param AlphaInversionMode This parameter can be one of the following values:
758 * @arg @ref LL_DMA2D_ALPHA_REGULAR
759 * @arg @ref LL_DMA2D_ALPHA_INVERTED
760 * @retval None
761 */
LL_DMA2D_SetOutputAlphaInvMode(DMA2D_TypeDef * DMA2Dx,uint32_t AlphaInversionMode)762 __STATIC_INLINE void LL_DMA2D_SetOutputAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32_t AlphaInversionMode)
763 {
764 MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_AI, AlphaInversionMode);
765 }
766
767 /**
768 * @brief Return DMA2D output alpha inversion mode.
769 * @rmtoll OPFCCR AI LL_DMA2D_GetOutputAlphaInvMode
770 * @param DMA2Dx DMA2D Instance
771 * @retval Returned value can be one of the following values:
772 * @arg @ref LL_DMA2D_ALPHA_REGULAR
773 * @arg @ref LL_DMA2D_ALPHA_INVERTED
774 */
LL_DMA2D_GetOutputAlphaInvMode(const DMA2D_TypeDef * DMA2Dx)775 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputAlphaInvMode(const DMA2D_TypeDef *DMA2Dx)
776 {
777 return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_AI));
778 }
779
780
781 /**
782 * @brief Set DMA2D output swap mode.
783 * @rmtoll OPFCCR SB LL_DMA2D_SetOutputSwapMode
784 * @param DMA2Dx DMA2D Instance
785 * @param OutputSwapMode This parameter can be one of the following values:
786 * @arg @ref LL_DMA2D_SWAP_MODE_REGULAR
787 * @arg @ref LL_DMA2D_SWAP_MODE_TWO_BY_TWO
788 * @retval None
789 */
LL_DMA2D_SetOutputSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t OutputSwapMode)790 __STATIC_INLINE void LL_DMA2D_SetOutputSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t OutputSwapMode)
791 {
792 MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_SB, OutputSwapMode);
793 }
794
795 /**
796 * @brief Return DMA2D output swap mode.
797 * @rmtoll OPFCCR SB LL_DMA2D_GetOutputSwapMode
798 * @param DMA2Dx DMA2D Instance
799 * @retval Returned value can be one of the following values:
800 * @arg @ref LL_DMA2D_SWAP_MODE_REGULAR
801 * @arg @ref LL_DMA2D_SWAP_MODE_TWO_BY_TWO
802 */
LL_DMA2D_GetOutputSwapMode(const DMA2D_TypeDef * DMA2Dx)803 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputSwapMode(const DMA2D_TypeDef *DMA2Dx)
804 {
805 return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_SB));
806 }
807
808 /**
809 * @brief Set DMA2D line offset mode.
810 * @rmtoll CR LOM LL_DMA2D_SetLineOffsetMode
811 * @param DMA2Dx DMA2D Instance
812 * @param LineOffsetMode This parameter can be one of the following values:
813 * @arg @ref LL_DMA2D_LINE_OFFSET_PIXELS
814 * @arg @ref LL_DMA2D_LINE_OFFSET_BYTES
815 * @retval None
816 */
LL_DMA2D_SetLineOffsetMode(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffsetMode)817 __STATIC_INLINE void LL_DMA2D_SetLineOffsetMode(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffsetMode)
818 {
819 MODIFY_REG(DMA2Dx->CR, DMA2D_CR_LOM, LineOffsetMode);
820 }
821
822 /**
823 * @brief Return DMA2D line offset mode.
824 * @rmtoll CR LOM LL_DMA2D_GetLineOffsetMode
825 * @param DMA2Dx DMA2D Instance
826 * @retval Returned value can be one of the following values:
827 * @arg @ref LL_DMA2D_LINE_OFFSET_PIXELS
828 * @arg @ref LL_DMA2D_LINE_OFFSET_BYTES
829 */
LL_DMA2D_GetLineOffsetMode(const DMA2D_TypeDef * DMA2Dx)830 __STATIC_INLINE uint32_t LL_DMA2D_GetLineOffsetMode(const DMA2D_TypeDef *DMA2Dx)
831 {
832 return (uint32_t)(READ_BIT(DMA2Dx->CR, DMA2D_CR_LOM));
833 }
834
835 /**
836 * @brief Set DMA2D line offset, expressed on 14 bits ([13:0] bits).
837 * @rmtoll OOR LO LL_DMA2D_SetLineOffset
838 * @param DMA2Dx DMA2D Instance
839 * @param LineOffset Value between Min_Data=0 and Max_Data=0xFFFF
840 * @retval None
841 */
LL_DMA2D_SetLineOffset(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffset)842 __STATIC_INLINE void LL_DMA2D_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
843 {
844 MODIFY_REG(DMA2Dx->OOR, DMA2D_OOR_LO, LineOffset);
845 }
846
847 /**
848 * @brief Return DMA2D line offset, expressed on 14 bits ([13:0] bits).
849 * @rmtoll OOR LO LL_DMA2D_GetLineOffset
850 * @param DMA2Dx DMA2D Instance
851 * @retval Line offset value between Min_Data=0 and Max_Data=0xFFFF
852 */
LL_DMA2D_GetLineOffset(const DMA2D_TypeDef * DMA2Dx)853 __STATIC_INLINE uint32_t LL_DMA2D_GetLineOffset(const DMA2D_TypeDef *DMA2Dx)
854 {
855 return (uint32_t)(READ_BIT(DMA2Dx->OOR, DMA2D_OOR_LO));
856 }
857
858 /**
859 * @brief Set DMA2D number of pixels per lines, expressed on 14 bits ([13:0] bits).
860 * @rmtoll NLR PL LL_DMA2D_SetNbrOfPixelsPerLines
861 * @param DMA2Dx DMA2D Instance
862 * @param NbrOfPixelsPerLines Value between Min_Data=0 and Max_Data=0x3FFF
863 * @retval None
864 */
LL_DMA2D_SetNbrOfPixelsPerLines(DMA2D_TypeDef * DMA2Dx,uint32_t NbrOfPixelsPerLines)865 __STATIC_INLINE void LL_DMA2D_SetNbrOfPixelsPerLines(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfPixelsPerLines)
866 {
867 MODIFY_REG(DMA2Dx->NLR, DMA2D_NLR_PL, (NbrOfPixelsPerLines << DMA2D_NLR_PL_Pos));
868 }
869
870 /**
871 * @brief Return DMA2D number of pixels per lines, expressed on 14 bits ([13:0] bits)
872 * @rmtoll NLR PL LL_DMA2D_GetNbrOfPixelsPerLines
873 * @param DMA2Dx DMA2D Instance
874 * @retval Number of pixels per lines value between Min_Data=0 and Max_Data=0x3FFF
875 */
LL_DMA2D_GetNbrOfPixelsPerLines(const DMA2D_TypeDef * DMA2Dx)876 __STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfPixelsPerLines(const DMA2D_TypeDef *DMA2Dx)
877 {
878 return (uint32_t)(READ_BIT(DMA2Dx->NLR, DMA2D_NLR_PL) >> DMA2D_NLR_PL_Pos);
879 }
880
881 /**
882 * @brief Set DMA2D number of lines, expressed on 16 bits ([15:0] bits).
883 * @rmtoll NLR NL LL_DMA2D_SetNbrOfLines
884 * @param DMA2Dx DMA2D Instance
885 * @param NbrOfLines Value between Min_Data=0 and Max_Data=0xFFFF
886 * @retval None
887 */
LL_DMA2D_SetNbrOfLines(DMA2D_TypeDef * DMA2Dx,uint32_t NbrOfLines)888 __STATIC_INLINE void LL_DMA2D_SetNbrOfLines(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines)
889 {
890 MODIFY_REG(DMA2Dx->NLR, DMA2D_NLR_NL, NbrOfLines);
891 }
892
893 /**
894 * @brief Return DMA2D number of lines, expressed on 16 bits ([15:0] bits).
895 * @rmtoll NLR NL LL_DMA2D_GetNbrOfLines
896 * @param DMA2Dx DMA2D Instance
897 * @retval Number of lines value between Min_Data=0 and Max_Data=0xFFFF
898 */
LL_DMA2D_GetNbrOfLines(const DMA2D_TypeDef * DMA2Dx)899 __STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfLines(const DMA2D_TypeDef *DMA2Dx)
900 {
901 return (uint32_t)(READ_BIT(DMA2Dx->NLR, DMA2D_NLR_NL));
902 }
903
904 /**
905 * @brief Set DMA2D output memory address, expressed on 32 bits ([31:0] bits).
906 * @rmtoll OMAR MA LL_DMA2D_SetOutputMemAddr
907 * @param DMA2Dx DMA2D Instance
908 * @param OutputMemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
909 * @retval None
910 */
LL_DMA2D_SetOutputMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t OutputMemoryAddress)911 __STATIC_INLINE void LL_DMA2D_SetOutputMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t OutputMemoryAddress)
912 {
913 LL_DMA2D_WriteReg(DMA2Dx, OMAR, OutputMemoryAddress);
914 }
915
916 /**
917 * @brief Get DMA2D output memory address, expressed on 32 bits ([31:0] bits).
918 * @rmtoll OMAR MA LL_DMA2D_GetOutputMemAddr
919 * @param DMA2Dx DMA2D Instance
920 * @retval Output memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
921 */
LL_DMA2D_GetOutputMemAddr(const DMA2D_TypeDef * DMA2Dx)922 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputMemAddr(const DMA2D_TypeDef *DMA2Dx)
923 {
924 return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, OMAR));
925 }
926
927 /**
928 * @brief Set DMA2D output color, expressed on 32 bits ([31:0] bits).
929 * @note Output color format depends on output color mode, ARGB8888, RGB888,
930 * RGB565, ARGB1555 or ARGB4444.
931 * @note LL_DMA2D_ConfigOutputColor() API may be used instead if colors values formatting
932 * with respect to color mode is not done by the user code.
933 * @rmtoll OCOLR BLUE LL_DMA2D_SetOutputColor\n
934 * OCOLR GREEN LL_DMA2D_SetOutputColor\n
935 * OCOLR RED LL_DMA2D_SetOutputColor\n
936 * OCOLR ALPHA LL_DMA2D_SetOutputColor
937 * @param DMA2Dx DMA2D Instance
938 * @param OutputColor Value between Min_Data=0 and Max_Data=0xFFFFFFFF
939 * @retval None
940 */
LL_DMA2D_SetOutputColor(DMA2D_TypeDef * DMA2Dx,uint32_t OutputColor)941 __STATIC_INLINE void LL_DMA2D_SetOutputColor(DMA2D_TypeDef *DMA2Dx, uint32_t OutputColor)
942 {
943 WRITE_REG(DMA2Dx->OCOLR, OutputColor);
944 }
945
946 /**
947 * @brief Get DMA2D output color, expressed on 32 bits ([31:0] bits).
948 * @note Alpha channel and red, green, blue color values must be retrieved from the returned
949 * value based on the output color mode (ARGB8888, RGB888, RGB565, ARGB1555 or ARGB4444)
950 * as set by @ref LL_DMA2D_SetOutputColorMode.
951 * @rmtoll OCOLR BLUE LL_DMA2D_GetOutputColor\n
952 * OCOLR GREEN LL_DMA2D_GetOutputColor\n
953 * OCOLR RED LL_DMA2D_GetOutputColor\n
954 * OCOLR ALPHA LL_DMA2D_GetOutputColor
955 * @param DMA2Dx DMA2D Instance
956 * @retval Output color value between Min_Data=0 and Max_Data=0xFFFFFFFF
957 */
LL_DMA2D_GetOutputColor(const DMA2D_TypeDef * DMA2Dx)958 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputColor(const DMA2D_TypeDef *DMA2Dx)
959 {
960 return (uint32_t)(READ_BIT(DMA2Dx->OCOLR, \
961 (DMA2D_OCOLR_BLUE_1 | DMA2D_OCOLR_GREEN_1 | DMA2D_OCOLR_RED_1 | DMA2D_OCOLR_ALPHA_1)));
962 }
963
964 /**
965 * @brief Set DMA2D line watermark, expressed on 16 bits ([15:0] bits).
966 * @rmtoll LWR LW LL_DMA2D_SetLineWatermark
967 * @param DMA2Dx DMA2D Instance
968 * @param LineWatermark Value between Min_Data=0 and Max_Data=0xFFFF
969 * @retval None
970 */
LL_DMA2D_SetLineWatermark(DMA2D_TypeDef * DMA2Dx,uint32_t LineWatermark)971 __STATIC_INLINE void LL_DMA2D_SetLineWatermark(DMA2D_TypeDef *DMA2Dx, uint32_t LineWatermark)
972 {
973 MODIFY_REG(DMA2Dx->LWR, DMA2D_LWR_LW, LineWatermark);
974 }
975
976 /**
977 * @brief Return DMA2D line watermark, expressed on 16 bits ([15:0] bits).
978 * @rmtoll LWR LW LL_DMA2D_GetLineWatermark
979 * @param DMA2Dx DMA2D Instance
980 * @retval Line watermark value between Min_Data=0 and Max_Data=0xFFFF
981 */
LL_DMA2D_GetLineWatermark(const DMA2D_TypeDef * DMA2Dx)982 __STATIC_INLINE uint32_t LL_DMA2D_GetLineWatermark(const DMA2D_TypeDef *DMA2Dx)
983 {
984 return (uint32_t)(READ_BIT(DMA2Dx->LWR, DMA2D_LWR_LW));
985 }
986
987 /**
988 * @brief Set DMA2D dead time, expressed on 8 bits ([7:0] bits).
989 * @rmtoll AMTCR DT LL_DMA2D_SetDeadTime
990 * @param DMA2Dx DMA2D Instance
991 * @param DeadTime Value between Min_Data=0 and Max_Data=0xFF
992 * @retval None
993 */
LL_DMA2D_SetDeadTime(DMA2D_TypeDef * DMA2Dx,uint32_t DeadTime)994 __STATIC_INLINE void LL_DMA2D_SetDeadTime(DMA2D_TypeDef *DMA2Dx, uint32_t DeadTime)
995 {
996 MODIFY_REG(DMA2Dx->AMTCR, DMA2D_AMTCR_DT, (DeadTime << DMA2D_AMTCR_DT_Pos));
997 }
998
999 /**
1000 * @brief Return DMA2D dead time, expressed on 8 bits ([7:0] bits).
1001 * @rmtoll AMTCR DT LL_DMA2D_GetDeadTime
1002 * @param DMA2Dx DMA2D Instance
1003 * @retval Dead time value between Min_Data=0 and Max_Data=0xFF
1004 */
LL_DMA2D_GetDeadTime(const DMA2D_TypeDef * DMA2Dx)1005 __STATIC_INLINE uint32_t LL_DMA2D_GetDeadTime(const DMA2D_TypeDef *DMA2Dx)
1006 {
1007 return (uint32_t)(READ_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_DT) >> DMA2D_AMTCR_DT_Pos);
1008 }
1009
1010 /**
1011 * @brief Enable DMA2D dead time functionality.
1012 * @rmtoll AMTCR EN LL_DMA2D_EnableDeadTime
1013 * @param DMA2Dx DMA2D Instance
1014 * @retval None
1015 */
LL_DMA2D_EnableDeadTime(DMA2D_TypeDef * DMA2Dx)1016 __STATIC_INLINE void LL_DMA2D_EnableDeadTime(DMA2D_TypeDef *DMA2Dx)
1017 {
1018 SET_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_EN);
1019 }
1020
1021 /**
1022 * @brief Disable DMA2D dead time functionality.
1023 * @rmtoll AMTCR EN LL_DMA2D_DisableDeadTime
1024 * @param DMA2Dx DMA2D Instance
1025 * @retval None
1026 */
LL_DMA2D_DisableDeadTime(DMA2D_TypeDef * DMA2Dx)1027 __STATIC_INLINE void LL_DMA2D_DisableDeadTime(DMA2D_TypeDef *DMA2Dx)
1028 {
1029 CLEAR_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_EN);
1030 }
1031
1032 /**
1033 * @brief Indicate if DMA2D dead time functionality is enabled.
1034 * @rmtoll AMTCR EN LL_DMA2D_IsEnabledDeadTime
1035 * @param DMA2Dx DMA2D Instance
1036 * @retval State of bit (1 or 0).
1037 */
LL_DMA2D_IsEnabledDeadTime(const DMA2D_TypeDef * DMA2Dx)1038 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledDeadTime(const DMA2D_TypeDef *DMA2Dx)
1039 {
1040 return ((READ_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_EN) == (DMA2D_AMTCR_EN)) ? 1UL : 0UL);
1041 }
1042
1043 /** @defgroup DMA2D_LL_EF_FGND_Configuration Foreground Configuration Functions
1044 * @{
1045 */
1046
1047 /**
1048 * @brief Set DMA2D foreground memory address, expressed on 32 bits ([31:0] bits).
1049 * @rmtoll FGMAR MA LL_DMA2D_FGND_SetMemAddr
1050 * @param DMA2Dx DMA2D Instance
1051 * @param MemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1052 * @retval None
1053 */
LL_DMA2D_FGND_SetMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t MemoryAddress)1054 __STATIC_INLINE void LL_DMA2D_FGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t MemoryAddress)
1055 {
1056 LL_DMA2D_WriteReg(DMA2Dx, FGMAR, MemoryAddress);
1057 }
1058
1059 /**
1060 * @brief Get DMA2D foreground memory address, expressed on 32 bits ([31:0] bits).
1061 * @rmtoll FGMAR MA LL_DMA2D_FGND_GetMemAddr
1062 * @param DMA2Dx DMA2D Instance
1063 * @retval Foreground memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1064 */
LL_DMA2D_FGND_GetMemAddr(const DMA2D_TypeDef * DMA2Dx)1065 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetMemAddr(const DMA2D_TypeDef *DMA2Dx)
1066 {
1067 return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, FGMAR));
1068 }
1069
1070 /**
1071 * @brief Enable DMA2D foreground CLUT loading.
1072 * @rmtoll FGPFCCR START LL_DMA2D_FGND_EnableCLUTLoad
1073 * @param DMA2Dx DMA2D Instance
1074 * @retval None
1075 */
LL_DMA2D_FGND_EnableCLUTLoad(DMA2D_TypeDef * DMA2Dx)1076 __STATIC_INLINE void LL_DMA2D_FGND_EnableCLUTLoad(DMA2D_TypeDef *DMA2Dx)
1077 {
1078 SET_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_START);
1079 }
1080
1081 /**
1082 * @brief Indicate if DMA2D foreground CLUT loading is enabled.
1083 * @rmtoll FGPFCCR START LL_DMA2D_FGND_IsEnabledCLUTLoad
1084 * @param DMA2Dx DMA2D Instance
1085 * @retval State of bit (1 or 0).
1086 */
LL_DMA2D_FGND_IsEnabledCLUTLoad(const DMA2D_TypeDef * DMA2Dx)1087 __STATIC_INLINE uint32_t LL_DMA2D_FGND_IsEnabledCLUTLoad(const DMA2D_TypeDef *DMA2Dx)
1088 {
1089 return ((READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_START) == (DMA2D_FGPFCCR_START)) ? 1UL : 0UL);
1090 }
1091
1092 /**
1093 * @brief Set DMA2D foreground color mode.
1094 * @rmtoll FGPFCCR CM LL_DMA2D_FGND_SetColorMode
1095 * @param DMA2Dx DMA2D Instance
1096 * @param ColorMode This parameter can be one of the following values:
1097 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1098 * @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1099 * @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1100 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1101 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1102 * @arg @ref LL_DMA2D_INPUT_MODE_L8
1103 * @arg @ref LL_DMA2D_INPUT_MODE_AL44
1104 * @arg @ref LL_DMA2D_INPUT_MODE_AL88
1105 * @arg @ref LL_DMA2D_INPUT_MODE_L4
1106 * @arg @ref LL_DMA2D_INPUT_MODE_A8
1107 * @arg @ref LL_DMA2D_INPUT_MODE_A4
1108 * @retval None
1109 */
LL_DMA2D_FGND_SetColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t ColorMode)1110 __STATIC_INLINE void LL_DMA2D_FGND_SetColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
1111 {
1112 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CM, ColorMode);
1113 }
1114
1115 /**
1116 * @brief Return DMA2D foreground color mode.
1117 * @rmtoll FGPFCCR CM LL_DMA2D_FGND_GetColorMode
1118 * @param DMA2Dx DMA2D Instance
1119 * @retval Returned value can be one of the following values:
1120 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1121 * @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1122 * @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1123 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1124 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1125 * @arg @ref LL_DMA2D_INPUT_MODE_L8
1126 * @arg @ref LL_DMA2D_INPUT_MODE_AL44
1127 * @arg @ref LL_DMA2D_INPUT_MODE_AL88
1128 * @arg @ref LL_DMA2D_INPUT_MODE_L4
1129 * @arg @ref LL_DMA2D_INPUT_MODE_A8
1130 * @arg @ref LL_DMA2D_INPUT_MODE_A4
1131 */
LL_DMA2D_FGND_GetColorMode(const DMA2D_TypeDef * DMA2Dx)1132 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetColorMode(const DMA2D_TypeDef *DMA2Dx)
1133 {
1134 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CM));
1135 }
1136
1137 /**
1138 * @brief Set DMA2D foreground alpha mode.
1139 * @rmtoll FGPFCCR AM LL_DMA2D_FGND_SetAlphaMode
1140 * @param DMA2Dx DMA2D Instance
1141 * @param AphaMode This parameter can be one of the following values:
1142 * @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1143 * @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1144 * @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1145 * @retval None
1146 */
LL_DMA2D_FGND_SetAlphaMode(DMA2D_TypeDef * DMA2Dx,uint32_t AphaMode)1147 __STATIC_INLINE void LL_DMA2D_FGND_SetAlphaMode(DMA2D_TypeDef *DMA2Dx, uint32_t AphaMode)
1148 {
1149 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AM, AphaMode);
1150 }
1151
1152 /**
1153 * @brief Return DMA2D foreground alpha mode.
1154 * @rmtoll FGPFCCR AM LL_DMA2D_FGND_GetAlphaMode
1155 * @param DMA2Dx DMA2D Instance
1156 * @retval Returned value can be one of the following values:
1157 * @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1158 * @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1159 * @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1160 */
LL_DMA2D_FGND_GetAlphaMode(const DMA2D_TypeDef * DMA2Dx)1161 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaMode(const DMA2D_TypeDef *DMA2Dx)
1162 {
1163 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AM));
1164 }
1165
1166 /**
1167 * @brief Set DMA2D foreground alpha value, expressed on 8 bits ([7:0] bits).
1168 * @rmtoll FGPFCCR ALPHA LL_DMA2D_FGND_SetAlpha
1169 * @param DMA2Dx DMA2D Instance
1170 * @param Alpha Value between Min_Data=0 and Max_Data=0xFF
1171 * @retval None
1172 */
LL_DMA2D_FGND_SetAlpha(DMA2D_TypeDef * DMA2Dx,uint32_t Alpha)1173 __STATIC_INLINE void LL_DMA2D_FGND_SetAlpha(DMA2D_TypeDef *DMA2Dx, uint32_t Alpha)
1174 {
1175 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_ALPHA, (Alpha << DMA2D_FGPFCCR_ALPHA_Pos));
1176 }
1177
1178 /**
1179 * @brief Return DMA2D foreground alpha value, expressed on 8 bits ([7:0] bits).
1180 * @rmtoll FGPFCCR ALPHA LL_DMA2D_FGND_GetAlpha
1181 * @param DMA2Dx DMA2D Instance
1182 * @retval Alpha value between Min_Data=0 and Max_Data=0xFF
1183 */
LL_DMA2D_FGND_GetAlpha(const DMA2D_TypeDef * DMA2Dx)1184 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlpha(const DMA2D_TypeDef *DMA2Dx)
1185 {
1186 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_ALPHA) >> DMA2D_FGPFCCR_ALPHA_Pos);
1187 }
1188
1189 /**
1190 * @brief Set DMA2D foreground Red Blue swap mode.
1191 * @rmtoll FGPFCCR RBS LL_DMA2D_FGND_SetRBSwapMode
1192 * @param DMA2Dx DMA2D Instance
1193 * @param RBSwapMode This parameter can be one of the following values:
1194 * @arg @ref LL_DMA2D_RB_MODE_REGULAR
1195 * @arg @ref LL_DMA2D_RB_MODE_SWAP
1196 * @retval None
1197 */
LL_DMA2D_FGND_SetRBSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t RBSwapMode)1198 __STATIC_INLINE void LL_DMA2D_FGND_SetRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t RBSwapMode)
1199 {
1200 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_RBS, RBSwapMode);
1201 }
1202
1203 /**
1204 * @brief Return DMA2D foreground Red Blue swap mode.
1205 * @rmtoll FGPFCCR RBS LL_DMA2D_FGND_GetRBSwapMode
1206 * @param DMA2Dx DMA2D Instance
1207 * @retval Returned value can be one of the following values:
1208 * @arg @ref LL_DMA2D_RB_MODE_REGULAR
1209 * @arg @ref LL_DMA2D_RB_MODE_SWAP
1210 */
LL_DMA2D_FGND_GetRBSwapMode(const DMA2D_TypeDef * DMA2Dx)1211 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRBSwapMode(const DMA2D_TypeDef *DMA2Dx)
1212 {
1213 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_RBS));
1214 }
1215
1216 /**
1217 * @brief Set DMA2D foreground alpha inversion mode.
1218 * @rmtoll FGPFCCR AI LL_DMA2D_FGND_SetAlphaInvMode
1219 * @param DMA2Dx DMA2D Instance
1220 * @param AlphaInversionMode This parameter can be one of the following values:
1221 * @arg @ref LL_DMA2D_ALPHA_REGULAR
1222 * @arg @ref LL_DMA2D_ALPHA_INVERTED
1223 * @retval None
1224 */
LL_DMA2D_FGND_SetAlphaInvMode(DMA2D_TypeDef * DMA2Dx,uint32_t AlphaInversionMode)1225 __STATIC_INLINE void LL_DMA2D_FGND_SetAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32_t AlphaInversionMode)
1226 {
1227 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AI, AlphaInversionMode);
1228 }
1229
1230 /**
1231 * @brief Return DMA2D foreground alpha inversion mode.
1232 * @rmtoll FGPFCCR AI LL_DMA2D_FGND_GetAlphaInvMode
1233 * @param DMA2Dx DMA2D Instance
1234 * @retval Returned value can be one of the following values:
1235 * @arg @ref LL_DMA2D_ALPHA_REGULAR
1236 * @arg @ref LL_DMA2D_ALPHA_INVERTED
1237 */
LL_DMA2D_FGND_GetAlphaInvMode(const DMA2D_TypeDef * DMA2Dx)1238 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaInvMode(const DMA2D_TypeDef *DMA2Dx)
1239 {
1240 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AI));
1241 }
1242
1243 /**
1244 * @brief Set DMA2D foreground line offset, expressed on 14 bits ([13:0] bits).
1245 * @rmtoll FGOR LO LL_DMA2D_FGND_SetLineOffset
1246 * @param DMA2Dx DMA2D Instance
1247 * @param LineOffset Value between Min_Data=0 and Max_Data=0x3FF
1248 * @retval None
1249 */
LL_DMA2D_FGND_SetLineOffset(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffset)1250 __STATIC_INLINE void LL_DMA2D_FGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
1251 {
1252 MODIFY_REG(DMA2Dx->FGOR, DMA2D_FGOR_LO, LineOffset);
1253 }
1254
1255 /**
1256 * @brief Return DMA2D foreground line offset, expressed on 14 bits ([13:0] bits).
1257 * @rmtoll FGOR LO LL_DMA2D_FGND_GetLineOffset
1258 * @param DMA2Dx DMA2D Instance
1259 * @retval Foreground line offset value between Min_Data=0 and Max_Data=0x3FF
1260 */
LL_DMA2D_FGND_GetLineOffset(const DMA2D_TypeDef * DMA2Dx)1261 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetLineOffset(const DMA2D_TypeDef *DMA2Dx)
1262 {
1263 return (uint32_t)(READ_BIT(DMA2Dx->FGOR, DMA2D_FGOR_LO));
1264 }
1265
1266 /**
1267 * @brief Set DMA2D foreground color values, expressed on 24 bits ([23:0] bits).
1268 * @rmtoll FGCOLR RED LL_DMA2D_FGND_SetColor
1269 * @rmtoll FGCOLR GREEN LL_DMA2D_FGND_SetColor
1270 * @rmtoll FGCOLR BLUE LL_DMA2D_FGND_SetColor
1271 * @param DMA2Dx DMA2D Instance
1272 * @param Red Value between Min_Data=0 and Max_Data=0xFF
1273 * @param Green Value between Min_Data=0 and Max_Data=0xFF
1274 * @param Blue Value between Min_Data=0 and Max_Data=0xFF
1275 * @retval None
1276 */
LL_DMA2D_FGND_SetColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red,uint32_t Green,uint32_t Blue)1277 __STATIC_INLINE void LL_DMA2D_FGND_SetColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red, uint32_t Green, uint32_t Blue)
1278 {
1279 MODIFY_REG(DMA2Dx->FGCOLR, (DMA2D_FGCOLR_RED | DMA2D_FGCOLR_GREEN | DMA2D_FGCOLR_BLUE), \
1280 ((Red << DMA2D_FGCOLR_RED_Pos) | (Green << DMA2D_FGCOLR_GREEN_Pos) | Blue));
1281 }
1282
1283 /**
1284 * @brief Set DMA2D foreground red color value, expressed on 8 bits ([7:0] bits).
1285 * @rmtoll FGCOLR RED LL_DMA2D_FGND_SetRedColor
1286 * @param DMA2Dx DMA2D Instance
1287 * @param Red Value between Min_Data=0 and Max_Data=0xFF
1288 * @retval None
1289 */
LL_DMA2D_FGND_SetRedColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red)1290 __STATIC_INLINE void LL_DMA2D_FGND_SetRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red)
1291 {
1292 MODIFY_REG(DMA2Dx->FGCOLR, DMA2D_FGCOLR_RED, (Red << DMA2D_FGCOLR_RED_Pos));
1293 }
1294
1295 /**
1296 * @brief Return DMA2D foreground red color value, expressed on 8 bits ([7:0] bits).
1297 * @rmtoll FGCOLR RED LL_DMA2D_FGND_GetRedColor
1298 * @param DMA2Dx DMA2D Instance
1299 * @retval Red color value between Min_Data=0 and Max_Data=0xFF
1300 */
LL_DMA2D_FGND_GetRedColor(const DMA2D_TypeDef * DMA2Dx)1301 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRedColor(const DMA2D_TypeDef *DMA2Dx)
1302 {
1303 return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_RED) >> DMA2D_FGCOLR_RED_Pos);
1304 }
1305
1306 /**
1307 * @brief Set DMA2D foreground green color value, expressed on 8 bits ([7:0] bits).
1308 * @rmtoll FGCOLR GREEN LL_DMA2D_FGND_SetGreenColor
1309 * @param DMA2Dx DMA2D Instance
1310 * @param Green Value between Min_Data=0 and Max_Data=0xFF
1311 * @retval None
1312 */
LL_DMA2D_FGND_SetGreenColor(DMA2D_TypeDef * DMA2Dx,uint32_t Green)1313 __STATIC_INLINE void LL_DMA2D_FGND_SetGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t Green)
1314 {
1315 MODIFY_REG(DMA2Dx->FGCOLR, DMA2D_FGCOLR_GREEN, (Green << DMA2D_FGCOLR_GREEN_Pos));
1316 }
1317
1318 /**
1319 * @brief Return DMA2D foreground green color value, expressed on 8 bits ([7:0] bits).
1320 * @rmtoll FGCOLR GREEN LL_DMA2D_FGND_GetGreenColor
1321 * @param DMA2Dx DMA2D Instance
1322 * @retval Green color value between Min_Data=0 and Max_Data=0xFF
1323 */
LL_DMA2D_FGND_GetGreenColor(const DMA2D_TypeDef * DMA2Dx)1324 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetGreenColor(const DMA2D_TypeDef *DMA2Dx)
1325 {
1326 return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_GREEN) >> DMA2D_FGCOLR_GREEN_Pos);
1327 }
1328
1329 /**
1330 * @brief Set DMA2D foreground blue color value, expressed on 8 bits ([7:0] bits).
1331 * @rmtoll FGCOLR BLUE LL_DMA2D_FGND_SetBlueColor
1332 * @param DMA2Dx DMA2D Instance
1333 * @param Blue Value between Min_Data=0 and Max_Data=0xFF
1334 * @retval None
1335 */
LL_DMA2D_FGND_SetBlueColor(DMA2D_TypeDef * DMA2Dx,uint32_t Blue)1336 __STATIC_INLINE void LL_DMA2D_FGND_SetBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t Blue)
1337 {
1338 MODIFY_REG(DMA2Dx->FGCOLR, DMA2D_FGCOLR_BLUE, Blue);
1339 }
1340
1341 /**
1342 * @brief Return DMA2D foreground blue color value, expressed on 8 bits ([7:0] bits).
1343 * @rmtoll FGCOLR BLUE LL_DMA2D_FGND_GetBlueColor
1344 * @param DMA2Dx DMA2D Instance
1345 * @retval Blue color value between Min_Data=0 and Max_Data=0xFF
1346 */
LL_DMA2D_FGND_GetBlueColor(const DMA2D_TypeDef * DMA2Dx)1347 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetBlueColor(const DMA2D_TypeDef *DMA2Dx)
1348 {
1349 return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_BLUE));
1350 }
1351
1352 /**
1353 * @brief Set DMA2D foreground CLUT memory address, expressed on 32 bits ([31:0] bits).
1354 * @rmtoll FGCMAR MA LL_DMA2D_FGND_SetCLUTMemAddr
1355 * @param DMA2Dx DMA2D Instance
1356 * @param CLUTMemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1357 * @retval None
1358 */
LL_DMA2D_FGND_SetCLUTMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTMemoryAddress)1359 __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTMemoryAddress)
1360 {
1361 LL_DMA2D_WriteReg(DMA2Dx, FGCMAR, CLUTMemoryAddress);
1362 }
1363
1364 /**
1365 * @brief Get DMA2D foreground CLUT memory address, expressed on 32 bits ([31:0] bits).
1366 * @rmtoll FGCMAR MA LL_DMA2D_FGND_GetCLUTMemAddr
1367 * @param DMA2Dx DMA2D Instance
1368 * @retval Foreground CLUT memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1369 */
LL_DMA2D_FGND_GetCLUTMemAddr(const DMA2D_TypeDef * DMA2Dx)1370 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTMemAddr(const DMA2D_TypeDef *DMA2Dx)
1371 {
1372 return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, FGCMAR));
1373 }
1374
1375 /**
1376 * @brief Set DMA2D foreground CLUT size, expressed on 8 bits ([7:0] bits).
1377 * @rmtoll FGPFCCR CS LL_DMA2D_FGND_SetCLUTSize
1378 * @param DMA2Dx DMA2D Instance
1379 * @param CLUTSize Value between Min_Data=0 and Max_Data=0xFF
1380 * @retval None
1381 */
LL_DMA2D_FGND_SetCLUTSize(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTSize)1382 __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTSize(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTSize)
1383 {
1384 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CS, (CLUTSize << DMA2D_FGPFCCR_CS_Pos));
1385 }
1386
1387 /**
1388 * @brief Get DMA2D foreground CLUT size, expressed on 8 bits ([7:0] bits).
1389 * @rmtoll FGPFCCR CS LL_DMA2D_FGND_GetCLUTSize
1390 * @param DMA2Dx DMA2D Instance
1391 * @retval Foreground CLUT size value between Min_Data=0 and Max_Data=0xFF
1392 */
LL_DMA2D_FGND_GetCLUTSize(const DMA2D_TypeDef * DMA2Dx)1393 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTSize(const DMA2D_TypeDef *DMA2Dx)
1394 {
1395 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CS) >> DMA2D_FGPFCCR_CS_Pos);
1396 }
1397
1398 /**
1399 * @brief Set DMA2D foreground CLUT color mode.
1400 * @rmtoll FGPFCCR CCM LL_DMA2D_FGND_SetCLUTColorMode
1401 * @param DMA2Dx DMA2D Instance
1402 * @param CLUTColorMode This parameter can be one of the following values:
1403 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1404 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1405 * @retval None
1406 */
LL_DMA2D_FGND_SetCLUTColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTColorMode)1407 __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTColorMode)
1408 {
1409 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CCM, CLUTColorMode);
1410 }
1411
1412 /**
1413 * @brief Return DMA2D foreground CLUT color mode.
1414 * @rmtoll FGPFCCR CCM LL_DMA2D_FGND_GetCLUTColorMode
1415 * @param DMA2Dx DMA2D Instance
1416 * @retval Returned value can be one of the following values:
1417 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1418 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1419 */
LL_DMA2D_FGND_GetCLUTColorMode(const DMA2D_TypeDef * DMA2Dx)1420 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTColorMode(const DMA2D_TypeDef *DMA2Dx)
1421 {
1422 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CCM));
1423 }
1424
1425 #if defined(DMA2D_FGPFCCR_CSS)
1426 /**
1427 * @brief Set DMA2D foreground Chroma Sub Sampling (for YCbCr input color mode).
1428 * @rmtoll FGPFCCR CSS LL_DMA2D_FGND_SetChrSubSampling
1429 * @param DMA2Dx DMA2D Instance
1430 * @param ChromaSubSampling This parameter can be one of the following values:
1431 * @arg @ref LL_DMA2D_CSS_444
1432 * @arg @ref LL_DMA2D_CSS_422
1433 * @arg @ref LL_DMA2D_CSS_420
1434 * @retval None
1435 */
LL_DMA2D_FGND_SetChrSubSampling(DMA2D_TypeDef * DMA2Dx,uint32_t ChromaSubSampling)1436 __STATIC_INLINE void LL_DMA2D_FGND_SetChrSubSampling(DMA2D_TypeDef *DMA2Dx, uint32_t ChromaSubSampling)
1437 {
1438 MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CSS, ChromaSubSampling);
1439 }
1440
1441 /**
1442 * @brief Return DMA2D foreground Chroma Sub Sampling (for YCbCr input color mode).
1443 * @rmtoll FGPFCCR CSS LL_DMA2D_FGND_GetChrSubSampling
1444 * @param DMA2Dx DMA2D Instance
1445 * @retval Returned value can be one of the following values:
1446 * @arg @ref LL_DMA2D_CSS_444
1447 * @arg @ref LL_DMA2D_CSS_422
1448 * @arg @ref LL_DMA2D_CSS_420
1449 */
LL_DMA2D_FGND_GetChrSubSampling(const DMA2D_TypeDef * DMA2Dx)1450 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetChrSubSampling(const DMA2D_TypeDef *DMA2Dx)
1451 {
1452 return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CSS));
1453 }
1454 #endif /* DMA2D_FGPFCCR_CSS */
1455 /**
1456 * @}
1457 */
1458
1459 /** @defgroup DMA2D_LL_EF_BGND_Configuration Background Configuration Functions
1460 * @{
1461 */
1462
1463 /**
1464 * @brief Set DMA2D background memory address, expressed on 32 bits ([31:0] bits).
1465 * @rmtoll BGMAR MA LL_DMA2D_BGND_SetMemAddr
1466 * @param DMA2Dx DMA2D Instance
1467 * @param MemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1468 * @retval None
1469 */
LL_DMA2D_BGND_SetMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t MemoryAddress)1470 __STATIC_INLINE void LL_DMA2D_BGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t MemoryAddress)
1471 {
1472 LL_DMA2D_WriteReg(DMA2Dx, BGMAR, MemoryAddress);
1473 }
1474
1475 /**
1476 * @brief Get DMA2D background memory address, expressed on 32 bits ([31:0] bits).
1477 * @rmtoll BGMAR MA LL_DMA2D_BGND_GetMemAddr
1478 * @param DMA2Dx DMA2D Instance
1479 * @retval Background memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1480 */
LL_DMA2D_BGND_GetMemAddr(const DMA2D_TypeDef * DMA2Dx)1481 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetMemAddr(const DMA2D_TypeDef *DMA2Dx)
1482 {
1483 return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, BGMAR));
1484 }
1485
1486 /**
1487 * @brief Enable DMA2D background CLUT loading.
1488 * @rmtoll BGPFCCR START LL_DMA2D_BGND_EnableCLUTLoad
1489 * @param DMA2Dx DMA2D Instance
1490 * @retval None
1491 */
LL_DMA2D_BGND_EnableCLUTLoad(DMA2D_TypeDef * DMA2Dx)1492 __STATIC_INLINE void LL_DMA2D_BGND_EnableCLUTLoad(DMA2D_TypeDef *DMA2Dx)
1493 {
1494 SET_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_START);
1495 }
1496
1497 /**
1498 * @brief Indicate if DMA2D background CLUT loading is enabled.
1499 * @rmtoll BGPFCCR START LL_DMA2D_BGND_IsEnabledCLUTLoad
1500 * @param DMA2Dx DMA2D Instance
1501 * @retval State of bit (1 or 0).
1502 */
LL_DMA2D_BGND_IsEnabledCLUTLoad(const DMA2D_TypeDef * DMA2Dx)1503 __STATIC_INLINE uint32_t LL_DMA2D_BGND_IsEnabledCLUTLoad(const DMA2D_TypeDef *DMA2Dx)
1504 {
1505 return ((READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_START) == (DMA2D_BGPFCCR_START)) ? 1UL : 0UL);
1506 }
1507
1508 /**
1509 * @brief Set DMA2D background color mode.
1510 * @rmtoll BGPFCCR CM LL_DMA2D_BGND_SetColorMode
1511 * @param DMA2Dx DMA2D Instance
1512 * @param ColorMode This parameter can be one of the following values:
1513 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1514 * @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1515 * @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1516 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1517 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1518 * @arg @ref LL_DMA2D_INPUT_MODE_L8
1519 * @arg @ref LL_DMA2D_INPUT_MODE_AL44
1520 * @arg @ref LL_DMA2D_INPUT_MODE_AL88
1521 * @arg @ref LL_DMA2D_INPUT_MODE_L4
1522 * @arg @ref LL_DMA2D_INPUT_MODE_A8
1523 * @arg @ref LL_DMA2D_INPUT_MODE_A4
1524 * @retval None
1525 */
LL_DMA2D_BGND_SetColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t ColorMode)1526 __STATIC_INLINE void LL_DMA2D_BGND_SetColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
1527 {
1528 MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CM, ColorMode);
1529 }
1530
1531 /**
1532 * @brief Return DMA2D background color mode.
1533 * @rmtoll BGPFCCR CM LL_DMA2D_BGND_GetColorMode
1534 * @param DMA2Dx DMA2D Instance
1535 * @retval Returned value can be one of the following values:
1536 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1537 * @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1538 * @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1539 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1540 * @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1541 * @arg @ref LL_DMA2D_INPUT_MODE_L8
1542 * @arg @ref LL_DMA2D_INPUT_MODE_AL44
1543 * @arg @ref LL_DMA2D_INPUT_MODE_AL88
1544 * @arg @ref LL_DMA2D_INPUT_MODE_L4
1545 * @arg @ref LL_DMA2D_INPUT_MODE_A8
1546 * @arg @ref LL_DMA2D_INPUT_MODE_A4
1547 */
LL_DMA2D_BGND_GetColorMode(const DMA2D_TypeDef * DMA2Dx)1548 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetColorMode(const DMA2D_TypeDef *DMA2Dx)
1549 {
1550 return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CM));
1551 }
1552
1553 /**
1554 * @brief Set DMA2D background alpha mode.
1555 * @rmtoll BGPFCCR AM LL_DMA2D_BGND_SetAlphaMode
1556 * @param DMA2Dx DMA2D Instance
1557 * @param AphaMode This parameter can be one of the following values:
1558 * @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1559 * @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1560 * @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1561 * @retval None
1562 */
LL_DMA2D_BGND_SetAlphaMode(DMA2D_TypeDef * DMA2Dx,uint32_t AphaMode)1563 __STATIC_INLINE void LL_DMA2D_BGND_SetAlphaMode(DMA2D_TypeDef *DMA2Dx, uint32_t AphaMode)
1564 {
1565 MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AM, AphaMode);
1566 }
1567
1568 /**
1569 * @brief Return DMA2D background alpha mode.
1570 * @rmtoll BGPFCCR AM LL_DMA2D_BGND_GetAlphaMode
1571 * @param DMA2Dx DMA2D Instance
1572 * @retval Returned value can be one of the following values:
1573 * @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1574 * @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1575 * @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1576 */
LL_DMA2D_BGND_GetAlphaMode(const DMA2D_TypeDef * DMA2Dx)1577 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlphaMode(const DMA2D_TypeDef *DMA2Dx)
1578 {
1579 return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AM));
1580 }
1581
1582 /**
1583 * @brief Set DMA2D background alpha value, expressed on 8 bits ([7:0] bits).
1584 * @rmtoll BGPFCCR ALPHA LL_DMA2D_BGND_SetAlpha
1585 * @param DMA2Dx DMA2D Instance
1586 * @param Alpha Value between Min_Data=0 and Max_Data=0xFF
1587 * @retval None
1588 */
LL_DMA2D_BGND_SetAlpha(DMA2D_TypeDef * DMA2Dx,uint32_t Alpha)1589 __STATIC_INLINE void LL_DMA2D_BGND_SetAlpha(DMA2D_TypeDef *DMA2Dx, uint32_t Alpha)
1590 {
1591 MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_ALPHA, (Alpha << DMA2D_BGPFCCR_ALPHA_Pos));
1592 }
1593
1594 /**
1595 * @brief Return DMA2D background alpha value, expressed on 8 bits ([7:0] bits).
1596 * @rmtoll BGPFCCR ALPHA LL_DMA2D_BGND_GetAlpha
1597 * @param DMA2Dx DMA2D Instance
1598 * @retval Alpha value between Min_Data=0 and Max_Data=0xFF
1599 */
LL_DMA2D_BGND_GetAlpha(const DMA2D_TypeDef * DMA2Dx)1600 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlpha(const DMA2D_TypeDef *DMA2Dx)
1601 {
1602 return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_ALPHA) >> DMA2D_BGPFCCR_ALPHA_Pos);
1603 }
1604
1605 /**
1606 * @brief Set DMA2D background Red Blue swap mode.
1607 * @rmtoll BGPFCCR RBS LL_DMA2D_BGND_SetRBSwapMode
1608 * @param DMA2Dx DMA2D Instance
1609 * @param RBSwapMode This parameter can be one of the following values:
1610 * @arg @ref LL_DMA2D_RB_MODE_REGULAR
1611 * @arg @ref LL_DMA2D_RB_MODE_SWAP
1612 * @retval None
1613 */
LL_DMA2D_BGND_SetRBSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t RBSwapMode)1614 __STATIC_INLINE void LL_DMA2D_BGND_SetRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t RBSwapMode)
1615 {
1616 MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_RBS, RBSwapMode);
1617 }
1618
1619 /**
1620 * @brief Return DMA2D background Red Blue swap mode.
1621 * @rmtoll BGPFCCR RBS LL_DMA2D_BGND_GetRBSwapMode
1622 * @param DMA2Dx DMA2D Instance
1623 * @retval Returned value can be one of the following values:
1624 * @arg @ref LL_DMA2D_RB_MODE_REGULAR
1625 * @arg @ref LL_DMA2D_RB_MODE_SWAP
1626 */
LL_DMA2D_BGND_GetRBSwapMode(const DMA2D_TypeDef * DMA2Dx)1627 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetRBSwapMode(const DMA2D_TypeDef *DMA2Dx)
1628 {
1629 return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_RBS));
1630 }
1631
1632 /**
1633 * @brief Set DMA2D background alpha inversion mode.
1634 * @rmtoll BGPFCCR AI LL_DMA2D_BGND_SetAlphaInvMode
1635 * @param DMA2Dx DMA2D Instance
1636 * @param AlphaInversionMode This parameter can be one of the following values:
1637 * @arg @ref LL_DMA2D_ALPHA_REGULAR
1638 * @arg @ref LL_DMA2D_ALPHA_INVERTED
1639 * @retval None
1640 */
LL_DMA2D_BGND_SetAlphaInvMode(DMA2D_TypeDef * DMA2Dx,uint32_t AlphaInversionMode)1641 __STATIC_INLINE void LL_DMA2D_BGND_SetAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32_t AlphaInversionMode)
1642 {
1643 MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AI, AlphaInversionMode);
1644 }
1645
1646 /**
1647 * @brief Return DMA2D background alpha inversion mode.
1648 * @rmtoll BGPFCCR AI LL_DMA2D_BGND_GetAlphaInvMode
1649 * @param DMA2Dx DMA2D Instance
1650 * @retval Returned value can be one of the following values:
1651 * @arg @ref LL_DMA2D_ALPHA_REGULAR
1652 * @arg @ref LL_DMA2D_ALPHA_INVERTED
1653 */
LL_DMA2D_BGND_GetAlphaInvMode(const DMA2D_TypeDef * DMA2Dx)1654 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlphaInvMode(const DMA2D_TypeDef *DMA2Dx)
1655 {
1656 return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AI));
1657 }
1658
1659 /**
1660 * @brief Set DMA2D background line offset, expressed on 14 bits ([13:0] bits).
1661 * @rmtoll BGOR LO LL_DMA2D_BGND_SetLineOffset
1662 * @param DMA2Dx DMA2D Instance
1663 * @param LineOffset Value between Min_Data=0 and Max_Data=0x3FF
1664 * @retval None
1665 */
LL_DMA2D_BGND_SetLineOffset(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffset)1666 __STATIC_INLINE void LL_DMA2D_BGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
1667 {
1668 MODIFY_REG(DMA2Dx->BGOR, DMA2D_BGOR_LO, LineOffset);
1669 }
1670
1671 /**
1672 * @brief Return DMA2D background line offset, expressed on 14 bits ([13:0] bits).
1673 * @rmtoll BGOR LO LL_DMA2D_BGND_GetLineOffset
1674 * @param DMA2Dx DMA2D Instance
1675 * @retval Background line offset value between Min_Data=0 and Max_Data=0x3FF
1676 */
LL_DMA2D_BGND_GetLineOffset(const DMA2D_TypeDef * DMA2Dx)1677 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetLineOffset(const DMA2D_TypeDef *DMA2Dx)
1678 {
1679 return (uint32_t)(READ_BIT(DMA2Dx->BGOR, DMA2D_BGOR_LO));
1680 }
1681
1682 /**
1683 * @brief Set DMA2D background color values, expressed on 24 bits ([23:0] bits).
1684 * @rmtoll BGCOLR RED LL_DMA2D_BGND_SetColor
1685 * @rmtoll BGCOLR GREEN LL_DMA2D_BGND_SetColor
1686 * @rmtoll BGCOLR BLUE LL_DMA2D_BGND_SetColor
1687 * @param DMA2Dx DMA2D Instance
1688 * @param Red Value between Min_Data=0 and Max_Data=0xFF
1689 * @param Green Value between Min_Data=0 and Max_Data=0xFF
1690 * @param Blue Value between Min_Data=0 and Max_Data=0xFF
1691 * @retval None
1692 */
LL_DMA2D_BGND_SetColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red,uint32_t Green,uint32_t Blue)1693 __STATIC_INLINE void LL_DMA2D_BGND_SetColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red, uint32_t Green, uint32_t Blue)
1694 {
1695 MODIFY_REG(DMA2Dx->BGCOLR, (DMA2D_BGCOLR_RED | DMA2D_BGCOLR_GREEN | DMA2D_BGCOLR_BLUE), \
1696 ((Red << DMA2D_BGCOLR_RED_Pos) | (Green << DMA2D_BGCOLR_GREEN_Pos) | Blue));
1697 }
1698
1699 /**
1700 * @brief Set DMA2D background red color value, expressed on 8 bits ([7:0] bits).
1701 * @rmtoll BGCOLR RED LL_DMA2D_BGND_SetRedColor
1702 * @param DMA2Dx DMA2D Instance
1703 * @param Red Value between Min_Data=0 and Max_Data=0xFF
1704 * @retval None
1705 */
LL_DMA2D_BGND_SetRedColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red)1706 __STATIC_INLINE void LL_DMA2D_BGND_SetRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red)
1707 {
1708 MODIFY_REG(DMA2Dx->BGCOLR, DMA2D_BGCOLR_RED, (Red << DMA2D_BGCOLR_RED_Pos));
1709 }
1710
1711 /**
1712 * @brief Return DMA2D background red color value, expressed on 8 bits ([7:0] bits).
1713 * @rmtoll BGCOLR RED LL_DMA2D_BGND_GetRedColor
1714 * @param DMA2Dx DMA2D Instance
1715 * @retval Red color value between Min_Data=0 and Max_Data=0xFF
1716 */
LL_DMA2D_BGND_GetRedColor(const DMA2D_TypeDef * DMA2Dx)1717 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetRedColor(const DMA2D_TypeDef *DMA2Dx)
1718 {
1719 return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_RED) >> DMA2D_BGCOLR_RED_Pos);
1720 }
1721
1722 /**
1723 * @brief Set DMA2D background green color value, expressed on 8 bits ([7:0] bits).
1724 * @rmtoll BGCOLR GREEN LL_DMA2D_BGND_SetGreenColor
1725 * @param DMA2Dx DMA2D Instance
1726 * @param Green Value between Min_Data=0 and Max_Data=0xFF
1727 * @retval None
1728 */
LL_DMA2D_BGND_SetGreenColor(DMA2D_TypeDef * DMA2Dx,uint32_t Green)1729 __STATIC_INLINE void LL_DMA2D_BGND_SetGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t Green)
1730 {
1731 MODIFY_REG(DMA2Dx->BGCOLR, DMA2D_BGCOLR_GREEN, (Green << DMA2D_BGCOLR_GREEN_Pos));
1732 }
1733
1734 /**
1735 * @brief Return DMA2D background green color value, expressed on 8 bits ([7:0] bits).
1736 * @rmtoll BGCOLR GREEN LL_DMA2D_BGND_GetGreenColor
1737 * @param DMA2Dx DMA2D Instance
1738 * @retval Green color value between Min_Data=0 and Max_Data=0xFF
1739 */
LL_DMA2D_BGND_GetGreenColor(const DMA2D_TypeDef * DMA2Dx)1740 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetGreenColor(const DMA2D_TypeDef *DMA2Dx)
1741 {
1742 return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_GREEN) >> DMA2D_BGCOLR_GREEN_Pos);
1743 }
1744
1745 /**
1746 * @brief Set DMA2D background blue color value, expressed on 8 bits ([7:0] bits).
1747 * @rmtoll BGCOLR BLUE LL_DMA2D_BGND_SetBlueColor
1748 * @param DMA2Dx DMA2D Instance
1749 * @param Blue Value between Min_Data=0 and Max_Data=0xFF
1750 * @retval None
1751 */
LL_DMA2D_BGND_SetBlueColor(DMA2D_TypeDef * DMA2Dx,uint32_t Blue)1752 __STATIC_INLINE void LL_DMA2D_BGND_SetBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t Blue)
1753 {
1754 MODIFY_REG(DMA2Dx->BGCOLR, DMA2D_BGCOLR_BLUE, Blue);
1755 }
1756
1757 /**
1758 * @brief Return DMA2D background blue color value, expressed on 8 bits ([7:0] bits).
1759 * @rmtoll BGCOLR BLUE LL_DMA2D_BGND_GetBlueColor
1760 * @param DMA2Dx DMA2D Instance
1761 * @retval Blue color value between Min_Data=0 and Max_Data=0xFF
1762 */
LL_DMA2D_BGND_GetBlueColor(const DMA2D_TypeDef * DMA2Dx)1763 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetBlueColor(const DMA2D_TypeDef *DMA2Dx)
1764 {
1765 return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_BLUE));
1766 }
1767
1768 /**
1769 * @brief Set DMA2D background CLUT memory address, expressed on 32 bits ([31:0] bits).
1770 * @rmtoll BGCMAR MA LL_DMA2D_BGND_SetCLUTMemAddr
1771 * @param DMA2Dx DMA2D Instance
1772 * @param CLUTMemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1773 * @retval None
1774 */
LL_DMA2D_BGND_SetCLUTMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTMemoryAddress)1775 __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTMemoryAddress)
1776 {
1777 LL_DMA2D_WriteReg(DMA2Dx, BGCMAR, CLUTMemoryAddress);
1778 }
1779
1780 /**
1781 * @brief Get DMA2D background CLUT memory address, expressed on 32 bits ([31:0] bits).
1782 * @rmtoll BGCMAR MA LL_DMA2D_BGND_GetCLUTMemAddr
1783 * @param DMA2Dx DMA2D Instance
1784 * @retval Background CLUT memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1785 */
LL_DMA2D_BGND_GetCLUTMemAddr(const DMA2D_TypeDef * DMA2Dx)1786 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTMemAddr(const DMA2D_TypeDef *DMA2Dx)
1787 {
1788 return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, BGCMAR));
1789 }
1790
1791 /**
1792 * @brief Set DMA2D background CLUT size, expressed on 8 bits ([7:0] bits).
1793 * @rmtoll BGPFCCR CS LL_DMA2D_BGND_SetCLUTSize
1794 * @param DMA2Dx DMA2D Instance
1795 * @param CLUTSize Value between Min_Data=0 and Max_Data=0xFF
1796 * @retval None
1797 */
LL_DMA2D_BGND_SetCLUTSize(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTSize)1798 __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTSize(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTSize)
1799 {
1800 MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CS, (CLUTSize << DMA2D_BGPFCCR_CS_Pos));
1801 }
1802
1803 /**
1804 * @brief Get DMA2D background CLUT size, expressed on 8 bits ([7:0] bits).
1805 * @rmtoll BGPFCCR CS LL_DMA2D_BGND_GetCLUTSize
1806 * @param DMA2Dx DMA2D Instance
1807 * @retval Background CLUT size value between Min_Data=0 and Max_Data=0xFF
1808 */
LL_DMA2D_BGND_GetCLUTSize(const DMA2D_TypeDef * DMA2Dx)1809 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTSize(const DMA2D_TypeDef *DMA2Dx)
1810 {
1811 return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CS) >> DMA2D_BGPFCCR_CS_Pos);
1812 }
1813
1814 /**
1815 * @brief Set DMA2D background CLUT color mode.
1816 * @rmtoll BGPFCCR CCM LL_DMA2D_BGND_SetCLUTColorMode
1817 * @param DMA2Dx DMA2D Instance
1818 * @param CLUTColorMode This parameter can be one of the following values:
1819 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1820 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1821 * @retval None
1822 */
LL_DMA2D_BGND_SetCLUTColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTColorMode)1823 __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTColorMode)
1824 {
1825 MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CCM, CLUTColorMode);
1826 }
1827
1828 /**
1829 * @brief Return DMA2D background CLUT color mode.
1830 * @rmtoll BGPFCCR CCM LL_DMA2D_BGND_GetCLUTColorMode
1831 * @param DMA2Dx DMA2D Instance
1832 * @retval Returned value can be one of the following values:
1833 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1834 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1835 */
LL_DMA2D_BGND_GetCLUTColorMode(const DMA2D_TypeDef * DMA2Dx)1836 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTColorMode(const DMA2D_TypeDef *DMA2Dx)
1837 {
1838 return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CCM));
1839 }
1840
1841 /**
1842 * @}
1843 */
1844
1845 /**
1846 * @}
1847 */
1848
1849
1850 /** @defgroup DMA2D_LL_EF_FLAG_MANAGEMENT Flag Management
1851 * @{
1852 */
1853
1854 /**
1855 * @brief Check if the DMA2D Configuration Error Interrupt Flag is set or not
1856 * @rmtoll ISR CEIF LL_DMA2D_IsActiveFlag_CE
1857 * @param DMA2Dx DMA2D Instance
1858 * @retval State of bit (1 or 0).
1859 */
LL_DMA2D_IsActiveFlag_CE(const DMA2D_TypeDef * DMA2Dx)1860 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CE(const DMA2D_TypeDef *DMA2Dx)
1861 {
1862 return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CEIF) == (DMA2D_ISR_CEIF)) ? 1UL : 0UL);
1863 }
1864
1865 /**
1866 * @brief Check if the DMA2D CLUT Transfer Complete Interrupt Flag is set or not
1867 * @rmtoll ISR CTCIF LL_DMA2D_IsActiveFlag_CTC
1868 * @param DMA2Dx DMA2D Instance
1869 * @retval State of bit (1 or 0).
1870 */
LL_DMA2D_IsActiveFlag_CTC(const DMA2D_TypeDef * DMA2Dx)1871 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CTC(const DMA2D_TypeDef *DMA2Dx)
1872 {
1873 return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CTCIF) == (DMA2D_ISR_CTCIF)) ? 1UL : 0UL);
1874 }
1875
1876 /**
1877 * @brief Check if the DMA2D CLUT Access Error Interrupt Flag is set or not
1878 * @rmtoll ISR CAEIF LL_DMA2D_IsActiveFlag_CAE
1879 * @param DMA2Dx DMA2D Instance
1880 * @retval State of bit (1 or 0).
1881 */
LL_DMA2D_IsActiveFlag_CAE(const DMA2D_TypeDef * DMA2Dx)1882 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CAE(const DMA2D_TypeDef *DMA2Dx)
1883 {
1884 return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CAEIF) == (DMA2D_ISR_CAEIF)) ? 1UL : 0UL);
1885 }
1886
1887 /**
1888 * @brief Check if the DMA2D Transfer Watermark Interrupt Flag is set or not
1889 * @rmtoll ISR TWIF LL_DMA2D_IsActiveFlag_TW
1890 * @param DMA2Dx DMA2D Instance
1891 * @retval State of bit (1 or 0).
1892 */
LL_DMA2D_IsActiveFlag_TW(const DMA2D_TypeDef * DMA2Dx)1893 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TW(const DMA2D_TypeDef *DMA2Dx)
1894 {
1895 return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TWIF) == (DMA2D_ISR_TWIF)) ? 1UL : 0UL);
1896 }
1897
1898 /**
1899 * @brief Check if the DMA2D Transfer Complete Interrupt Flag is set or not
1900 * @rmtoll ISR TCIF LL_DMA2D_IsActiveFlag_TC
1901 * @param DMA2Dx DMA2D Instance
1902 * @retval State of bit (1 or 0).
1903 */
LL_DMA2D_IsActiveFlag_TC(const DMA2D_TypeDef * DMA2Dx)1904 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TC(const DMA2D_TypeDef *DMA2Dx)
1905 {
1906 return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TCIF) == (DMA2D_ISR_TCIF)) ? 1UL : 0UL);
1907 }
1908
1909 /**
1910 * @brief Check if the DMA2D Transfer Error Interrupt Flag is set or not
1911 * @rmtoll ISR TEIF LL_DMA2D_IsActiveFlag_TE
1912 * @param DMA2Dx DMA2D Instance
1913 * @retval State of bit (1 or 0).
1914 */
LL_DMA2D_IsActiveFlag_TE(const DMA2D_TypeDef * DMA2Dx)1915 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TE(const DMA2D_TypeDef *DMA2Dx)
1916 {
1917 return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TEIF) == (DMA2D_ISR_TEIF)) ? 1UL : 0UL);
1918 }
1919
1920 /**
1921 * @brief Clear DMA2D Configuration Error Interrupt Flag
1922 * @rmtoll IFCR CCEIF LL_DMA2D_ClearFlag_CE
1923 * @param DMA2Dx DMA2D Instance
1924 * @retval None
1925 */
LL_DMA2D_ClearFlag_CE(DMA2D_TypeDef * DMA2Dx)1926 __STATIC_INLINE void LL_DMA2D_ClearFlag_CE(DMA2D_TypeDef *DMA2Dx)
1927 {
1928 WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CCEIF);
1929 }
1930
1931 /**
1932 * @brief Clear DMA2D CLUT Transfer Complete Interrupt Flag
1933 * @rmtoll IFCR CCTCIF LL_DMA2D_ClearFlag_CTC
1934 * @param DMA2Dx DMA2D Instance
1935 * @retval None
1936 */
LL_DMA2D_ClearFlag_CTC(DMA2D_TypeDef * DMA2Dx)1937 __STATIC_INLINE void LL_DMA2D_ClearFlag_CTC(DMA2D_TypeDef *DMA2Dx)
1938 {
1939 WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CCTCIF);
1940 }
1941
1942 /**
1943 * @brief Clear DMA2D CLUT Access Error Interrupt Flag
1944 * @rmtoll IFCR CAECIF LL_DMA2D_ClearFlag_CAE
1945 * @param DMA2Dx DMA2D Instance
1946 * @retval None
1947 */
LL_DMA2D_ClearFlag_CAE(DMA2D_TypeDef * DMA2Dx)1948 __STATIC_INLINE void LL_DMA2D_ClearFlag_CAE(DMA2D_TypeDef *DMA2Dx)
1949 {
1950 WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CAECIF);
1951 }
1952
1953 /**
1954 * @brief Clear DMA2D Transfer Watermark Interrupt Flag
1955 * @rmtoll IFCR CTWIF LL_DMA2D_ClearFlag_TW
1956 * @param DMA2Dx DMA2D Instance
1957 * @retval None
1958 */
LL_DMA2D_ClearFlag_TW(DMA2D_TypeDef * DMA2Dx)1959 __STATIC_INLINE void LL_DMA2D_ClearFlag_TW(DMA2D_TypeDef *DMA2Dx)
1960 {
1961 WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CTWIF);
1962 }
1963
1964 /**
1965 * @brief Clear DMA2D Transfer Complete Interrupt Flag
1966 * @rmtoll IFCR CTCIF LL_DMA2D_ClearFlag_TC
1967 * @param DMA2Dx DMA2D Instance
1968 * @retval None
1969 */
LL_DMA2D_ClearFlag_TC(DMA2D_TypeDef * DMA2Dx)1970 __STATIC_INLINE void LL_DMA2D_ClearFlag_TC(DMA2D_TypeDef *DMA2Dx)
1971 {
1972 WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CTCIF);
1973 }
1974
1975 /**
1976 * @brief Clear DMA2D Transfer Error Interrupt Flag
1977 * @rmtoll IFCR CTEIF LL_DMA2D_ClearFlag_TE
1978 * @param DMA2Dx DMA2D Instance
1979 * @retval None
1980 */
LL_DMA2D_ClearFlag_TE(DMA2D_TypeDef * DMA2Dx)1981 __STATIC_INLINE void LL_DMA2D_ClearFlag_TE(DMA2D_TypeDef *DMA2Dx)
1982 {
1983 WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CTEIF);
1984 }
1985
1986 /**
1987 * @}
1988 */
1989
1990 /** @defgroup DMA2D_LL_EF_IT_MANAGEMENT Interruption Management
1991 * @{
1992 */
1993
1994 /**
1995 * @brief Enable Configuration Error Interrupt
1996 * @rmtoll CR CEIE LL_DMA2D_EnableIT_CE
1997 * @param DMA2Dx DMA2D Instance
1998 * @retval None
1999 */
LL_DMA2D_EnableIT_CE(DMA2D_TypeDef * DMA2Dx)2000 __STATIC_INLINE void LL_DMA2D_EnableIT_CE(DMA2D_TypeDef *DMA2Dx)
2001 {
2002 SET_BIT(DMA2Dx->CR, DMA2D_CR_CEIE);
2003 }
2004
2005 /**
2006 * @brief Enable CLUT Transfer Complete Interrupt
2007 * @rmtoll CR CTCIE LL_DMA2D_EnableIT_CTC
2008 * @param DMA2Dx DMA2D Instance
2009 * @retval None
2010 */
LL_DMA2D_EnableIT_CTC(DMA2D_TypeDef * DMA2Dx)2011 __STATIC_INLINE void LL_DMA2D_EnableIT_CTC(DMA2D_TypeDef *DMA2Dx)
2012 {
2013 SET_BIT(DMA2Dx->CR, DMA2D_CR_CTCIE);
2014 }
2015
2016 /**
2017 * @brief Enable CLUT Access Error Interrupt
2018 * @rmtoll CR CAEIE LL_DMA2D_EnableIT_CAE
2019 * @param DMA2Dx DMA2D Instance
2020 * @retval None
2021 */
LL_DMA2D_EnableIT_CAE(DMA2D_TypeDef * DMA2Dx)2022 __STATIC_INLINE void LL_DMA2D_EnableIT_CAE(DMA2D_TypeDef *DMA2Dx)
2023 {
2024 SET_BIT(DMA2Dx->CR, DMA2D_CR_CAEIE);
2025 }
2026
2027 /**
2028 * @brief Enable Transfer Watermark Interrupt
2029 * @rmtoll CR TWIE LL_DMA2D_EnableIT_TW
2030 * @param DMA2Dx DMA2D Instance
2031 * @retval None
2032 */
LL_DMA2D_EnableIT_TW(DMA2D_TypeDef * DMA2Dx)2033 __STATIC_INLINE void LL_DMA2D_EnableIT_TW(DMA2D_TypeDef *DMA2Dx)
2034 {
2035 SET_BIT(DMA2Dx->CR, DMA2D_CR_TWIE);
2036 }
2037
2038 /**
2039 * @brief Enable Transfer Complete Interrupt
2040 * @rmtoll CR TCIE LL_DMA2D_EnableIT_TC
2041 * @param DMA2Dx DMA2D Instance
2042 * @retval None
2043 */
LL_DMA2D_EnableIT_TC(DMA2D_TypeDef * DMA2Dx)2044 __STATIC_INLINE void LL_DMA2D_EnableIT_TC(DMA2D_TypeDef *DMA2Dx)
2045 {
2046 SET_BIT(DMA2Dx->CR, DMA2D_CR_TCIE);
2047 }
2048
2049 /**
2050 * @brief Enable Transfer Error Interrupt
2051 * @rmtoll CR TEIE LL_DMA2D_EnableIT_TE
2052 * @param DMA2Dx DMA2D Instance
2053 * @retval None
2054 */
LL_DMA2D_EnableIT_TE(DMA2D_TypeDef * DMA2Dx)2055 __STATIC_INLINE void LL_DMA2D_EnableIT_TE(DMA2D_TypeDef *DMA2Dx)
2056 {
2057 SET_BIT(DMA2Dx->CR, DMA2D_CR_TEIE);
2058 }
2059
2060 /**
2061 * @brief Disable Configuration Error Interrupt
2062 * @rmtoll CR CEIE LL_DMA2D_DisableIT_CE
2063 * @param DMA2Dx DMA2D Instance
2064 * @retval None
2065 */
LL_DMA2D_DisableIT_CE(DMA2D_TypeDef * DMA2Dx)2066 __STATIC_INLINE void LL_DMA2D_DisableIT_CE(DMA2D_TypeDef *DMA2Dx)
2067 {
2068 CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_CEIE);
2069 }
2070
2071 /**
2072 * @brief Disable CLUT Transfer Complete Interrupt
2073 * @rmtoll CR CTCIE LL_DMA2D_DisableIT_CTC
2074 * @param DMA2Dx DMA2D Instance
2075 * @retval None
2076 */
LL_DMA2D_DisableIT_CTC(DMA2D_TypeDef * DMA2Dx)2077 __STATIC_INLINE void LL_DMA2D_DisableIT_CTC(DMA2D_TypeDef *DMA2Dx)
2078 {
2079 CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_CTCIE);
2080 }
2081
2082 /**
2083 * @brief Disable CLUT Access Error Interrupt
2084 * @rmtoll CR CAEIE LL_DMA2D_DisableIT_CAE
2085 * @param DMA2Dx DMA2D Instance
2086 * @retval None
2087 */
LL_DMA2D_DisableIT_CAE(DMA2D_TypeDef * DMA2Dx)2088 __STATIC_INLINE void LL_DMA2D_DisableIT_CAE(DMA2D_TypeDef *DMA2Dx)
2089 {
2090 CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_CAEIE);
2091 }
2092
2093 /**
2094 * @brief Disable Transfer Watermark Interrupt
2095 * @rmtoll CR TWIE LL_DMA2D_DisableIT_TW
2096 * @param DMA2Dx DMA2D Instance
2097 * @retval None
2098 */
LL_DMA2D_DisableIT_TW(DMA2D_TypeDef * DMA2Dx)2099 __STATIC_INLINE void LL_DMA2D_DisableIT_TW(DMA2D_TypeDef *DMA2Dx)
2100 {
2101 CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_TWIE);
2102 }
2103
2104 /**
2105 * @brief Disable Transfer Complete Interrupt
2106 * @rmtoll CR TCIE LL_DMA2D_DisableIT_TC
2107 * @param DMA2Dx DMA2D Instance
2108 * @retval None
2109 */
LL_DMA2D_DisableIT_TC(DMA2D_TypeDef * DMA2Dx)2110 __STATIC_INLINE void LL_DMA2D_DisableIT_TC(DMA2D_TypeDef *DMA2Dx)
2111 {
2112 CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_TCIE);
2113 }
2114
2115 /**
2116 * @brief Disable Transfer Error Interrupt
2117 * @rmtoll CR TEIE LL_DMA2D_DisableIT_TE
2118 * @param DMA2Dx DMA2D Instance
2119 * @retval None
2120 */
LL_DMA2D_DisableIT_TE(DMA2D_TypeDef * DMA2Dx)2121 __STATIC_INLINE void LL_DMA2D_DisableIT_TE(DMA2D_TypeDef *DMA2Dx)
2122 {
2123 CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_TEIE);
2124 }
2125
2126 /**
2127 * @brief Check if the DMA2D Configuration Error interrupt source is enabled or disabled.
2128 * @rmtoll CR CEIE LL_DMA2D_IsEnabledIT_CE
2129 * @param DMA2Dx DMA2D Instance
2130 * @retval State of bit (1 or 0).
2131 */
LL_DMA2D_IsEnabledIT_CE(const DMA2D_TypeDef * DMA2Dx)2132 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CE(const DMA2D_TypeDef *DMA2Dx)
2133 {
2134 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CEIE) == (DMA2D_CR_CEIE)) ? 1UL : 0UL);
2135 }
2136
2137 /**
2138 * @brief Check if the DMA2D CLUT Transfer Complete interrupt source is enabled or disabled.
2139 * @rmtoll CR CTCIE LL_DMA2D_IsEnabledIT_CTC
2140 * @param DMA2Dx DMA2D Instance
2141 * @retval State of bit (1 or 0).
2142 */
LL_DMA2D_IsEnabledIT_CTC(const DMA2D_TypeDef * DMA2Dx)2143 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CTC(const DMA2D_TypeDef *DMA2Dx)
2144 {
2145 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CTCIE) == (DMA2D_CR_CTCIE)) ? 1UL : 0UL);
2146 }
2147
2148 /**
2149 * @brief Check if the DMA2D CLUT Access Error interrupt source is enabled or disabled.
2150 * @rmtoll CR CAEIE LL_DMA2D_IsEnabledIT_CAE
2151 * @param DMA2Dx DMA2D Instance
2152 * @retval State of bit (1 or 0).
2153 */
LL_DMA2D_IsEnabledIT_CAE(const DMA2D_TypeDef * DMA2Dx)2154 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CAE(const DMA2D_TypeDef *DMA2Dx)
2155 {
2156 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CAEIE) == (DMA2D_CR_CAEIE)) ? 1UL : 0UL);
2157 }
2158
2159 /**
2160 * @brief Check if the DMA2D Transfer Watermark interrupt source is enabled or disabled.
2161 * @rmtoll CR TWIE LL_DMA2D_IsEnabledIT_TW
2162 * @param DMA2Dx DMA2D Instance
2163 * @retval State of bit (1 or 0).
2164 */
LL_DMA2D_IsEnabledIT_TW(const DMA2D_TypeDef * DMA2Dx)2165 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TW(const DMA2D_TypeDef *DMA2Dx)
2166 {
2167 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TWIE) == (DMA2D_CR_TWIE)) ? 1UL : 0UL);
2168 }
2169
2170 /**
2171 * @brief Check if the DMA2D Transfer Complete interrupt source is enabled or disabled.
2172 * @rmtoll CR TCIE LL_DMA2D_IsEnabledIT_TC
2173 * @param DMA2Dx DMA2D Instance
2174 * @retval State of bit (1 or 0).
2175 */
LL_DMA2D_IsEnabledIT_TC(const DMA2D_TypeDef * DMA2Dx)2176 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TC(const DMA2D_TypeDef *DMA2Dx)
2177 {
2178 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TCIE) == (DMA2D_CR_TCIE)) ? 1UL : 0UL);
2179 }
2180
2181 /**
2182 * @brief Check if the DMA2D Transfer Error interrupt source is enabled or disabled.
2183 * @rmtoll CR TEIE LL_DMA2D_IsEnabledIT_TE
2184 * @param DMA2Dx DMA2D Instance
2185 * @retval State of bit (1 or 0).
2186 */
LL_DMA2D_IsEnabledIT_TE(const DMA2D_TypeDef * DMA2Dx)2187 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TE(const DMA2D_TypeDef *DMA2Dx)
2188 {
2189 return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TEIE) == (DMA2D_CR_TEIE)) ? 1UL : 0UL);
2190 }
2191
2192
2193
2194 /**
2195 * @}
2196 */
2197
2198 #if defined(USE_FULL_LL_DRIVER)
2199 /** @defgroup DMA2D_LL_EF_Init_Functions Initialization and De-initialization Functions
2200 * @{
2201 */
2202
2203 ErrorStatus LL_DMA2D_DeInit(const DMA2D_TypeDef *DMA2Dx);
2204 ErrorStatus LL_DMA2D_Init(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_InitTypeDef *DMA2D_InitStruct);
2205 void LL_DMA2D_StructInit(LL_DMA2D_InitTypeDef *DMA2D_InitStruct);
2206 void LL_DMA2D_ConfigLayer(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg, uint32_t LayerIdx);
2207 void LL_DMA2D_LayerCfgStructInit(LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg);
2208 void LL_DMA2D_ConfigOutputColor(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_ColorTypeDef *DMA2D_ColorStruct);
2209 uint32_t LL_DMA2D_GetOutputBlueColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2210 uint32_t LL_DMA2D_GetOutputGreenColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2211 uint32_t LL_DMA2D_GetOutputRedColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2212 uint32_t LL_DMA2D_GetOutputAlphaColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2213 void LL_DMA2D_ConfigSize(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines, uint32_t NbrOfPixelsPerLines);
2214
2215 /**
2216 * @}
2217 */
2218 #endif /* USE_FULL_LL_DRIVER */
2219
2220 /**
2221 * @}
2222 */
2223
2224 /**
2225 * @}
2226 */
2227
2228 #endif /* defined (DMA2D) */
2229
2230 /**
2231 * @}
2232 */
2233
2234 #ifdef __cplusplus
2235 }
2236 #endif
2237
2238 #endif /* STM32U5xx_LL_DMA2D_H */
2239