169#ifdef HAL_LTDC_MODULE_ENABLED
184#define LTDC_TIMEOUT_VALUE ((uint32_t)100U)
245#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
256 if (hltdc->MspInitCallback == NULL)
261 hltdc->MspInitCallback(hltdc);
277 hltdc->
Instance->GCR &= ~(LTDC_GCR_HSPOL | LTDC_GCR_VSPOL | LTDC_GCR_DEPOL | LTDC_GCR_PCPOL);
282 hltdc->
Instance->SSCR &= ~(LTDC_SSCR_VSH | LTDC_SSCR_HSW);
287 hltdc->
Instance->BPCR &= ~(LTDC_BPCR_AVBP | LTDC_BPCR_AHBP);
292 hltdc->
Instance->AWCR &= ~(LTDC_AWCR_AAH | LTDC_AWCR_AAW);
297 hltdc->
Instance->TWCR &= ~(LTDC_TWCR_TOTALH | LTDC_TWCR_TOTALW);
304 hltdc->
Instance->BCCR &= ~(LTDC_BCCR_BCBLUE | LTDC_BCCR_BCGREEN | LTDC_BCCR_BCRED);
345#if defined(LTDC_Layer2_BASE)
357 while (READ_BIT(hltdc->
Instance->CDSR, LTDC_CDSR_VSYNCS) == 0U)
369#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
370 if (hltdc->MspDeInitCallback == NULL)
375 hltdc->MspDeInitCallback(hltdc);
425#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
441 pLTDC_CallbackTypeDef pCallback)
445 if (pCallback == NULL)
448 hltdc->
ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
459 case HAL_LTDC_LINE_EVENT_CB_ID :
460 hltdc->LineEventCallback = pCallback;
463 case HAL_LTDC_RELOAD_EVENT_CB_ID :
464 hltdc->ReloadEventCallback = pCallback;
467 case HAL_LTDC_ERROR_CB_ID :
468 hltdc->ErrorCallback = pCallback;
471 case HAL_LTDC_MSPINIT_CB_ID :
472 hltdc->MspInitCallback = pCallback;
475 case HAL_LTDC_MSPDEINIT_CB_ID :
476 hltdc->MspDeInitCallback = pCallback;
481 hltdc->
ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
491 case HAL_LTDC_MSPINIT_CB_ID :
492 hltdc->MspInitCallback = pCallback;
495 case HAL_LTDC_MSPDEINIT_CB_ID :
496 hltdc->MspDeInitCallback = pCallback;
501 hltdc->
ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
510 hltdc->
ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
545 case HAL_LTDC_LINE_EVENT_CB_ID :
549 case HAL_LTDC_RELOAD_EVENT_CB_ID :
553 case HAL_LTDC_ERROR_CB_ID :
557 case HAL_LTDC_MSPINIT_CB_ID :
561 case HAL_LTDC_MSPDEINIT_CB_ID :
567 hltdc->
ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
577 case HAL_LTDC_MSPINIT_CB_ID :
581 case HAL_LTDC_MSPDEINIT_CB_ID :
587 hltdc->
ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
596 hltdc->
ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
633 uint32_t isrflags = READ_REG(hltdc->
Instance->ISR);
634 uint32_t itsources = READ_REG(hltdc->
Instance->IER);
637 if (((isrflags & LTDC_ISR_TERRIF) != 0U) && ((itsources & LTDC_IER_TERRIE) != 0U))
655#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
657 hltdc->ErrorCallback(hltdc);
665 if (((isrflags & LTDC_ISR_FUIF) != 0U) && ((itsources & LTDC_IER_FUIE) != 0U))
683#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
685 hltdc->ErrorCallback(hltdc);
693 if (((isrflags & LTDC_ISR_LIF) != 0U) && ((itsources & LTDC_IER_LIE) != 0U))
708#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
710 hltdc->LineEventCallback(hltdc);
718 if (((isrflags & LTDC_ISR_RRIF) != 0U) && ((itsources & LTDC_IER_RRIE) != 0U))
733#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
735 hltdc->ReloadEventCallback(hltdc);
854 hltdc->
LayerCfg[LayerIdx] = *pLayerCfg;
860 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
893 LTDC_LAYER(hltdc, LayerIdx)->CKCR &= ~(LTDC_LxCKCR_CKBLUE | LTDC_LxCKCR_CKGREEN | LTDC_LxCKCR_CKRED);
897 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
923 uint32_t *pcolorlut = pCLUT;
933 for (counter = 0U; (counter < CLUTSize); counter++)
937 tmp = (((counter + (16U * counter)) << 24U) | ((uint32_t)(*pcolorlut) & 0xFFU) | \
938 ((uint32_t)(*pcolorlut) & 0xFF00U) | ((uint32_t)(*pcolorlut) & 0xFF0000U));
942 tmp = ((counter << 24U) | ((uint32_t)(*pcolorlut) & 0xFFU) | \
943 ((uint32_t)(*pcolorlut) & 0xFF00U) | ((uint32_t)(*pcolorlut) & 0xFF0000U));
982 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_COLKEN;
985 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1017 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_COLKEN;
1020 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1052 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_CLUTEN;
1055 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1087 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_CLUTEN;
1090 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1117 LTDC->GCR |= (uint32_t)LTDC_GCR_DEN;
1144 LTDC->GCR &= ~(uint32_t)LTDC_GCR_DEN;
1182 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1200 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1238 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1252 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1288 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1297 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1333 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1336 pLayerCfg->
Alpha = Alpha;
1342 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1376 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1385 hltdc->
Instance->SRCR = LTDC_SRCR_IMR;
1414 uint32_t pitchUpdate;
1415 uint32_t pixelFormat;
1449 pitchUpdate = ((LinePitchInPixels * tmp) << 16U);
1452 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~LTDC_LxCFBLR_CFBP;
1455 LTDC->SRCR |= LTDC_SRCR_IMR;
1458 LTDC_LAYER(hltdc, LayerIdx)->CFBLR |= pitchUpdate;
1461 LTDC->SRCR |= LTDC_SRCR_IMR;
1495 LTDC->LIPCR = (uint32_t)Line;
1534 hltdc->
Instance->SRCR = ReloadType;
1582 hltdc->
LayerCfg[LayerIdx] = *pLayerCfg;
1625 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1680 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1728 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1771 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1774 pLayerCfg->
Alpha = Alpha;
1813 pLayerCfg = &hltdc->
LayerCfg[LayerIdx];
1849 uint32_t pitchUpdate;
1850 uint32_t pixelFormat;
1884 pitchUpdate = ((LinePitchInPixels * tmp) << 16U);
1887 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~LTDC_LxCFBLR_CFBP;
1890 LTDC_LAYER(hltdc, LayerIdx)->CFBLR |= pitchUpdate;
1925 LTDC_LAYER(hltdc, LayerIdx)->CKCR &= ~(LTDC_LxCKCR_CKBLUE | LTDC_LxCKCR_CKGREEN | LTDC_LxCKCR_CKRED);
1926 LTDC_LAYER(hltdc, LayerIdx)->CKCR = RGBValue;
1959 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_COLKEN;
1992 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_COLKEN;
2025 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_CLUTEN;
2058 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_CLUTEN;
2097 return hltdc->
State;
2139 tmp = ((pLayerCfg->
WindowX1 + ((hltdc->
Instance->BPCR & LTDC_BPCR_AHBP) >> 16U)) << 16U);
2140 LTDC_LAYER(hltdc, LayerIdx)->WHPCR &= ~(LTDC_LxWHPCR_WHSTPOS | LTDC_LxWHPCR_WHSPPOS);
2142 ((hltdc->
Instance->BPCR & LTDC_BPCR_AHBP) >> 16U) + 1U) | tmp);
2145 tmp = ((pLayerCfg->
WindowY1 + (hltdc->
Instance->BPCR & LTDC_BPCR_AVBP)) << 16U);
2146 LTDC_LAYER(hltdc, LayerIdx)->WVPCR &= ~(LTDC_LxWVPCR_WVSTPOS | LTDC_LxWVPCR_WVSPPOS);
2150 LTDC_LAYER(hltdc, LayerIdx)->PFCR &= ~(LTDC_LxPFCR_PF);
2156 tmp2 = (pLayerCfg->
Alpha0 << 24U);
2157 LTDC_LAYER(hltdc, LayerIdx)->DCCR &= ~(LTDC_LxDCCR_DCBLUE | LTDC_LxDCCR_DCGREEN | LTDC_LxDCCR_DCRED |
2158 LTDC_LxDCCR_DCALPHA);
2162 LTDC_LAYER(hltdc, LayerIdx)->CACR &= ~(LTDC_LxCACR_CONSTA);
2166 LTDC_LAYER(hltdc, LayerIdx)->BFCR &= ~(LTDC_LxBFCR_BF2 | LTDC_LxBFCR_BF1);
2170 LTDC_LAYER(hltdc, LayerIdx)->CFBAR &= ~(LTDC_LxCFBAR_CFBADD);
2194 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~(LTDC_LxCFBLR_CFBLL | LTDC_LxCFBLR_CFBP);
2198 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR &= ~(LTDC_LxCFBLNR_CFBLNBR);
2202 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_LEN;
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define HAL_LTDC_ERROR_FU
#define HAL_LTDC_ERROR_TE
#define HAL_LTDC_ERROR_NONE
HAL_StatusTypeDef HAL_LTDC_Init(LTDC_HandleTypeDef *hltdc)
Initialize the LTDC according to the specified parameters in the LTDC_InitTypeDef.
void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef *hltdc)
De-initialize the LTDC MSP.
void HAL_LTDC_MspInit(LTDC_HandleTypeDef *hltdc)
Initialize the LTDC MSP.
HAL_StatusTypeDef HAL_LTDC_DeInit(LTDC_HandleTypeDef *hltdc)
De-initialize the LTDC peripheral.
__weak void HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc)
Reload Event callback.
void HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc)
Handle LTDC interrupt request.
__weak void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc)
Line Event callback.
__weak void HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc)
Error LTDC callback.
HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx)
Configure the color keying.
HAL_StatusTypeDef HAL_LTDC_DisableDither(LTDC_HandleTypeDef *hltdc)
Disable Dither.
HAL_StatusTypeDef HAL_LTDC_SetPixelFormat(LTDC_HandleTypeDef *hltdc, uint32_t Pixelformat, uint32_t LayerIdx)
Reconfigure the pixel format.
HAL_StatusTypeDef HAL_LTDC_EnableColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Enable the color keying without reloading. Variant of the function HAL_LTDC_EnableColorKeying without...
HAL_StatusTypeDef HAL_LTDC_SetAddress_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx)
Reconfigure the frame buffer Address without reloading. Variant of the function HAL_LTDC_SetAddress w...
HAL_StatusTypeDef HAL_LTDC_EnableDither(LTDC_HandleTypeDef *hltdc)
Enable Dither.
HAL_StatusTypeDef HAL_LTDC_SetAddress(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx)
Reconfigure the frame buffer Address.
HAL_StatusTypeDef HAL_LTDC_SetWindowPosition(LTDC_HandleTypeDef *hltdc, uint32_t X0, uint32_t Y0, uint32_t LayerIdx)
Set the LTDC window position.
HAL_StatusTypeDef HAL_LTDC_Reload(LTDC_HandleTypeDef *hltdc, uint32_t ReloadType)
Reload LTDC Layers configuration.
HAL_StatusTypeDef HAL_LTDC_ConfigLayer_NoReload(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
Configure the LTDC Layer according to the specified without reloading parameters in the LTDC_InitType...
HAL_StatusTypeDef HAL_LTDC_SetAlpha_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, uint32_t LayerIdx)
Reconfigure the layer alpha value without reloading. Variant of the function HAL_LTDC_SetAlpha withou...
HAL_StatusTypeDef HAL_LTDC_EnableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Enable the color lookup table.
HAL_StatusTypeDef HAL_LTDC_EnableCLUT_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Enable the color lookup table without reloading. Variant of the function HAL_LTDC_EnableCLUT without ...
HAL_StatusTypeDef HAL_LTDC_DisableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Disable the color keying.
HAL_StatusTypeDef HAL_LTDC_ConfigLayer(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
Configure the LTDC Layer according to the specified parameters in the LTDC_InitTypeDef and create the...
HAL_StatusTypeDef HAL_LTDC_SetPitch(LTDC_HandleTypeDef *hltdc, uint32_t LinePitchInPixels, uint32_t LayerIdx)
Function used to reconfigure the pitch for specific cases where the attached LayerIdx buffer have a w...
HAL_StatusTypeDef HAL_LTDC_SetAlpha(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, uint32_t LayerIdx)
Reconfigure the layer alpha value.
HAL_StatusTypeDef HAL_LTDC_EnableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Enable the color keying.
HAL_StatusTypeDef HAL_LTDC_SetWindowPosition_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t X0, uint32_t Y0, uint32_t LayerIdx)
Set the LTDC window position without reloading. Variant of the function HAL_LTDC_SetWindowPosition wi...
HAL_StatusTypeDef HAL_LTDC_ProgramLineEvent(LTDC_HandleTypeDef *hltdc, uint32_t Line)
Define the position of the line interrupt.
HAL_StatusTypeDef HAL_LTDC_SetWindowSize_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t XSize, uint32_t YSize, uint32_t LayerIdx)
Set the LTDC window size without reloading. Variant of the function HAL_LTDC_SetWindowSize without im...
HAL_StatusTypeDef HAL_LTDC_DisableColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Disable the color keying without reloading. Variant of the function HAL_LTDC_DisableColorKeying witho...
HAL_StatusTypeDef HAL_LTDC_SetPixelFormat_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Pixelformat, uint32_t LayerIdx)
Reconfigure the pixel format without reloading. Variant of the function HAL_LTDC_SetPixelFormat witho...
HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx)
Configure the color keying without reloading. Variant of the function HAL_LTDC_ConfigColorKeying with...
HAL_StatusTypeDef HAL_LTDC_ConfigCLUT(LTDC_HandleTypeDef *hltdc, uint32_t *pCLUT, uint32_t CLUTSize, uint32_t LayerIdx)
Load the color lookup table.
HAL_StatusTypeDef HAL_LTDC_SetPitch_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LinePitchInPixels, uint32_t LayerIdx)
Function used to reconfigure the pitch for specific cases where the attached LayerIdx buffer have a w...
HAL_StatusTypeDef HAL_LTDC_DisableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Disable the color lookup table.
HAL_StatusTypeDef HAL_LTDC_DisableCLUT_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
Disable the color lookup table without reloading. Variant of the function HAL_LTDC_DisableCLUT withou...
HAL_StatusTypeDef HAL_LTDC_SetWindowSize(LTDC_HandleTypeDef *hltdc, uint32_t XSize, uint32_t YSize, uint32_t LayerIdx)
Set the LTDC window size.
HAL_LTDC_StateTypeDef HAL_LTDC_GetState(LTDC_HandleTypeDef *hltdc)
Return the LTDC handle state.
uint32_t HAL_LTDC_GetError(LTDC_HandleTypeDef *hltdc)
Return the LTDC handle error code.
#define __HAL_LTDC_VERTICAL_BLANKING_RELOAD_CONFIG(__HANDLE__)
Reload during vertical blanking period all LTDC Layers.
#define __HAL_LTDC_LAYER_DISABLE(__HANDLE__, __LAYER__)
Disable the LTDC Layer.
#define __HAL_LTDC_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disables the specified LTDC interrupts.
#define __HAL_LTDC_ENABLE(__HANDLE__)
Enable the LTDC.
#define __HAL_LTDC_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clears the LTDC pending flags.
#define __HAL_LTDC_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enables the specified LTDC interrupts.
#define __HAL_LTDC_DISABLE(__HANDLE__)
Disable the LTDC.
HAL_LTDC_StateTypeDef
HAL LTDC State structures definition.
#define LTDC_TIMEOUT_VALUE
#define IS_LTDC_BLENDING_FACTOR2(__BLENDING_FACTOR1__)
#define IS_LTDC_VSYNC(__VSYNC__)
#define IS_LTDC_PCPOL(__PCPOL__)
#define IS_LTDC_AHBP(__AHBP__)
#define IS_LTDC_TOTALH(__TOTALH__)
#define IS_LTDC_CFBLNBR(__CFBLNBR__)
#define IS_LTDC_VSPOL(__VSPOL__)
#define IS_LTDC_HCONFIGSP(__HCONFIGSP__)
#define IS_LTDC_BLENDING_FACTOR1(__BLENDING_FACTOR1__)
#define IS_LTDC_DEPOL(__DEPOL__)
#define IS_LTDC_AAH(__AAH__)
#define IS_LTDC_VCONFIGSP(__VCONFIGSP__)
#define IS_LTDC_ALPHA(__ALPHA__)
#define IS_LTDC_HSPOL(__HSPOL__)
#define LTDC_LAYER(__HANDLE__, __LAYER__)
#define IS_LTDC_RELOAD(__RELOADTYPE__)
#define IS_LTDC_CFBLL(__CFBLL__)
#define IS_LTDC_PIXEL_FORMAT(__PIXEL_FORMAT__)
#define IS_LTDC_LIPOS(__LIPOS__)
#define IS_LTDC_HSYNC(__HSYNC__)
#define IS_LTDC_HCONFIGST(__HCONFIGST__)
#define IS_LTDC_AAW(__AAW__)
#define IS_LTDC_LAYER(__LAYER__)
#define IS_LTDC_TOTALW(__TOTALW__)
#define IS_LTDC_VCONFIGST(__VCONFIGST__)
#define IS_LTDC_AVBP(__AVBP__)
static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
Configure the LTDC peripheral.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
LTDC handle Structure definition.
__IO HAL_LTDC_StateTypeDef State
LTDC_LayerCfgTypeDef LayerCfg[MAX_LAYER]
LTDC_ColorTypeDef Backcolor
uint32_t AccumulatedActiveW
uint32_t AccumulatedActiveH
LTDC Layer structure definition.
LTDC_ColorTypeDef Backcolor