169#ifdef HAL_LTDC_MODULE_ENABLED
184#define LTDC_TIMEOUT_VALUE ((uint32_t)100U)
191static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx);
232 assert_param(IS_LTDC_HSYNC(hltdc->Init.HorizontalSync));
236 assert_param(IS_LTDC_AAH(hltdc->Init.AccumulatedActiveH));
237 assert_param(IS_LTDC_AAW(hltdc->Init.AccumulatedActiveW));
245#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
246 if (hltdc->State == HAL_LTDC_STATE_RESET)
252 hltdc->LineEventCallback = HAL_LTDC_LineEventCallback;
253 hltdc->ReloadEventCallback = HAL_LTDC_ReloadEventCallback;
254 hltdc->ErrorCallback = HAL_LTDC_ErrorCallback;
256 if (hltdc->MspInitCallback == NULL)
258 hltdc->MspInitCallback = HAL_LTDC_MspInit;
261 hltdc->MspInitCallback(hltdc);
264 if (hltdc->State == HAL_LTDC_STATE_RESET)
269 HAL_LTDC_MspInit(hltdc);
274 hltdc->State = HAL_LTDC_STATE_BUSY;
277 hltdc->Instance->GCR &= ~(LTDC_GCR_HSPOL | LTDC_GCR_VSPOL | LTDC_GCR_DEPOL | LTDC_GCR_PCPOL);
278 hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \
279 hltdc->Init.DEPolarity | hltdc->Init.PCPolarity);
282 tmp = (hltdc->Init.HorizontalSync << 16U);
283 WRITE_REG(hltdc->Instance->SSCR, (tmp | hltdc->Init.VerticalSync));
286 tmp = (hltdc->Init.AccumulatedHBP << 16U);
287 WRITE_REG(hltdc->Instance->BPCR, (tmp | hltdc->Init.AccumulatedVBP));
290 tmp = (hltdc->Init.AccumulatedActiveW << 16U);
291 WRITE_REG(hltdc->Instance->AWCR, (tmp | hltdc->Init.AccumulatedActiveH));
294 tmp = (hltdc->Init.TotalWidth << 16U);
295 WRITE_REG(hltdc->Instance->TWCR, (tmp | hltdc->Init.TotalHeigh));
298 tmp = ((uint32_t)(hltdc->Init.Backcolor.Green) << 8U);
299 tmp1 = ((uint32_t)(hltdc->Init.Backcolor.Red) << 16U);
300 hltdc->Instance->BCCR &= ~(LTDC_BCCR_BCBLUE | LTDC_BCCR_BCGREEN | LTDC_BCCR_BCRED);
301 hltdc->Instance->BCCR |= (tmp1 | tmp | hltdc->Init.Backcolor.Blue);
304 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_TE | LTDC_IT_FU);
307 __HAL_LTDC_ENABLE(hltdc);
310 hltdc->ErrorCode = HAL_LTDC_ERROR_NONE;
313 hltdc->State = HAL_LTDC_STATE_READY;
339 __HAL_LTDC_LAYER_DISABLE(hltdc, LTDC_LAYER_1);
341#if defined(LTDC_Layer2_BASE)
343 __HAL_LTDC_LAYER_DISABLE(hltdc, LTDC_LAYER_2);
347 __HAL_LTDC_VERTICAL_BLANKING_RELOAD_CONFIG(hltdc);
353 while (READ_BIT(hltdc->Instance->CDSR, LTDC_CDSR_VSYNCS) == 0U)
356 if ((
HAL_GetTick() - tickstart) > LTDC_TIMEOUT_VALUE)
363 __HAL_LTDC_DISABLE(hltdc);
365#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
366 if (hltdc->MspDeInitCallback == NULL)
368 hltdc->MspDeInitCallback = HAL_LTDC_MspDeInit;
371 hltdc->MspDeInitCallback(hltdc);
374 HAL_LTDC_MspDeInit(hltdc);
378 hltdc->ErrorCode = HAL_LTDC_ERROR_NONE;
381 hltdc->State = HAL_LTDC_STATE_RESET;
395__weak
void HAL_LTDC_MspInit(LTDC_HandleTypeDef *hltdc)
411__weak
void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef *hltdc)
421#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
436HAL_StatusTypeDef HAL_LTDC_RegisterCallback(LTDC_HandleTypeDef *hltdc, HAL_LTDC_CallbackIDTypeDef CallbackID,
437 pLTDC_CallbackTypeDef pCallback)
441 if (pCallback == NULL)
444 hltdc->ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
451 if (hltdc->State == HAL_LTDC_STATE_READY)
455 case HAL_LTDC_LINE_EVENT_CB_ID :
456 hltdc->LineEventCallback = pCallback;
459 case HAL_LTDC_RELOAD_EVENT_CB_ID :
460 hltdc->ReloadEventCallback = pCallback;
463 case HAL_LTDC_ERROR_CB_ID :
464 hltdc->ErrorCallback = pCallback;
467 case HAL_LTDC_MSPINIT_CB_ID :
468 hltdc->MspInitCallback = pCallback;
471 case HAL_LTDC_MSPDEINIT_CB_ID :
472 hltdc->MspDeInitCallback = pCallback;
477 hltdc->ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
483 else if (hltdc->State == HAL_LTDC_STATE_RESET)
487 case HAL_LTDC_MSPINIT_CB_ID :
488 hltdc->MspInitCallback = pCallback;
491 case HAL_LTDC_MSPDEINIT_CB_ID :
492 hltdc->MspDeInitCallback = pCallback;
497 hltdc->ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
506 hltdc->ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
530HAL_StatusTypeDef HAL_LTDC_UnRegisterCallback(LTDC_HandleTypeDef *hltdc, HAL_LTDC_CallbackIDTypeDef CallbackID)
537 if (hltdc->State == HAL_LTDC_STATE_READY)
541 case HAL_LTDC_LINE_EVENT_CB_ID :
542 hltdc->LineEventCallback = HAL_LTDC_LineEventCallback;
545 case HAL_LTDC_RELOAD_EVENT_CB_ID :
546 hltdc->ReloadEventCallback = HAL_LTDC_ReloadEventCallback;
549 case HAL_LTDC_ERROR_CB_ID :
550 hltdc->ErrorCallback = HAL_LTDC_ErrorCallback;
553 case HAL_LTDC_MSPINIT_CB_ID :
554 hltdc->MspInitCallback = HAL_LTDC_MspInit;
557 case HAL_LTDC_MSPDEINIT_CB_ID :
558 hltdc->MspDeInitCallback = HAL_LTDC_MspDeInit;
563 hltdc->ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
569 else if (hltdc->State == HAL_LTDC_STATE_RESET)
573 case HAL_LTDC_MSPINIT_CB_ID :
574 hltdc->MspInitCallback = HAL_LTDC_MspInit;
577 case HAL_LTDC_MSPDEINIT_CB_ID :
578 hltdc->MspDeInitCallback = HAL_LTDC_MspDeInit;
583 hltdc->ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
592 hltdc->ErrorCode |= HAL_LTDC_ERROR_INVALID_CALLBACK;
627void HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc)
629 uint32_t isrflags = READ_REG(hltdc->Instance->ISR);
630 uint32_t itsources = READ_REG(hltdc->Instance->IER);
633 if (((isrflags & LTDC_ISR_TERRIF) != 0U) && ((itsources & LTDC_IER_TERRIE) != 0U))
636 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_TE);
639 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_TE);
642 hltdc->ErrorCode |= HAL_LTDC_ERROR_TE;
645 hltdc->State = HAL_LTDC_STATE_ERROR;
651#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
653 hltdc->ErrorCallback(hltdc);
656 HAL_LTDC_ErrorCallback(hltdc);
661 if (((isrflags & LTDC_ISR_FUIF) != 0U) && ((itsources & LTDC_IER_FUIE) != 0U))
664 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_FU);
667 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_FU);
670 hltdc->ErrorCode |= HAL_LTDC_ERROR_FU;
673 hltdc->State = HAL_LTDC_STATE_ERROR;
679#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
681 hltdc->ErrorCallback(hltdc);
684 HAL_LTDC_ErrorCallback(hltdc);
689 if (((isrflags & LTDC_ISR_LIF) != 0U) && ((itsources & LTDC_IER_LIE) != 0U))
692 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI);
695 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_LI);
698 hltdc->State = HAL_LTDC_STATE_READY;
704#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
706 hltdc->LineEventCallback(hltdc);
709 HAL_LTDC_LineEventCallback(hltdc);
714 if (((isrflags & LTDC_ISR_RRIF) != 0U) && ((itsources & LTDC_IER_RRIE) != 0U))
717 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_RR);
720 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_RR);
723 hltdc->State = HAL_LTDC_STATE_READY;
729#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
731 hltdc->ReloadEventCallback(hltdc);
734 HAL_LTDC_ReloadEventCallback(hltdc);
745__weak
void HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc)
761__weak
void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc)
777__weak
void HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc)
827HAL_StatusTypeDef HAL_LTDC_ConfigLayer(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
835 assert_param(IS_LTDC_PIXEL_FORMAT(pLayerCfg->PixelFormat));
838 assert_param(IS_LTDC_BLENDING_FACTOR1(pLayerCfg->BlendingFactor1));
839 assert_param(IS_LTDC_BLENDING_FACTOR2(pLayerCfg->BlendingFactor2));
847 hltdc->State = HAL_LTDC_STATE_BUSY;
850 hltdc->LayerCfg[LayerIdx] = *pLayerCfg;
853 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
856 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
859 hltdc->State = HAL_LTDC_STATE_READY;
877HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx)
886 hltdc->State = HAL_LTDC_STATE_BUSY;
889 LTDC_LAYER(hltdc, LayerIdx)->CKCR &= ~(LTDC_LxCKCR_CKBLUE | LTDC_LxCKCR_CKGREEN | LTDC_LxCKCR_CKRED);
890 LTDC_LAYER(hltdc, LayerIdx)->CKCR = RGBValue;
893 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
896 hltdc->State = HAL_LTDC_STATE_READY;
915HAL_StatusTypeDef HAL_LTDC_ConfigCLUT(LTDC_HandleTypeDef *hltdc,
const uint32_t *pCLUT, uint32_t CLUTSize,
920 const uint32_t *pcolorlut = pCLUT;
928 hltdc->State = HAL_LTDC_STATE_BUSY;
930 for (counter = 0U; (counter < CLUTSize); counter++)
932 if (hltdc->LayerCfg[LayerIdx].PixelFormat == LTDC_PIXEL_FORMAT_AL44)
934 tmp = (((counter + (16U * counter)) << 24U) | ((uint32_t)(*pcolorlut) & 0xFFU) | \
935 ((uint32_t)(*pcolorlut) & 0xFF00U) | ((uint32_t)(*pcolorlut) & 0xFF0000U));
939 tmp = ((counter << 24U) | ((uint32_t)(*pcolorlut) & 0xFFU) | \
940 ((uint32_t)(*pcolorlut) & 0xFF00U) | ((uint32_t)(*pcolorlut) & 0xFF0000U));
946 LTDC_LAYER(hltdc, LayerIdx)->CLUTWR = tmp;
950 hltdc->State = HAL_LTDC_STATE_READY;
967HAL_StatusTypeDef HAL_LTDC_EnableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
976 hltdc->State = HAL_LTDC_STATE_BUSY;
979 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_COLKEN;
982 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
985 hltdc->State = HAL_LTDC_STATE_READY;
1002HAL_StatusTypeDef HAL_LTDC_DisableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
1011 hltdc->State = HAL_LTDC_STATE_BUSY;
1014 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_COLKEN;
1017 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1020 hltdc->State = HAL_LTDC_STATE_READY;
1037HAL_StatusTypeDef HAL_LTDC_EnableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
1046 hltdc->State = HAL_LTDC_STATE_BUSY;
1049 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_CLUTEN;
1052 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1055 hltdc->State = HAL_LTDC_STATE_READY;
1072HAL_StatusTypeDef HAL_LTDC_DisableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
1081 hltdc->State = HAL_LTDC_STATE_BUSY;
1084 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_CLUTEN;
1087 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1090 hltdc->State = HAL_LTDC_STATE_READY;
1111 hltdc->State = HAL_LTDC_STATE_BUSY;
1114 LTDC->GCR |= (uint32_t)LTDC_GCR_DEN;
1117 hltdc->State = HAL_LTDC_STATE_READY;
1138 hltdc->State = HAL_LTDC_STATE_BUSY;
1141 LTDC->GCR &= ~(uint32_t)LTDC_GCR_DEN;
1144 hltdc->State = HAL_LTDC_STATE_READY;
1163HAL_StatusTypeDef HAL_LTDC_SetWindowSize(LTDC_HandleTypeDef *hltdc, uint32_t XSize, uint32_t YSize, uint32_t LayerIdx)
1165 LTDC_LayerCfgTypeDef *pLayerCfg;
1176 hltdc->State = HAL_LTDC_STATE_BUSY;
1179 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1182 pLayerCfg->WindowX1 = XSize + pLayerCfg->WindowX0;
1185 pLayerCfg->WindowY1 = YSize + pLayerCfg->WindowY0;
1188 pLayerCfg->ImageWidth = XSize;
1191 pLayerCfg->ImageHeight = YSize;
1194 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1197 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1200 hltdc->State = HAL_LTDC_STATE_READY;
1219HAL_StatusTypeDef HAL_LTDC_SetWindowPosition(LTDC_HandleTypeDef *hltdc, uint32_t X0, uint32_t Y0, uint32_t LayerIdx)
1221 LTDC_LayerCfgTypeDef *pLayerCfg;
1232 hltdc->State = HAL_LTDC_STATE_BUSY;
1235 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1238 pLayerCfg->WindowX0 = X0;
1239 pLayerCfg->WindowX1 = X0 + pLayerCfg->ImageWidth;
1242 pLayerCfg->WindowY0 = Y0;
1243 pLayerCfg->WindowY1 = Y0 + pLayerCfg->ImageHeight;
1246 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1249 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1252 hltdc->State = HAL_LTDC_STATE_READY;
1270HAL_StatusTypeDef HAL_LTDC_SetPixelFormat(LTDC_HandleTypeDef *hltdc, uint32_t Pixelformat, uint32_t LayerIdx)
1272 LTDC_LayerCfgTypeDef *pLayerCfg;
1282 hltdc->State = HAL_LTDC_STATE_BUSY;
1285 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1288 pLayerCfg->PixelFormat = Pixelformat;
1291 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1294 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1297 hltdc->State = HAL_LTDC_STATE_READY;
1315HAL_StatusTypeDef HAL_LTDC_SetAlpha(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, uint32_t LayerIdx)
1317 LTDC_LayerCfgTypeDef *pLayerCfg;
1327 hltdc->State = HAL_LTDC_STATE_BUSY;
1330 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1333 pLayerCfg->Alpha = Alpha;
1336 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1339 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1342 hltdc->State = HAL_LTDC_STATE_READY;
1359HAL_StatusTypeDef HAL_LTDC_SetAddress(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx)
1361 LTDC_LayerCfgTypeDef *pLayerCfg;
1370 hltdc->State = HAL_LTDC_STATE_BUSY;
1373 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1376 pLayerCfg->FBStartAdress = Address;
1379 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1382 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
1385 hltdc->State = HAL_LTDC_STATE_READY;
1408HAL_StatusTypeDef HAL_LTDC_SetPitch(LTDC_HandleTypeDef *hltdc, uint32_t LinePitchInPixels, uint32_t LayerIdx)
1411 uint32_t pitchUpdate;
1412 uint32_t pixelFormat;
1421 hltdc->State = HAL_LTDC_STATE_BUSY;
1424 pixelFormat = hltdc->LayerCfg[LayerIdx].PixelFormat;
1426 if (pixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
1430 else if (pixelFormat == LTDC_PIXEL_FORMAT_RGB888)
1434 else if ((pixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
1435 (pixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
1436 (pixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
1437 (pixelFormat == LTDC_PIXEL_FORMAT_AL88))
1446 pitchUpdate = ((LinePitchInPixels * tmp) << 16U);
1449 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~LTDC_LxCFBLR_CFBP;
1452 LTDC->SRCR |= LTDC_SRCR_IMR;
1455 LTDC_LAYER(hltdc, LayerIdx)->CFBLR |= pitchUpdate;
1458 LTDC->SRCR |= LTDC_SRCR_IMR;
1461 hltdc->State = HAL_LTDC_STATE_READY;
1477HAL_StatusTypeDef HAL_LTDC_ProgramLineEvent(LTDC_HandleTypeDef *hltdc, uint32_t Line)
1486 hltdc->State = HAL_LTDC_STATE_BUSY;
1489 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI);
1492 LTDC->LIPCR = (uint32_t)Line;
1495 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_LI);
1498 hltdc->State = HAL_LTDC_STATE_READY;
1516HAL_StatusTypeDef HAL_LTDC_Reload(LTDC_HandleTypeDef *hltdc, uint32_t ReloadType)
1525 hltdc->State = HAL_LTDC_STATE_BUSY;
1528 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_RR);
1531 hltdc->Instance->SRCR = ReloadType;
1534 hltdc->State = HAL_LTDC_STATE_READY;
1555HAL_StatusTypeDef HAL_LTDC_ConfigLayer_NoReload(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg,
1564 assert_param(IS_LTDC_PIXEL_FORMAT(pLayerCfg->PixelFormat));
1567 assert_param(IS_LTDC_BLENDING_FACTOR1(pLayerCfg->BlendingFactor1));
1568 assert_param(IS_LTDC_BLENDING_FACTOR2(pLayerCfg->BlendingFactor2));
1576 hltdc->State = HAL_LTDC_STATE_BUSY;
1579 hltdc->LayerCfg[LayerIdx] = *pLayerCfg;
1582 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1585 hltdc->State = HAL_LTDC_STATE_READY;
1605HAL_StatusTypeDef HAL_LTDC_SetWindowSize_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t XSize, uint32_t YSize,
1608 LTDC_LayerCfgTypeDef *pLayerCfg;
1619 hltdc->State = HAL_LTDC_STATE_BUSY;
1622 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1625 pLayerCfg->WindowX1 = XSize + pLayerCfg->WindowX0;
1628 pLayerCfg->WindowY1 = YSize + pLayerCfg->WindowY0;
1631 pLayerCfg->ImageWidth = XSize;
1634 pLayerCfg->ImageHeight = YSize;
1637 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1640 hltdc->State = HAL_LTDC_STATE_READY;
1660HAL_StatusTypeDef HAL_LTDC_SetWindowPosition_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t X0, uint32_t Y0,
1663 LTDC_LayerCfgTypeDef *pLayerCfg;
1674 hltdc->State = HAL_LTDC_STATE_BUSY;
1677 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1680 pLayerCfg->WindowX0 = X0;
1681 pLayerCfg->WindowX1 = X0 + pLayerCfg->ImageWidth;
1684 pLayerCfg->WindowY0 = Y0;
1685 pLayerCfg->WindowY1 = Y0 + pLayerCfg->ImageHeight;
1688 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1691 hltdc->State = HAL_LTDC_STATE_READY;
1710HAL_StatusTypeDef HAL_LTDC_SetPixelFormat_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Pixelformat, uint32_t LayerIdx)
1712 LTDC_LayerCfgTypeDef *pLayerCfg;
1722 hltdc->State = HAL_LTDC_STATE_BUSY;
1725 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1728 pLayerCfg->PixelFormat = Pixelformat;
1731 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1734 hltdc->State = HAL_LTDC_STATE_READY;
1753HAL_StatusTypeDef HAL_LTDC_SetAlpha_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, uint32_t LayerIdx)
1755 LTDC_LayerCfgTypeDef *pLayerCfg;
1765 hltdc->State = HAL_LTDC_STATE_BUSY;
1768 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1771 pLayerCfg->Alpha = Alpha;
1774 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1777 hltdc->State = HAL_LTDC_STATE_READY;
1796HAL_StatusTypeDef HAL_LTDC_SetAddress_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx)
1798 LTDC_LayerCfgTypeDef *pLayerCfg;
1807 hltdc->State = HAL_LTDC_STATE_BUSY;
1810 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
1813 pLayerCfg->FBStartAdress = Address;
1816 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
1819 hltdc->State = HAL_LTDC_STATE_READY;
1843HAL_StatusTypeDef HAL_LTDC_SetPitch_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LinePitchInPixels, uint32_t LayerIdx)
1846 uint32_t pitchUpdate;
1847 uint32_t pixelFormat;
1856 hltdc->State = HAL_LTDC_STATE_BUSY;
1859 pixelFormat = hltdc->LayerCfg[LayerIdx].PixelFormat;
1861 if (pixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
1865 else if (pixelFormat == LTDC_PIXEL_FORMAT_RGB888)
1869 else if ((pixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
1870 (pixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
1871 (pixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
1872 (pixelFormat == LTDC_PIXEL_FORMAT_AL88))
1881 pitchUpdate = ((LinePitchInPixels * tmp) << 16U);
1884 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~LTDC_LxCFBLR_CFBP;
1887 LTDC_LAYER(hltdc, LayerIdx)->CFBLR |= pitchUpdate;
1890 hltdc->State = HAL_LTDC_STATE_READY;
1910HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx)
1919 hltdc->State = HAL_LTDC_STATE_BUSY;
1922 LTDC_LAYER(hltdc, LayerIdx)->CKCR &= ~(LTDC_LxCKCR_CKBLUE | LTDC_LxCKCR_CKGREEN | LTDC_LxCKCR_CKRED);
1923 LTDC_LAYER(hltdc, LayerIdx)->CKCR = RGBValue;
1926 hltdc->State = HAL_LTDC_STATE_READY;
1944HAL_StatusTypeDef HAL_LTDC_EnableColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
1953 hltdc->State = HAL_LTDC_STATE_BUSY;
1956 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_COLKEN;
1959 hltdc->State = HAL_LTDC_STATE_READY;
1977HAL_StatusTypeDef HAL_LTDC_DisableColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
1986 hltdc->State = HAL_LTDC_STATE_BUSY;
1989 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_COLKEN;
1992 hltdc->State = HAL_LTDC_STATE_READY;
2010HAL_StatusTypeDef HAL_LTDC_EnableCLUT_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
2019 hltdc->State = HAL_LTDC_STATE_BUSY;
2022 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_CLUTEN;
2025 hltdc->State = HAL_LTDC_STATE_READY;
2043HAL_StatusTypeDef HAL_LTDC_DisableCLUT_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
2052 hltdc->State = HAL_LTDC_STATE_BUSY;
2055 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_CLUTEN;
2058 hltdc->State = HAL_LTDC_STATE_READY;
2092HAL_LTDC_StateTypeDef HAL_LTDC_GetState(
const LTDC_HandleTypeDef *hltdc)
2094 return hltdc->State;
2103uint32_t HAL_LTDC_GetError(
const LTDC_HandleTypeDef *hltdc)
2105 return hltdc->ErrorCode;
2129static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
2136 tmp = ((pLayerCfg->WindowX1 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U)) << 16U);
2137 LTDC_LAYER(hltdc, LayerIdx)->WHPCR &= ~(LTDC_LxWHPCR_WHSTPOS | LTDC_LxWHPCR_WHSPPOS);
2138 LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + \
2139 ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U) + 1U) | tmp);
2142 tmp = ((pLayerCfg->WindowY1 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP)) << 16U);
2143 LTDC_LAYER(hltdc, LayerIdx)->WVPCR &= ~(LTDC_LxWVPCR_WVSTPOS | LTDC_LxWVPCR_WVSPPOS);
2144 LTDC_LAYER(hltdc, LayerIdx)->WVPCR = ((pLayerCfg->WindowY0 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP) + 1U) | tmp);
2147 LTDC_LAYER(hltdc, LayerIdx)->PFCR &= ~(LTDC_LxPFCR_PF);
2148 LTDC_LAYER(hltdc, LayerIdx)->PFCR = (pLayerCfg->PixelFormat);
2151 tmp = ((uint32_t)(pLayerCfg->Backcolor.Green) << 8U);
2152 tmp1 = ((uint32_t)(pLayerCfg->Backcolor.Red) << 16U);
2153 tmp2 = (pLayerCfg->Alpha0 << 24U);
2154 WRITE_REG(LTDC_LAYER(hltdc, LayerIdx)->DCCR, (pLayerCfg->Backcolor.Blue | tmp | tmp1 | tmp2));
2157 LTDC_LAYER(hltdc, LayerIdx)->CACR &= ~(LTDC_LxCACR_CONSTA);
2158 LTDC_LAYER(hltdc, LayerIdx)->CACR = (pLayerCfg->Alpha);
2161 LTDC_LAYER(hltdc, LayerIdx)->BFCR &= ~(LTDC_LxBFCR_BF2 | LTDC_LxBFCR_BF1);
2162 LTDC_LAYER(hltdc, LayerIdx)->BFCR = (pLayerCfg->BlendingFactor1 | pLayerCfg->BlendingFactor2);
2165 WRITE_REG(LTDC_LAYER(hltdc, LayerIdx)->CFBAR, pLayerCfg->FBStartAdress);
2167 if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
2171 else if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB888)
2175 else if ((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
2176 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
2177 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
2178 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_AL88))
2188 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~(LTDC_LxCFBLR_CFBLL | LTDC_LxCFBLR_CFBP);
2189 LTDC_LAYER(hltdc, LayerIdx)->CFBLR = (((pLayerCfg->ImageWidth * tmp) << 16U) | \
2190 (((pLayerCfg->WindowX1 - pLayerCfg->WindowX0) * tmp) + 3U));
2192 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR &= ~(LTDC_LxCFBLNR_CFBLNBR);
2193 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR = (pLayerCfg->ImageHeight);
2196 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_LEN;
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#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__)