STM32L4xx_HAL_Driver  1.14.0
Initialization and de-initialization functions

Initialization and Configuration functions. More...

Functions

HAL_StatusTypeDef HAL_DMA2D_Init (DMA2D_HandleTypeDef *hdma2d)
 Initialize the DMA2D according to the specified parameters in the DMA2D_InitTypeDef and create the associated handle. More...
 
HAL_StatusTypeDef HAL_DMA2D_DeInit (DMA2D_HandleTypeDef *hdma2d)
 Deinitializes the DMA2D peripheral registers to their default reset values. More...
 
void HAL_DMA2D_MspInit (DMA2D_HandleTypeDef *hdma2d)
 Initializes the DMA2D MSP. More...
 
void HAL_DMA2D_MspDeInit (DMA2D_HandleTypeDef *hdma2d)
 DeInitializes the DMA2D MSP. More...
 
HAL_StatusTypeDef HAL_DMA2D_RegisterCallback (DMA2D_HandleTypeDef *hdma2d, HAL_DMA2D_CallbackIDTypeDef CallbackID, pDMA2D_CallbackTypeDef pCallback)
 Register a User DMA2D Callback To be used instead of the weak (surcharged) predefined callback. More...
 
HAL_StatusTypeDef HAL_DMA2D_UnRegisterCallback (DMA2D_HandleTypeDef *hdma2d, HAL_DMA2D_CallbackIDTypeDef CallbackID)
 Unregister a DMA2D Callback DMA2D Callback is redirected to the weak (surcharged) predefined callback. More...
 

Detailed Description

Initialization and Configuration functions.

 ===============================================================================
                ##### Initialization and Configuration functions #####
 ===============================================================================
    [..]  This section provides functions allowing to:
      (+) Initialize and configure the DMA2D
      (+) De-initialize the DMA2D

Function Documentation

◆ HAL_DMA2D_DeInit()

HAL_StatusTypeDef HAL_DMA2D_DeInit ( DMA2D_HandleTypeDef hdma2d)

Deinitializes the DMA2D peripheral registers to their default reset values.

Parameters
hdma2dpointer to a DMA2D_HandleTypeDef structure that contains the configuration information for the DMA2D.
Return values
None

Definition at line 323 of file stm32l4xx_hal_dma2d.c.

324 {
325 
326  /* Check the DMA2D peripheral state */
327  if(hdma2d == NULL)
328  {
329  return HAL_ERROR;
330  }
331 
332  /* Before aborting any DMA2D transfer or CLUT loading, check
333  first whether or not DMA2D clock is enabled */
334  if (__HAL_RCC_DMA2D_IS_CLK_ENABLED())
335  {
336  /* Abort DMA2D transfer if any */
337  if ((hdma2d->Instance->CR & DMA2D_CR_START) == DMA2D_CR_START)
338  {
339  if (HAL_DMA2D_Abort(hdma2d) != HAL_OK)
340  {
341  /* Issue when aborting DMA2D transfer */
342  return HAL_ERROR;
343  }
344  }
345  else
346  {
347  /* Abort background CLUT loading if any */
348  if ((hdma2d->Instance->BGPFCCR & DMA2D_BGPFCCR_START) == DMA2D_BGPFCCR_START)
349  {
350  if (HAL_DMA2D_CLUTLoading_Abort(hdma2d, 0U) != HAL_OK)
351  {
352  /* Issue when aborting background CLUT loading */
353  return HAL_ERROR;
354  }
355  }
356  else
357  {
358  /* Abort foreground CLUT loading if any */
359  if ((hdma2d->Instance->FGPFCCR & DMA2D_FGPFCCR_START) == DMA2D_FGPFCCR_START)
360  {
361  if (HAL_DMA2D_CLUTLoading_Abort(hdma2d, 1U) != HAL_OK)
362  {
363  /* Issue when aborting foreground CLUT loading */
364  return HAL_ERROR;
365  }
366  }
367  }
368  }
369  }
370 
371  /* Reset DMA2D control registers*/
372  hdma2d->Instance->CR = 0U;
373  hdma2d->Instance->IFCR = 0x3FU;
374  hdma2d->Instance->FGOR = 0U;
375  hdma2d->Instance->BGOR = 0U;
376  hdma2d->Instance->FGPFCCR = 0U;
377  hdma2d->Instance->BGPFCCR = 0U;
378  hdma2d->Instance->OPFCCR = 0U;
379 
380 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
381 
382  if(hdma2d->MspDeInitCallback == NULL)
383  {
385  }
386 
387  /* DeInit the low level hardware */
388  hdma2d->MspDeInitCallback(hdma2d);
389 
390 #else
391  /* Carry on with de-initialization of low level hardware */
392  HAL_DMA2D_MspDeInit(hdma2d);
393 #endif /* (USE_HAL_DMA2D_REGISTER_CALLBACKS) */
394 
395  /* Update error code */
396  hdma2d->ErrorCode = HAL_DMA2D_ERROR_NONE;
397 
398  /* Initialize the DMA2D state*/
399  hdma2d->State = HAL_DMA2D_STATE_RESET;
400 
401  /* Release Lock */
402  __HAL_UNLOCK(hdma2d);
403 
404  return HAL_OK;
405 }
void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef *hdma2d)
DeInitializes the DMA2D MSP.
HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Abort(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
Abort the DMA2D CLUT loading.
void(* MspDeInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
__HAL_UNLOCK(hrtc)
return HAL_OK
__IO HAL_DMA2D_StateTypeDef State
HAL_StatusTypeDef HAL_DMA2D_Abort(DMA2D_HandleTypeDef *hdma2d)
Abort the DMA2D Transfer.

◆ HAL_DMA2D_Init()

HAL_StatusTypeDef HAL_DMA2D_Init ( DMA2D_HandleTypeDef hdma2d)

Initialize the DMA2D according to the specified parameters in the DMA2D_InitTypeDef and create the associated handle.

Parameters
hdma2dpointer to a DMA2D_HandleTypeDef structure that contains the configuration information for the DMA2D.
Return values
HALstatus

Definition at line 237 of file stm32l4xx_hal_dma2d.c.

238 {
239  /* Check the DMA2D peripheral state */
240  if(hdma2d == NULL)
241  {
242  return HAL_ERROR;
243  }
244 
245  /* Check the parameters */
246  assert_param(IS_DMA2D_ALL_INSTANCE(hdma2d->Instance));
247  assert_param(IS_DMA2D_MODE(hdma2d->Init.Mode));
248  assert_param(IS_DMA2D_CMODE(hdma2d->Init.ColorMode));
249  assert_param(IS_DMA2D_OFFSET(hdma2d->Init.OutputOffset));
250  assert_param(IS_DMA2D_ALPHA_INVERTED(hdma2d->Init.AlphaInverted));
251  assert_param(IS_DMA2D_RB_SWAP(hdma2d->Init.RedBlueSwap));
252 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
253  assert_param(IS_DMA2D_LOM_MODE(hdma2d->Init.LineOffsetMode));
254 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
255 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
256  assert_param(IS_DMA2D_BYTES_SWAP(hdma2d->Init.BytesSwap));
257 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
258 
259 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
260  if (hdma2d->State == HAL_DMA2D_STATE_RESET)
261  {
262  /* Reset Callback pointers in HAL_DMA2D_STATE_RESET only */
265  if(hdma2d->MspInitCallback == NULL)
266  {
268  }
269 
270  /* Init the low level hardware */
271  hdma2d->MspInitCallback(hdma2d);
272  }
273 #else
274  if(hdma2d->State == HAL_DMA2D_STATE_RESET)
275  {
276  /* Allocate lock resource and initialize it */
277  hdma2d->Lock = HAL_UNLOCKED;
278  /* Init the low level hardware */
279  HAL_DMA2D_MspInit(hdma2d);
280  }
281 #endif /* (USE_HAL_DMA2D_REGISTER_CALLBACKS) */
282 
283  /* Change DMA2D peripheral state */
284  hdma2d->State = HAL_DMA2D_STATE_BUSY;
285 
286  /* DMA2D CR register configuration -------------------------------------------*/
287 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
288  MODIFY_REG(hdma2d->Instance->CR, DMA2D_CR_MODE | DMA2D_CR_LOM, hdma2d->Init.Mode | hdma2d->Init.LineOffsetMode);
289 #else
290  MODIFY_REG(hdma2d->Instance->CR, DMA2D_CR_MODE, hdma2d->Init.Mode);
291 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
292 
293  /* DMA2D OPFCCR register configuration ---------------------------------------*/
294 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
295  MODIFY_REG(hdma2d->Instance->OPFCCR, DMA2D_OPFCCR_CM | DMA2D_OPFCCR_SB, hdma2d->Init.ColorMode | hdma2d->Init.BytesSwap);
296 #else
297  MODIFY_REG(hdma2d->Instance->OPFCCR, DMA2D_OPFCCR_CM, hdma2d->Init.ColorMode);
298 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
299 
300  /* DMA2D OOR register configuration ------------------------------------------*/
301  MODIFY_REG(hdma2d->Instance->OOR, DMA2D_OOR_LO, hdma2d->Init.OutputOffset);
302  /* DMA2D OPFCCR AI and RBS fields setting (Output Alpha Inversion)*/
303  MODIFY_REG(hdma2d->Instance->OPFCCR,(DMA2D_OPFCCR_AI|DMA2D_OPFCCR_RBS), ((hdma2d->Init.AlphaInverted << DMA2D_OPFCCR_AI_Pos) | (hdma2d->Init.RedBlueSwap << DMA2D_OPFCCR_RBS_Pos)));
304 
305 
306  /* Update error code */
307  hdma2d->ErrorCode = HAL_DMA2D_ERROR_NONE;
308 
309  /* Initialize the DMA2D state*/
310  hdma2d->State = HAL_DMA2D_STATE_READY;
311 
312  return HAL_OK;
313 }
void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef *hdma2d)
Initializes the DMA2D MSP.
void HAL_DMA2D_LineEventCallback(DMA2D_HandleTypeDef *hdma2d)
Transfer watermark callback.
return HAL_OK
__IO HAL_DMA2D_StateTypeDef State
void(* MspInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
void HAL_DMA2D_CLUTLoadingCpltCallback(DMA2D_HandleTypeDef *hdma2d)
CLUT Transfer Complete callback.
void(* LineEventCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* CLUTLoadingCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_DMA2D_MspDeInit()

__weak void HAL_DMA2D_MspDeInit ( DMA2D_HandleTypeDef hdma2d)

DeInitializes the DMA2D MSP.

Parameters
hdma2dpointer to a DMA2D_HandleTypeDef structure that contains the configuration information for the DMA2D.
Return values
None

Definition at line 429 of file stm32l4xx_hal_dma2d.c.

430 {
431  /* Prevent unused argument(s) compilation warning */
432  UNUSED(hdma2d);
433 
434  /* NOTE : This function should not be modified; when the callback is needed,
435  the HAL_DMA2D_MspDeInit can be implemented in the user file.
436  */
437 }

◆ HAL_DMA2D_MspInit()

__weak void HAL_DMA2D_MspInit ( DMA2D_HandleTypeDef hdma2d)

Initializes the DMA2D MSP.

Parameters
hdma2dpointer to a DMA2D_HandleTypeDef structure that contains the configuration information for the DMA2D.
Return values
None

Definition at line 413 of file stm32l4xx_hal_dma2d.c.

414 {
415  /* Prevent unused argument(s) compilation warning */
416  UNUSED(hdma2d);
417 
418  /* NOTE : This function should not be modified; when the callback is needed,
419  the HAL_DMA2D_MspInit can be implemented in the user file.
420  */
421 }

◆ HAL_DMA2D_RegisterCallback()

HAL_StatusTypeDef HAL_DMA2D_RegisterCallback ( DMA2D_HandleTypeDef hdma2d,
HAL_DMA2D_CallbackIDTypeDef  CallbackID,
pDMA2D_CallbackTypeDef  pCallback 
)

Register a User DMA2D Callback To be used instead of the weak (surcharged) predefined callback.

Parameters
hdma2dDMA2D handle
CallbackIDID of the callback to be registered This parameter can be one of the following values:
pCallbackpointer to the Callback function
Note
No weak predefined callbacks are defined for HAL_DMA2D_TRANSFERCOMPLETE_CB_ID or HAL_DMA2D_TRANSFERERROR_CB_ID
Return values
status

Definition at line 456 of file stm32l4xx_hal_dma2d.c.

457 {
458  HAL_StatusTypeDef status = HAL_OK;
459 
460  if(pCallback == NULL)
461  {
462  /* Update the error code */
463  hdma2d->ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
464  return HAL_ERROR;
465  }
466  /* Process locked */
467  __HAL_LOCK(hdma2d);
468 
469  if(HAL_DMA2D_STATE_READY == hdma2d->State)
470  {
471  switch (CallbackID)
472  {
474  hdma2d->XferCpltCallback = pCallback;
475  break;
476 
478  hdma2d->XferErrorCallback = pCallback;
479  break;
480 
482  hdma2d->LineEventCallback = pCallback;
483  break;
484 
486  hdma2d->CLUTLoadingCpltCallback = pCallback;
487  break;
488 
490  hdma2d->MspInitCallback = pCallback;
491  break;
492 
494  hdma2d->MspDeInitCallback = pCallback;
495  break;
496 
497  default :
498  /* Update the error code */
499  hdma2d->ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
500  /* update return status */
501  status = HAL_ERROR;
502  break;
503  }
504  }
505  else if(HAL_DMA2D_STATE_RESET == hdma2d->State)
506  {
507  switch (CallbackID)
508  {
510  hdma2d->MspInitCallback = pCallback;
511  break;
512 
514  hdma2d->MspDeInitCallback = pCallback;
515  break;
516 
517  default :
518  /* Update the error code */
519  hdma2d->ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
520  /* update return status */
521  status = HAL_ERROR;
522  break;
523  }
524  }
525  else
526  {
527  /* Update the error code */
528  hdma2d->ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
529  /* update return status */
530  status = HAL_ERROR;
531  }
532 
533  /* Release Lock */
534  __HAL_UNLOCK(hdma2d);
535  return status;
536 }
void(* MspDeInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
void(* XferErrorCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
return HAL_OK
__IO HAL_DMA2D_StateTypeDef State
void(* MspInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* XferCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* LineEventCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* CLUTLoadingCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)

◆ HAL_DMA2D_UnRegisterCallback()

HAL_StatusTypeDef HAL_DMA2D_UnRegisterCallback ( DMA2D_HandleTypeDef hdma2d,
HAL_DMA2D_CallbackIDTypeDef  CallbackID 
)

Unregister a DMA2D Callback DMA2D Callback is redirected to the weak (surcharged) predefined callback.

Parameters
hdma2dDMA2D handle
CallbackIDID of the callback to be unregistered This parameter can be one of the following values:
Note
No weak predefined callbacks are defined for HAL_DMA2D_TRANSFERCOMPLETE_CB_ID or HAL_DMA2D_TRANSFERERROR_CB_ID
Return values
status

Definition at line 553 of file stm32l4xx_hal_dma2d.c.

554 {
555 HAL_StatusTypeDef status = HAL_OK;
556 
557  /* Process locked */
558  __HAL_LOCK(hdma2d);
559 
560  if(HAL_DMA2D_STATE_READY == hdma2d->State)
561  {
562  switch (CallbackID)
563  {
565  hdma2d->XferCpltCallback = NULL;
566  break;
567 
569  hdma2d->XferErrorCallback = NULL;
570  break;
571 
574  break;
575 
578  break;
579 
581  hdma2d->MspInitCallback = HAL_DMA2D_MspInit; /* Legacy weak (surcharged) Msp Init */
582  break;
583 
585  hdma2d->MspDeInitCallback = HAL_DMA2D_MspDeInit; /* Legacy weak (surcharged) Msp DeInit */
586  break;
587 
588  default :
589  /* Update the error code */
590  hdma2d->ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
591  /* update return status */
592  status = HAL_ERROR;
593  break;
594  }
595  }
596  else if(HAL_DMA2D_STATE_RESET == hdma2d->State)
597  {
598  switch (CallbackID)
599  {
601  hdma2d->MspInitCallback = HAL_DMA2D_MspInit; /* Legacy weak (surcharged) Msp Init */
602  break;
603 
605  hdma2d->MspDeInitCallback = HAL_DMA2D_MspDeInit; /* Legacy weak (surcharged) Msp DeInit */
606  break;
607 
608  default :
609  /* Update the error code */
610  hdma2d->ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
611  /* update return status */
612  status = HAL_ERROR;
613  break;
614  }
615  }
616  else
617  {
618  /* Update the error code */
619  hdma2d->ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
620  /* update return status */
621  status = HAL_ERROR;
622  }
623 
624  /* Release Lock */
625  __HAL_UNLOCK(hdma2d);
626  return status;
627 }
void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef *hdma2d)
DeInitializes the DMA2D MSP.
void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef *hdma2d)
Initializes the DMA2D MSP.
void(* MspDeInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
void(* XferErrorCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void HAL_DMA2D_LineEventCallback(DMA2D_HandleTypeDef *hdma2d)
Transfer watermark callback.
return HAL_OK
__IO HAL_DMA2D_StateTypeDef State
void(* MspInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* XferCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void HAL_DMA2D_CLUTLoadingCpltCallback(DMA2D_HandleTypeDef *hdma2d)
CLUT Transfer Complete callback.
void(* LineEventCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* CLUTLoadingCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)