STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_ll_dma2d.c
Go to the documentation of this file.
1 
19 #if defined(USE_FULL_LL_DRIVER)
20 
21 /* Includes ------------------------------------------------------------------*/
22 #include "stm32l4xx_ll_dma2d.h"
23 #include "stm32l4xx_ll_bus.h"
24 #ifdef USE_FULL_ASSERT
25 #include "stm32_assert.h"
26 #else
27 #define assert_param(expr) ((void)0U)
28 #endif
29 
34 #if defined (DMA2D)
35 
40 /* Private types -------------------------------------------------------------*/
41 /* Private variables ---------------------------------------------------------*/
42 /* Private constants ---------------------------------------------------------*/
46 #define LL_DMA2D_COLOR 0xFFU
47 #define LL_DMA2D_NUMBEROFLINES DMA2D_NLR_NL
48 #define LL_DMA2D_NUMBEROFPIXELS (DMA2D_NLR_PL >> DMA2D_NLR_PL_Pos)
49 #define LL_DMA2D_OFFSET_MAX 0x3FFFU
50 #define LL_DMA2D_CLUTSIZE_MAX 0xFFU
54 /* Private macros ------------------------------------------------------------*/
55 
58 #if defined(DMA2D_M2M_BLEND_FIXED_COLOR_FG_BG_SUPPORT)
59 #define IS_LL_DMA2D_MODE(MODE) (((MODE) == LL_DMA2D_MODE_M2M) || \
60  ((MODE) == LL_DMA2D_MODE_M2M_PFC) || \
61  ((MODE) == LL_DMA2D_MODE_M2M_BLEND) || \
62  ((MODE) == LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG) || \
63  ((MODE) == LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG) || \
64  ((MODE) == LL_DMA2D_MODE_R2M))
65 #else
66 #define IS_LL_DMA2D_MODE(MODE) (((MODE) == LL_DMA2D_MODE_M2M) || \
67  ((MODE) == LL_DMA2D_MODE_M2M_PFC) || \
68  ((MODE) == LL_DMA2D_MODE_M2M_BLEND) || \
69  ((MODE) == LL_DMA2D_MODE_R2M))
70 #endif /*DMA2D_M2M_BLEND_FIXED_COLOR_FG_BG_SUPPORT*/
71 
72 #define IS_LL_DMA2D_OCMODE(MODE_ARGB) (((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_ARGB8888) || \
73  ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_RGB888) || \
74  ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_RGB565) || \
75  ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_ARGB1555) || \
76  ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_ARGB4444))
77 
78 #define IS_LL_DMA2D_GREEN(GREEN) ((GREEN) <= LL_DMA2D_COLOR)
79 #define IS_LL_DMA2D_RED(RED) ((RED) <= LL_DMA2D_COLOR)
80 #define IS_LL_DMA2D_BLUE(BLUE) ((BLUE) <= LL_DMA2D_COLOR)
81 #define IS_LL_DMA2D_ALPHA(ALPHA) ((ALPHA) <= LL_DMA2D_COLOR)
82 
83 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
84 #define IS_LL_DMA2D_OFFSET_MODE(MODE) (((MODE) == LL_DMA2D_LINE_OFFSET_PIXELS) || \
85  ((MODE) == LL_DMA2D_LINE_OFFSET_BYTES))
86 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
87 
88 #define IS_LL_DMA2D_OFFSET(OFFSET) ((OFFSET) <= LL_DMA2D_OFFSET_MAX)
89 
90 #define IS_LL_DMA2D_LINE(LINES) ((LINES) <= LL_DMA2D_NUMBEROFLINES)
91 #define IS_LL_DMA2D_PIXEL(PIXELS) ((PIXELS) <= LL_DMA2D_NUMBEROFPIXELS)
92 
93 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
94 #define IS_LL_DMA2D_SWAP_MODE(MODE) (((MODE) == LL_DMA2D_SWAP_MODE_REGULAR) || \
95  ((MODE) == LL_DMA2D_SWAP_MODE_TWO_BY_TWO))
96 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
97 
98 #define IS_LL_DMA2D_ALPHAINV(ALPHA) (((ALPHA) == LL_DMA2D_ALPHA_REGULAR) || \
99  ((ALPHA) == LL_DMA2D_ALPHA_INVERTED))
100 
101 #define IS_LL_DMA2D_RBSWAP(RBSWAP) (((RBSWAP) == LL_DMA2D_RB_MODE_REGULAR) || \
102  ((RBSWAP) == LL_DMA2D_RB_MODE_SWAP))
103 
104 #define IS_LL_DMA2D_LCMODE(MODE_ARGB) (((MODE_ARGB) == LL_DMA2D_INPUT_MODE_ARGB8888) || \
105  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_RGB888) || \
106  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_RGB565) || \
107  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_ARGB1555) || \
108  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_ARGB4444) || \
109  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_L8) || \
110  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_AL44) || \
111  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_AL88) || \
112  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_L4) || \
113  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_A8) || \
114  ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_A4))
115 
116 #define IS_LL_DMA2D_CLUTCMODE(CLUTCMODE) (((CLUTCMODE) == LL_DMA2D_CLUT_COLOR_MODE_ARGB8888) || \
117  ((CLUTCMODE) == LL_DMA2D_CLUT_COLOR_MODE_RGB888))
118 
119 #define IS_LL_DMA2D_CLUTSIZE(SIZE) ((SIZE) <= LL_DMA2D_CLUTSIZE_MAX)
120 
121 #define IS_LL_DMA2D_ALPHAMODE(MODE) (((MODE) == LL_DMA2D_ALPHA_MODE_NO_MODIF) || \
122  ((MODE) == LL_DMA2D_ALPHA_MODE_REPLACE) || \
123  ((MODE) == LL_DMA2D_ALPHA_MODE_COMBINE))
124 
125 
130 /* Private function prototypes -----------------------------------------------*/
131 
132 /* Exported functions --------------------------------------------------------*/
148 ErrorStatus LL_DMA2D_DeInit(DMA2D_TypeDef *DMA2Dx)
149 {
150  ErrorStatus status = SUCCESS;
151 
152  /* Check the parameters */
153  assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
154 
155  if (DMA2Dx == DMA2D)
156  {
157  /* Force reset of DMA2D clock */
158  LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA2D);
159 
160  /* Release reset of DMA2D clock */
161  LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA2D);
162  }
163  else
164  {
165  status = ERROR;
166  }
167 
168  return (status);
169 }
170 
182 ErrorStatus LL_DMA2D_Init(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_InitTypeDef *DMA2D_InitStruct)
183 {
184  ErrorStatus status = ERROR;
185  LL_DMA2D_ColorTypeDef DMA2D_ColorStruct;
186  uint32_t tmp, tmp1, tmp2;
187  uint32_t regMask, regValue;
188 
189  /* Check the parameters */
190  assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
191  assert_param(IS_LL_DMA2D_MODE(DMA2D_InitStruct->Mode));
192  assert_param(IS_LL_DMA2D_OCMODE(DMA2D_InitStruct->ColorMode));
193  assert_param(IS_LL_DMA2D_LINE(DMA2D_InitStruct->NbrOfLines));
194  assert_param(IS_LL_DMA2D_PIXEL(DMA2D_InitStruct->NbrOfPixelsPerLines));
195  assert_param(IS_LL_DMA2D_GREEN(DMA2D_InitStruct->OutputGreen));
196  assert_param(IS_LL_DMA2D_RED(DMA2D_InitStruct->OutputRed));
197  assert_param(IS_LL_DMA2D_BLUE(DMA2D_InitStruct->OutputBlue));
198  assert_param(IS_LL_DMA2D_ALPHA(DMA2D_InitStruct->OutputAlpha));
199 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
200  assert_param(IS_LL_DMA2D_SWAP_MODE(DMA2D_InitStruct->OutputSwapMode));
201 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
202 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
203  assert_param(IS_LL_DMA2D_OFFSET_MODE(DMA2D_InitStruct->LineOffsetMode));
204 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
205  assert_param(IS_LL_DMA2D_OFFSET(DMA2D_InitStruct->LineOffset));
206  assert_param(IS_LL_DMA2D_ALPHAINV(DMA2D_InitStruct->AlphaInversionMode));
207  assert_param(IS_LL_DMA2D_RBSWAP(DMA2D_InitStruct->RBSwapMode));
208 
209  /* DMA2D transfers must be disabled to configure bits in initialization registers */
210  tmp = LL_DMA2D_IsTransferOngoing(DMA2Dx);
211  tmp1 = LL_DMA2D_FGND_IsEnabledCLUTLoad(DMA2Dx);
212  tmp2 = LL_DMA2D_BGND_IsEnabledCLUTLoad(DMA2Dx);
213  if ((tmp == 0U) && (tmp1 == 0U) && (tmp2 == 0U))
214  {
215  /* DMA2D CR register configuration -------------------------------------------*/
216 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
217  MODIFY_REG(DMA2Dx->CR, (DMA2D_CR_MODE | DMA2D_CR_LOM), \
218  (DMA2D_InitStruct->Mode | DMA2D_InitStruct->LineOffsetMode));
219 #else
220  LL_DMA2D_SetMode(DMA2Dx, DMA2D_InitStruct->Mode);
221 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
222 
223  /* DMA2D OPFCCR register configuration ---------------------------------------*/
224  regMask = DMA2D_OPFCCR_CM;
225  regValue = DMA2D_InitStruct->ColorMode;
226 
227 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
228  regMask |= DMA2D_OPFCCR_SB;
229  regValue |= DMA2D_InitStruct->OutputSwapMode;
230 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
231 
232  regMask |= (DMA2D_OPFCCR_RBS | DMA2D_OPFCCR_AI);
233  regValue |= (DMA2D_InitStruct->AlphaInversionMode | DMA2D_InitStruct->RBSwapMode);
234 
235 
236  MODIFY_REG(DMA2Dx->OPFCCR, regMask, regValue);
237 
238  /* DMA2D OOR register configuration ------------------------------------------*/
239  LL_DMA2D_SetLineOffset(DMA2Dx, DMA2D_InitStruct->LineOffset);
240 
241  /* DMA2D NLR register configuration ------------------------------------------*/
242  LL_DMA2D_ConfigSize(DMA2Dx, DMA2D_InitStruct->NbrOfLines, DMA2D_InitStruct->NbrOfPixelsPerLines);
243 
244  /* DMA2D OMAR register configuration ------------------------------------------*/
245  LL_DMA2D_SetOutputMemAddr(DMA2Dx, DMA2D_InitStruct->OutputMemoryAddress);
246 
247  /* DMA2D OCOLR register configuration ------------------------------------------*/
248  DMA2D_ColorStruct.ColorMode = DMA2D_InitStruct->ColorMode;
249  DMA2D_ColorStruct.OutputBlue = DMA2D_InitStruct->OutputBlue;
250  DMA2D_ColorStruct.OutputGreen = DMA2D_InitStruct->OutputGreen;
251  DMA2D_ColorStruct.OutputRed = DMA2D_InitStruct->OutputRed;
252  DMA2D_ColorStruct.OutputAlpha = DMA2D_InitStruct->OutputAlpha;
253  LL_DMA2D_ConfigOutputColor(DMA2Dx, &DMA2D_ColorStruct);
254 
255  status = SUCCESS;
256  }
257  /* If DMA2D transfers are not disabled, return ERROR */
258 
259  return (status);
260 }
261 
269 {
270  /* Set DMA2D_InitStruct fields to default values */
271  DMA2D_InitStruct->Mode = LL_DMA2D_MODE_M2M;
272  DMA2D_InitStruct->ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB8888;
273  DMA2D_InitStruct->NbrOfLines = 0x0U;
274  DMA2D_InitStruct->NbrOfPixelsPerLines = 0x0U;
275 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
276  DMA2D_InitStruct->LineOffsetMode = LL_DMA2D_LINE_OFFSET_PIXELS;
277 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
278  DMA2D_InitStruct->LineOffset = 0x0U;
279  DMA2D_InitStruct->OutputBlue = 0x0U;
280  DMA2D_InitStruct->OutputGreen = 0x0U;
281  DMA2D_InitStruct->OutputRed = 0x0U;
282  DMA2D_InitStruct->OutputAlpha = 0x0U;
283  DMA2D_InitStruct->OutputMemoryAddress = 0x0U;
284 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
285  DMA2D_InitStruct->OutputSwapMode = LL_DMA2D_SWAP_MODE_REGULAR;
286 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
287  DMA2D_InitStruct->AlphaInversionMode = LL_DMA2D_ALPHA_REGULAR;
288  DMA2D_InitStruct->RBSwapMode = LL_DMA2D_RB_MODE_REGULAR;
289 }
290 
302 void LL_DMA2D_ConfigLayer(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg, uint32_t LayerIdx)
303 {
304  /* Check the parameters */
305  assert_param(IS_LL_DMA2D_OFFSET(DMA2D_LayerCfg->LineOffset));
306  assert_param(IS_LL_DMA2D_LCMODE(DMA2D_LayerCfg->ColorMode));
307  assert_param(IS_LL_DMA2D_CLUTCMODE(DMA2D_LayerCfg->CLUTColorMode));
308  assert_param(IS_LL_DMA2D_CLUTSIZE(DMA2D_LayerCfg->CLUTSize));
309  assert_param(IS_LL_DMA2D_ALPHAMODE(DMA2D_LayerCfg->AlphaMode));
310  assert_param(IS_LL_DMA2D_GREEN(DMA2D_LayerCfg->Green));
311  assert_param(IS_LL_DMA2D_RED(DMA2D_LayerCfg->Red));
312  assert_param(IS_LL_DMA2D_BLUE(DMA2D_LayerCfg->Blue));
313  assert_param(IS_LL_DMA2D_ALPHA(DMA2D_LayerCfg->Alpha));
314  assert_param(IS_LL_DMA2D_ALPHAINV(DMA2D_LayerCfg->AlphaInversionMode));
315  assert_param(IS_LL_DMA2D_RBSWAP(DMA2D_LayerCfg->RBSwapMode));
316 
317 
318  if (LayerIdx == 0U)
319  {
320  /* Configure the background memory address */
321  LL_DMA2D_BGND_SetMemAddr(DMA2Dx, DMA2D_LayerCfg->MemoryAddress);
322 
323  /* Configure the background line offset */
324  LL_DMA2D_BGND_SetLineOffset(DMA2Dx, DMA2D_LayerCfg->LineOffset);
325 
326  /* Configure the background Alpha value, Alpha mode, RB swap, Alpha inversion
327  CLUT size, CLUT Color mode and Color mode */
328  MODIFY_REG(DMA2Dx->BGPFCCR, \
329  (DMA2D_BGPFCCR_ALPHA | DMA2D_BGPFCCR_RBS | DMA2D_BGPFCCR_AI | DMA2D_BGPFCCR_AM | \
330  DMA2D_BGPFCCR_CS | DMA2D_BGPFCCR_CCM | DMA2D_BGPFCCR_CM), \
331  ((DMA2D_LayerCfg->Alpha << DMA2D_BGPFCCR_ALPHA_Pos) | DMA2D_LayerCfg->RBSwapMode | \
332  DMA2D_LayerCfg->AlphaInversionMode | DMA2D_LayerCfg->AlphaMode | \
333  (DMA2D_LayerCfg->CLUTSize << DMA2D_BGPFCCR_CS_Pos) | DMA2D_LayerCfg->CLUTColorMode | \
334  DMA2D_LayerCfg->ColorMode));
335 
336  /* Configure the background color */
337  LL_DMA2D_BGND_SetColor(DMA2Dx, DMA2D_LayerCfg->Red, DMA2D_LayerCfg->Green, DMA2D_LayerCfg->Blue);
338 
339  /* Configure the background CLUT memory address */
340  LL_DMA2D_BGND_SetCLUTMemAddr(DMA2Dx, DMA2D_LayerCfg->CLUTMemoryAddress);
341  }
342  else
343  {
344  /* Configure the foreground memory address */
345  LL_DMA2D_FGND_SetMemAddr(DMA2Dx, DMA2D_LayerCfg->MemoryAddress);
346 
347  /* Configure the foreground line offset */
348  LL_DMA2D_FGND_SetLineOffset(DMA2Dx, DMA2D_LayerCfg->LineOffset);
349 
350  /* Configure the foreground Alpha value, Alpha mode, RB swap, Alpha inversion
351  CLUT size, CLUT Color mode and Color mode */
352  MODIFY_REG(DMA2Dx->FGPFCCR, \
353  (DMA2D_FGPFCCR_ALPHA | DMA2D_FGPFCCR_RBS | DMA2D_FGPFCCR_AI | DMA2D_FGPFCCR_AM | \
354  DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM | DMA2D_FGPFCCR_CM), \
355  ((DMA2D_LayerCfg->Alpha << DMA2D_FGPFCCR_ALPHA_Pos) | DMA2D_LayerCfg->RBSwapMode | \
356  DMA2D_LayerCfg->AlphaInversionMode | DMA2D_LayerCfg->AlphaMode | \
357  (DMA2D_LayerCfg->CLUTSize << DMA2D_FGPFCCR_CS_Pos) | DMA2D_LayerCfg->CLUTColorMode | \
358  DMA2D_LayerCfg->ColorMode));
359 
360  /* Configure the foreground color */
361  LL_DMA2D_FGND_SetColor(DMA2Dx, DMA2D_LayerCfg->Red, DMA2D_LayerCfg->Green, DMA2D_LayerCfg->Blue);
362 
363  /* Configure the foreground CLUT memory address */
364  LL_DMA2D_FGND_SetCLUTMemAddr(DMA2Dx, DMA2D_LayerCfg->CLUTMemoryAddress);
365  }
366 }
367 
375 {
376  /* Set DMA2D_LayerCfg fields to default values */
377  DMA2D_LayerCfg->MemoryAddress = 0x0U;
378  DMA2D_LayerCfg->ColorMode = LL_DMA2D_INPUT_MODE_ARGB8888;
379  DMA2D_LayerCfg->LineOffset = 0x0U;
380  DMA2D_LayerCfg->CLUTColorMode = LL_DMA2D_CLUT_COLOR_MODE_ARGB8888;
381  DMA2D_LayerCfg->CLUTSize = 0x0U;
382  DMA2D_LayerCfg->AlphaMode = LL_DMA2D_ALPHA_MODE_NO_MODIF;
383  DMA2D_LayerCfg->Alpha = 0x0U;
384  DMA2D_LayerCfg->Blue = 0x0U;
385  DMA2D_LayerCfg->Green = 0x0U;
386  DMA2D_LayerCfg->Red = 0x0U;
387  DMA2D_LayerCfg->CLUTMemoryAddress = 0x0U;
388  DMA2D_LayerCfg->AlphaInversionMode = LL_DMA2D_ALPHA_REGULAR;
389  DMA2D_LayerCfg->RBSwapMode = LL_DMA2D_RB_MODE_REGULAR;
390 }
391 
400 void LL_DMA2D_ConfigOutputColor(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_ColorTypeDef *DMA2D_ColorStruct)
401 {
402  uint32_t outgreen;
403  uint32_t outred;
404  uint32_t outalpha;
405 
406  /* Check the parameters */
407  assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
408  assert_param(IS_LL_DMA2D_OCMODE(DMA2D_ColorStruct->ColorMode));
409  assert_param(IS_LL_DMA2D_GREEN(DMA2D_ColorStruct->OutputGreen));
410  assert_param(IS_LL_DMA2D_RED(DMA2D_ColorStruct->OutputRed));
411  assert_param(IS_LL_DMA2D_BLUE(DMA2D_ColorStruct->OutputBlue));
412  assert_param(IS_LL_DMA2D_ALPHA(DMA2D_ColorStruct->OutputAlpha));
413 
414  /* DMA2D OCOLR register configuration ------------------------------------------*/
415  if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
416  {
417  outgreen = DMA2D_ColorStruct->OutputGreen << 8U;
418  outred = DMA2D_ColorStruct->OutputRed << 16U;
419  outalpha = DMA2D_ColorStruct->OutputAlpha << 24U;
420  }
421  else if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
422  {
423  outgreen = DMA2D_ColorStruct->OutputGreen << 8U;
424  outred = DMA2D_ColorStruct->OutputRed << 16U;
425  outalpha = 0x00000000U;
426  }
427  else if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
428  {
429  outgreen = DMA2D_ColorStruct->OutputGreen << 5U;
430  outred = DMA2D_ColorStruct->OutputRed << 11U;
431  outalpha = 0x00000000U;
432  }
433  else if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
434  {
435  outgreen = DMA2D_ColorStruct->OutputGreen << 5U;
436  outred = DMA2D_ColorStruct->OutputRed << 10U;
437  outalpha = DMA2D_ColorStruct->OutputAlpha << 15U;
438  }
439  else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
440  {
441  outgreen = DMA2D_ColorStruct->OutputGreen << 4U;
442  outred = DMA2D_ColorStruct->OutputRed << 8U;
443  outalpha = DMA2D_ColorStruct->OutputAlpha << 12U;
444  }
445  LL_DMA2D_SetOutputColor(DMA2Dx, (outgreen | outred | DMA2D_ColorStruct->OutputBlue | outalpha));
446 }
447 
459 uint32_t LL_DMA2D_GetOutputBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
460 {
461  uint32_t color;
462 
463  /* Check the parameters */
464  assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
465  assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
466 
467  /* DMA2D OCOLR register reading ------------------------------------------*/
468  if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
469  {
470  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFFU));
471  }
472  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
473  {
474  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFFU));
475  }
476  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
477  {
478  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x1FU));
479  }
480  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
481  {
482  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x1FU));
483  }
484  else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
485  {
486  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFU));
487  }
488 
489  return color;
490 }
491 
503 uint32_t LL_DMA2D_GetOutputGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
504 {
505  uint32_t color;
506 
507  /* Check the parameters */
508  assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
509  assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
510 
511  /* DMA2D OCOLR register reading ------------------------------------------*/
512  if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
513  {
514  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF00U) >> 8U);
515  }
516  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
517  {
518  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF00U) >> 8U);
519  }
520  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
521  {
522  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x7E0U) >> 5U);
523  }
524  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
525  {
526  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x3E0U) >> 5U);
527  }
528  else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
529  {
530  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF0U) >> 4U);
531  }
532 
533  return color;
534 }
535 
547 uint32_t LL_DMA2D_GetOutputRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
548 {
549  uint32_t color;
550 
551  /* Check the parameters */
552  assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
553  assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
554 
555  /* DMA2D OCOLR register reading ------------------------------------------*/
556  if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
557  {
558  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF0000U) >> 16U);
559  }
560  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
561  {
562  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF0000U) >> 16U);
563  }
564  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
565  {
566  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF800U) >> 11U);
567  }
568  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
569  {
570  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x7C00U) >> 10U);
571  }
572  else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
573  {
574  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF00U) >> 8U);
575  }
576 
577  return color;
578 }
579 
591 uint32_t LL_DMA2D_GetOutputAlphaColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
592 {
593  uint32_t color;
594 
595  /* Check the parameters */
596  assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
597  assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
598 
599  /* DMA2D OCOLR register reading ------------------------------------------*/
600  if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
601  {
602  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF000000U) >> 24U);
603  }
604  else if ((ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888) || (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565))
605  {
606  color = 0x0U;
607  }
608  else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
609  {
610  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x8000U) >> 15U);
611  }
612  else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
613  {
614  color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF000U) >> 12U);
615  }
616 
617  return color;
618 }
619 
627 void LL_DMA2D_ConfigSize(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines, uint32_t NbrOfPixelsPerLines)
628 {
629  MODIFY_REG(DMA2Dx->NLR, (DMA2D_NLR_PL | DMA2D_NLR_NL), \
630  ((NbrOfPixelsPerLines << DMA2D_NLR_PL_Pos) | NbrOfLines));
631 }
632 
645 #endif /* defined (DMA2D) */
646 
651 #endif /* USE_FULL_LL_DRIVER */
652 
653 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
654 
__STATIC_INLINE void LL_DMA2D_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
Set DMA2D line offset, expressed on 14 bits ([13:0] bits). OOR LO LL_DMA2D_SetLineOffset.
void LL_DMA2D_ConfigLayer(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg, uint32_t LayerIdx)
Configure the foreground or background according to the specified parameters in the LL_DMA2D_LayerCfg...
Header file of DMA2D LL module.
ErrorStatus LL_DMA2D_DeInit(DMA2D_TypeDef *DMA2Dx)
De-initialize DMA2D registers (registers restored to their default values).
uint32_t LL_DMA2D_GetOutputAlphaColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
Return DMA2D output Alpha color.
__STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
Force AHB1 peripherals reset. AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset AHB1RSTR DMA2RST LL_AHB1_GRP...
LL DMA2D Layer Configuration Structure Definition.
__STATIC_INLINE void LL_DMA2D_SetOutputMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t OutputMemoryAddress)
Set DMA2D output memory address, expressed on 32 bits ([31:0] bits). OMAR MA LL_DMA2D_SetOutputMemAd...
void LL_DMA2D_StructInit(LL_DMA2D_InitTypeDef *DMA2D_InitStruct)
Set each LL_DMA2D_InitTypeDef field to default value.
__STATIC_INLINE void LL_DMA2D_FGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
Set DMA2D foreground line offset, expressed on 14 bits ([13:0] bits). FGOR LO LL_DMA2D_FGND_SetLineO...
__STATIC_INLINE void LL_DMA2D_BGND_SetColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red, uint32_t Green, uint32_t Blue)
Set DMA2D background color values, expressed on 24 bits ([23:0] bits). BGCOLR RED LL_DMA2D_BGND_SetC...
__STATIC_INLINE void LL_DMA2D_BGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTMemoryAddress)
Set DMA2D background CLUT memory address, expressed on 32 bits ([31:0] bits). BGCMAR MA LL_DMA2D_BGN...
__STATIC_INLINE uint32_t LL_DMA2D_BGND_IsEnabledCLUTLoad(DMA2D_TypeDef *DMA2Dx)
Indicate if DMA2D background CLUT loading is enabled. BGPFCCR START LL_DMA2D_BGND_IsEnabledCLUTLoad...
__STATIC_INLINE uint32_t LL_DMA2D_IsTransferOngoing(DMA2D_TypeDef *DMA2Dx)
Indicate if a DMA2D transfer is ongoing. CR START LL_DMA2D_IsTransferOngoing.
ErrorStatus LL_DMA2D_Init(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_InitTypeDef *DMA2D_InitStruct)
Initialize DMA2D registers according to the specified parameters in DMA2D_InitStruct.
void LL_DMA2D_ConfigOutputColor(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_ColorTypeDef *DMA2D_ColorStruct)
Initialize DMA2D output color register according to the specified parameters in DMA2D_ColorStruct.
__STATIC_INLINE void LL_DMA2D_FGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t MemoryAddress)
Set DMA2D foreground memory address, expressed on 32 bits ([31:0] bits). FGMAR MA LL_DMA2D_FGND_SetM...
LL DMA2D Init Structure Definition.
uint32_t LL_DMA2D_GetOutputRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
Return DMA2D output Red color.
__STATIC_INLINE void LL_DMA2D_SetOutputColor(DMA2D_TypeDef *DMA2Dx, uint32_t OutputColor)
Set DMA2D output color, expressed on 32 bits ([31:0] bits).
Header file of BUS LL module.
__STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
Release AHB1 peripherals reset. AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset AHB1RSTR DMA2RST LL_AHB1...
__STATIC_INLINE uint32_t LL_DMA2D_FGND_IsEnabledCLUTLoad(DMA2D_TypeDef *DMA2Dx)
Indicate if DMA2D foreground CLUT loading is enabled. FGPFCCR START LL_DMA2D_FGND_IsEnabledCLUTLoad...
void LL_DMA2D_ConfigSize(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines, uint32_t NbrOfPixelsPerLines)
Configure DMA2D transfer size.
__STATIC_INLINE void LL_DMA2D_FGND_SetColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red, uint32_t Green, uint32_t Blue)
Set DMA2D foreground color values, expressed on 24 bits ([23:0] bits). FGCOLR RED LL_DMA2D_FGND_SetC...
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
__STATIC_INLINE void LL_DMA2D_BGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
Set DMA2D background line offset, expressed on 14 bits ([13:0] bits). BGOR LO LL_DMA2D_BGND_SetLineO...
LL DMA2D Output Color Structure Definition.
void LL_DMA2D_LayerCfgStructInit(LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg)
Set each LL_DMA2D_LayerCfgTypeDef field to default value.
__STATIC_INLINE void LL_DMA2D_FGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTMemoryAddress)
Set DMA2D foreground CLUT memory address, expressed on 32 bits ([31:0] bits). FGCMAR MA LL_DMA2D_FGN...
__STATIC_INLINE void LL_DMA2D_SetMode(DMA2D_TypeDef *DMA2Dx, uint32_t Mode)
Set DMA2D mode. CR MODE LL_DMA2D_SetMode.
uint32_t LL_DMA2D_GetOutputBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
Return DMA2D output Blue color.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__STATIC_INLINE void LL_DMA2D_BGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t MemoryAddress)
Set DMA2D background memory address, expressed on 32 bits ([31:0] bits). BGMAR MA LL_DMA2D_BGND_SetM...
uint32_t LL_DMA2D_GetOutputGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
Return DMA2D output Green color.