166 #ifdef HAL_DMA2D_MODULE_ENABLED
187 #define DMA2D_TIMEOUT_ABORT (1000U)
188 #define DMA2D_TIMEOUT_SUSPEND (1000U)
204 static void DMA2D_SetConfig(
DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width,
247 assert_param(IS_DMA2D_ALL_INSTANCE(hdma2d->
Instance));
248 assert_param(IS_DMA2D_MODE(hdma2d->
Init.
Mode));
252 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
270 hdma2d->
Lock = HAL_UNLOCKED;
290 hdma2d->
ErrorCode = HAL_DMA2D_ERROR_NONE;
317 if (__HAL_RCC_DMA2D_IS_CLK_ENABLED())
320 if ((hdma2d->
Instance->CR & DMA2D_CR_START) == DMA2D_CR_START)
331 if ((hdma2d->
Instance->BGPFCCR & DMA2D_BGPFCCR_START) == DMA2D_BGPFCCR_START)
342 if ((hdma2d->
Instance->FGPFCCR & DMA2D_FGPFCCR_START) == DMA2D_FGPFCCR_START)
363 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
379 hdma2d->
ErrorCode = HAL_DMA2D_ERROR_NONE;
385 __HAL_UNLOCK(hdma2d);
422 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
442 HAL_StatusTypeDef status = HAL_OK;
444 if (pCallback == NULL)
447 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
483 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
503 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
512 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
518 __HAL_UNLOCK(hdma2d);
539 HAL_StatusTypeDef status = HAL_OK;
574 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
594 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
603 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_INVALID_CALLBACK;
609 __HAL_UNLOCK(hdma2d);
672 assert_param(IS_DMA2D_LINE(Height));
673 assert_param(IS_DMA2D_PIXEL(Width));
682 DMA2D_SetConfig(hdma2d, pdata, DstAddress, Width, Height);
685 __HAL_DMA2D_ENABLE(hdma2d);
708 assert_param(IS_DMA2D_LINE(Height));
709 assert_param(IS_DMA2D_PIXEL(Width));
718 DMA2D_SetConfig(hdma2d, pdata, DstAddress, Width, Height);
721 __HAL_DMA2D_ENABLE_IT(hdma2d, DMA2D_IT_TC | DMA2D_IT_TE | DMA2D_IT_CE);
724 __HAL_DMA2D_ENABLE(hdma2d);
742 uint32_t DstAddress, uint32_t Width, uint32_t Height)
745 assert_param(IS_DMA2D_LINE(Height));
746 assert_param(IS_DMA2D_PIXEL(Width));
755 WRITE_REG(hdma2d->
Instance->BGMAR, SrcAddress2);
758 DMA2D_SetConfig(hdma2d, SrcAddress1, DstAddress, Width, Height);
761 __HAL_DMA2D_ENABLE(hdma2d);
779 uint32_t DstAddress, uint32_t Width, uint32_t Height)
782 assert_param(IS_DMA2D_LINE(Height));
783 assert_param(IS_DMA2D_PIXEL(Width));
792 WRITE_REG(hdma2d->
Instance->BGMAR, SrcAddress2);
795 DMA2D_SetConfig(hdma2d, SrcAddress1, DstAddress, Width, Height);
798 __HAL_DMA2D_ENABLE_IT(hdma2d, DMA2D_IT_TC | DMA2D_IT_TE | DMA2D_IT_CE);
801 __HAL_DMA2D_ENABLE(hdma2d);
820 MODIFY_REG(hdma2d->
Instance->CR, DMA2D_CR_ABORT | DMA2D_CR_START, DMA2D_CR_ABORT);
826 while ((hdma2d->
Instance->CR & DMA2D_CR_START) != 0U)
828 if ((
HAL_GetTick() - tickstart) > DMA2D_TIMEOUT_ABORT)
831 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
837 __HAL_UNLOCK(hdma2d);
844 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_TC | DMA2D_IT_TE | DMA2D_IT_CE);
850 __HAL_UNLOCK(hdma2d);
869 MODIFY_REG(hdma2d->
Instance->CR, DMA2D_CR_SUSP | DMA2D_CR_START, DMA2D_CR_SUSP);
875 while ((hdma2d->
Instance->CR & (DMA2D_CR_SUSP | DMA2D_CR_START)) == DMA2D_CR_START)
877 if ((
HAL_GetTick() - tickstart) > DMA2D_TIMEOUT_SUSPEND)
880 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
890 if ((hdma2d->
Instance->CR & DMA2D_CR_START) != 0U)
898 CLEAR_BIT(hdma2d->
Instance->CR, DMA2D_CR_SUSP);
913 if ((hdma2d->
Instance->CR & (DMA2D_CR_SUSP | DMA2D_CR_START)) == (DMA2D_CR_SUSP | DMA2D_CR_START))
923 CLEAR_BIT(hdma2d->
Instance->CR, (DMA2D_CR_SUSP | DMA2D_CR_START));
941 assert_param(IS_DMA2D_LAYER(LayerIdx));
949 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
952 SET_BIT(hdma2d->
Instance->BGPFCCR, DMA2D_BGPFCCR_START);
957 SET_BIT(hdma2d->
Instance->FGPFCCR, DMA2D_FGPFCCR_START);
977 assert_param(IS_DMA2D_LAYER(LayerIdx));
979 assert_param(IS_DMA2D_CLUT_SIZE(CLUTCfg->
Size));
988 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
991 WRITE_REG(hdma2d->
Instance->BGCMAR, (uint32_t)CLUTCfg->
pCLUT);
994 MODIFY_REG(hdma2d->
Instance->BGPFCCR, (DMA2D_BGPFCCR_CS | DMA2D_BGPFCCR_CCM),
995 ((CLUTCfg->
Size << DMA2D_BGPFCCR_CS_Pos) | (CLUTCfg->
CLUTColorMode << DMA2D_BGPFCCR_CCM_Pos)));
998 SET_BIT(hdma2d->
Instance->BGPFCCR, DMA2D_BGPFCCR_START);
1004 WRITE_REG(hdma2d->
Instance->FGCMAR, (uint32_t)CLUTCfg->
pCLUT);
1007 MODIFY_REG(hdma2d->
Instance->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM),
1008 ((CLUTCfg->
Size << DMA2D_FGPFCCR_CS_Pos) | (CLUTCfg->
CLUTColorMode << DMA2D_FGPFCCR_CCM_Pos)));
1011 SET_BIT(hdma2d->
Instance->FGPFCCR, DMA2D_FGPFCCR_START);
1032 assert_param(IS_DMA2D_LAYER(LayerIdx));
1034 assert_param(IS_DMA2D_CLUT_SIZE(CLUTCfg->
Size));
1043 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
1046 WRITE_REG(hdma2d->
Instance->BGCMAR, (uint32_t)CLUTCfg->
pCLUT);
1049 MODIFY_REG(hdma2d->
Instance->BGPFCCR, (DMA2D_BGPFCCR_CS | DMA2D_BGPFCCR_CCM),
1050 ((CLUTCfg->
Size << DMA2D_BGPFCCR_CS_Pos) | (CLUTCfg->
CLUTColorMode << DMA2D_BGPFCCR_CCM_Pos)));
1053 __HAL_DMA2D_ENABLE_IT(hdma2d, DMA2D_IT_CTC | DMA2D_IT_TE | DMA2D_IT_CE | DMA2D_IT_CAE);
1056 SET_BIT(hdma2d->
Instance->BGPFCCR, DMA2D_BGPFCCR_START);
1062 WRITE_REG(hdma2d->
Instance->FGCMAR, (uint32_t)CLUTCfg->
pCLUT);
1065 MODIFY_REG(hdma2d->
Instance->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM),
1066 ((CLUTCfg->
Size << DMA2D_FGPFCCR_CS_Pos) | (CLUTCfg->
CLUTColorMode << DMA2D_FGPFCCR_CCM_Pos)));
1069 __HAL_DMA2D_ENABLE_IT(hdma2d, DMA2D_IT_CTC | DMA2D_IT_TE | DMA2D_IT_CE | DMA2D_IT_CAE);
1072 SET_BIT(hdma2d->
Instance->FGPFCCR, DMA2D_FGPFCCR_START);
1095 assert_param(IS_DMA2D_LAYER(LayerIdx));
1097 assert_param(IS_DMA2D_CLUT_SIZE(CLUTCfg.
Size));
1106 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
1109 WRITE_REG(hdma2d->
Instance->BGCMAR, (uint32_t)CLUTCfg.
pCLUT);
1112 MODIFY_REG(hdma2d->
Instance->BGPFCCR, (DMA2D_BGPFCCR_CS | DMA2D_BGPFCCR_CCM),
1113 ((CLUTCfg.
Size << DMA2D_BGPFCCR_CS_Pos) | (CLUTCfg.
CLUTColorMode << DMA2D_BGPFCCR_CCM_Pos)));
1116 SET_BIT(hdma2d->
Instance->BGPFCCR, DMA2D_BGPFCCR_START);
1122 WRITE_REG(hdma2d->
Instance->FGCMAR, (uint32_t)CLUTCfg.
pCLUT);
1125 MODIFY_REG(hdma2d->
Instance->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM),
1126 ((CLUTCfg.
Size << DMA2D_FGPFCCR_CS_Pos) | (CLUTCfg.
CLUTColorMode << DMA2D_FGPFCCR_CCM_Pos)));
1129 SET_BIT(hdma2d->
Instance->FGPFCCR, DMA2D_FGPFCCR_START);
1152 assert_param(IS_DMA2D_LAYER(LayerIdx));
1154 assert_param(IS_DMA2D_CLUT_SIZE(CLUTCfg.
Size));
1163 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
1166 WRITE_REG(hdma2d->
Instance->BGCMAR, (uint32_t)CLUTCfg.
pCLUT);
1169 MODIFY_REG(hdma2d->
Instance->BGPFCCR, (DMA2D_BGPFCCR_CS | DMA2D_BGPFCCR_CCM),
1170 ((CLUTCfg.
Size << DMA2D_BGPFCCR_CS_Pos) | (CLUTCfg.
CLUTColorMode << DMA2D_BGPFCCR_CCM_Pos)));
1173 __HAL_DMA2D_ENABLE_IT(hdma2d, DMA2D_IT_CTC | DMA2D_IT_TE | DMA2D_IT_CE | DMA2D_IT_CAE);
1176 SET_BIT(hdma2d->
Instance->BGPFCCR, DMA2D_BGPFCCR_START);
1182 WRITE_REG(hdma2d->
Instance->FGCMAR, (uint32_t)CLUTCfg.
pCLUT);
1185 MODIFY_REG(hdma2d->
Instance->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM),
1186 ((CLUTCfg.
Size << DMA2D_FGPFCCR_CS_Pos) | (CLUTCfg.
CLUTColorMode << DMA2D_FGPFCCR_CCM_Pos)));
1189 __HAL_DMA2D_ENABLE_IT(hdma2d, DMA2D_IT_CTC | DMA2D_IT_TE | DMA2D_IT_CE | DMA2D_IT_CAE);
1192 SET_BIT(hdma2d->
Instance->FGPFCCR, DMA2D_FGPFCCR_START);
1210 const __IO uint32_t *reg = &(hdma2d->
Instance->BGPFCCR);
1213 SET_BIT(hdma2d->
Instance->CR, DMA2D_CR_ABORT);
1216 if (LayerIdx == DMA2D_FOREGROUND_LAYER)
1218 reg = &(hdma2d->
Instance->FGPFCCR);
1226 while ((*reg & DMA2D_BGPFCCR_START) != 0U)
1228 if ((
HAL_GetTick() - tickstart) > DMA2D_TIMEOUT_ABORT)
1231 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
1237 __HAL_UNLOCK(hdma2d);
1244 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_CTC | DMA2D_IT_TE | DMA2D_IT_CE | DMA2D_IT_CAE);
1250 __HAL_UNLOCK(hdma2d);
1267 uint32_t loadsuspended;
1268 const __IO uint32_t *reg = &(hdma2d->
Instance->BGPFCCR);
1271 SET_BIT(hdma2d->
Instance->CR, DMA2D_CR_SUSP);
1274 if (LayerIdx == DMA2D_FOREGROUND_LAYER)
1276 reg = &(hdma2d->
Instance->FGPFCCR);
1284 loadsuspended = ((hdma2d->
Instance->CR & DMA2D_CR_SUSP) == DMA2D_CR_SUSP) ? 1UL : 0UL;
1286 loadsuspended |= ((*reg & DMA2D_BGPFCCR_START) != DMA2D_BGPFCCR_START) ? 1UL : 0UL;
1287 while (loadsuspended == 0UL)
1289 if ((
HAL_GetTick() - tickstart) > DMA2D_TIMEOUT_SUSPEND)
1292 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
1300 loadsuspended = ((hdma2d->
Instance->CR & DMA2D_CR_SUSP) == DMA2D_CR_SUSP) ? 1UL : 0UL;
1302 loadsuspended |= ((*reg & DMA2D_BGPFCCR_START) != DMA2D_BGPFCCR_START) ? 1UL : 0UL;
1306 if ((*reg & DMA2D_BGPFCCR_START) != 0U)
1314 CLEAR_BIT(hdma2d->
Instance->CR, DMA2D_CR_SUSP);
1332 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
1335 if ((hdma2d->
Instance->CR & DMA2D_CR_SUSP) == DMA2D_CR_SUSP)
1337 if ((hdma2d->
Instance->BGPFCCR & DMA2D_BGPFCCR_START) == DMA2D_BGPFCCR_START)
1347 if ((hdma2d->
Instance->CR & DMA2D_CR_SUSP) == DMA2D_CR_SUSP)
1349 if ((hdma2d->
Instance->FGPFCCR & DMA2D_FGPFCCR_START) == DMA2D_FGPFCCR_START)
1358 CLEAR_BIT(hdma2d->
Instance->CR, DMA2D_CR_SUSP);
1375 uint32_t layer_start;
1376 __IO uint32_t isrflags = 0x0U;
1379 if ((hdma2d->
Instance->CR & DMA2D_CR_START) != 0U)
1384 while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_TC) == 0U)
1386 isrflags = READ_REG(hdma2d->
Instance->ISR);
1387 if ((isrflags & (DMA2D_FLAG_CE | DMA2D_FLAG_TE)) != 0U)
1389 if ((isrflags & DMA2D_FLAG_CE) != 0U)
1391 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_CE;
1393 if ((isrflags & DMA2D_FLAG_TE) != 0U)
1395 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TE;
1398 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CE | DMA2D_FLAG_TE);
1404 __HAL_UNLOCK(hdma2d);
1409 if (Timeout != HAL_MAX_DELAY)
1411 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1414 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
1420 __HAL_UNLOCK(hdma2d);
1428 layer_start = hdma2d->
Instance->FGPFCCR & DMA2D_FGPFCCR_START;
1429 layer_start |= hdma2d->
Instance->BGPFCCR & DMA2D_BGPFCCR_START;
1430 if (layer_start != 0U)
1435 while (__HAL_DMA2D_GET_FLAG(hdma2d, DMA2D_FLAG_CTC) == 0U)
1437 isrflags = READ_REG(hdma2d->
Instance->ISR);
1438 if ((isrflags & (DMA2D_FLAG_CAE | DMA2D_FLAG_CE | DMA2D_FLAG_TE)) != 0U)
1440 if ((isrflags & DMA2D_FLAG_CAE) != 0U)
1442 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_CAE;
1444 if ((isrflags & DMA2D_FLAG_CE) != 0U)
1446 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_CE;
1448 if ((isrflags & DMA2D_FLAG_TE) != 0U)
1450 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TE;
1453 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CAE | DMA2D_FLAG_CE | DMA2D_FLAG_TE);
1459 __HAL_UNLOCK(hdma2d);
1464 if (Timeout != HAL_MAX_DELAY)
1466 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1469 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
1475 __HAL_UNLOCK(hdma2d);
1484 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TC | DMA2D_FLAG_CTC);
1490 __HAL_UNLOCK(hdma2d);
1502 uint32_t isrflags = READ_REG(hdma2d->
Instance->ISR);
1503 uint32_t crflags = READ_REG(hdma2d->
Instance->CR);
1506 if ((isrflags & DMA2D_FLAG_TE) != 0U)
1508 if ((crflags & DMA2D_IT_TE) != 0U)
1511 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_TE);
1514 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_TE;
1517 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TE);
1523 __HAL_UNLOCK(hdma2d);
1533 if ((isrflags & DMA2D_FLAG_CE) != 0U)
1535 if ((crflags & DMA2D_IT_CE) != 0U)
1538 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_CE);
1541 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CE);
1544 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_CE;
1550 __HAL_UNLOCK(hdma2d);
1560 if ((isrflags & DMA2D_FLAG_CAE) != 0U)
1562 if ((crflags & DMA2D_IT_CAE) != 0U)
1565 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_CAE);
1568 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CAE);
1571 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_CAE;
1577 __HAL_UNLOCK(hdma2d);
1587 if ((isrflags & DMA2D_FLAG_TW) != 0U)
1589 if ((crflags & DMA2D_IT_TW) != 0U)
1592 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_TW);
1595 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TW);
1598 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
1607 if ((isrflags & DMA2D_FLAG_TC) != 0U)
1609 if ((crflags & DMA2D_IT_TC) != 0U)
1612 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_TC);
1615 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TC);
1618 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_NONE;
1624 __HAL_UNLOCK(hdma2d);
1634 if ((isrflags & DMA2D_FLAG_CTC) != 0U)
1636 if ((crflags & DMA2D_IT_CTC) != 0U)
1639 __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_CTC);
1642 __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CTC);
1645 hdma2d->
ErrorCode |= HAL_DMA2D_ERROR_NONE;
1651 __HAL_UNLOCK(hdma2d);
1654 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
1736 assert_param(IS_DMA2D_LAYER(LayerIdx));
1738 if (hdma2d->
Init.
Mode != DMA2D_R2M)
1741 if (hdma2d->
Init.
Mode != DMA2D_M2M)
1753 pLayerCfg = &hdma2d->
LayerCfg[LayerIdx];
1757 regMask = DMA2D_BGPFCCR_CM | DMA2D_BGPFCCR_AM | DMA2D_BGPFCCR_ALPHA;
1762 regValue |= (pLayerCfg->
InputAlpha & DMA2D_BGPFCCR_ALPHA);
1766 regValue |= (pLayerCfg->
InputAlpha << DMA2D_BGPFCCR_ALPHA_Pos);
1770 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
1773 MODIFY_REG(hdma2d->
Instance->BGPFCCR, regMask, regValue);
1781 WRITE_REG(hdma2d->
Instance->BGCOLR, pLayerCfg->
InputAlpha & (DMA2D_BGCOLR_BLUE | DMA2D_BGCOLR_GREEN | \
1791 MODIFY_REG(hdma2d->
Instance->FGPFCCR, regMask, regValue);
1799 WRITE_REG(hdma2d->
Instance->FGCOLR, pLayerCfg->
InputAlpha & (DMA2D_FGCOLR_BLUE | DMA2D_FGCOLR_GREEN | \
1807 __HAL_UNLOCK(hdma2d);
1829 assert_param(IS_DMA2D_LAYER(LayerIdx));
1831 assert_param(IS_DMA2D_CLUT_SIZE(CLUTCfg.
Size));
1840 if (LayerIdx == DMA2D_BACKGROUND_LAYER)
1843 WRITE_REG(hdma2d->
Instance->BGCMAR, (uint32_t)CLUTCfg.
pCLUT);
1846 MODIFY_REG(hdma2d->
Instance->BGPFCCR, (DMA2D_BGPFCCR_CS | DMA2D_BGPFCCR_CCM),
1847 ((CLUTCfg.
Size << DMA2D_BGPFCCR_CS_Pos) | (CLUTCfg.
CLUTColorMode << DMA2D_BGPFCCR_CCM_Pos)));
1853 WRITE_REG(hdma2d->
Instance->FGCMAR, (uint32_t)CLUTCfg.
pCLUT);
1856 MODIFY_REG(hdma2d->
Instance->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM),
1857 ((CLUTCfg.
Size << DMA2D_FGPFCCR_CS_Pos) | (CLUTCfg.
CLUTColorMode << DMA2D_FGPFCCR_CCM_Pos)));
1864 __HAL_UNLOCK(hdma2d);
1883 if (Line > DMA2D_LWR_LW)
1896 WRITE_REG(hdma2d->
Instance->LWR, Line);
1899 __HAL_DMA2D_ENABLE_IT(hdma2d, DMA2D_IT_TW);
1905 __HAL_UNLOCK(hdma2d);
1924 SET_BIT(hdma2d->
Instance->AMTCR, DMA2D_AMTCR_EN);
1929 __HAL_UNLOCK(hdma2d);
1947 CLEAR_BIT(hdma2d->
Instance->AMTCR, DMA2D_AMTCR_EN);
1952 __HAL_UNLOCK(hdma2d);
1973 MODIFY_REG(hdma2d->
Instance->AMTCR, DMA2D_AMTCR_DT, (((uint32_t) DeadTime) << DMA2D_AMTCR_DT_Pos));
1978 __HAL_UNLOCK(hdma2d);
2012 return hdma2d->
State;
2049 static void DMA2D_SetConfig(
DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width,
2059 MODIFY_REG(hdma2d->
Instance->NLR, (DMA2D_NLR_NL | DMA2D_NLR_PL), (Height | (Width << DMA2D_NLR_PL_Pos)));
2062 WRITE_REG(hdma2d->
Instance->OMAR, DstAddress);
2065 if (hdma2d->
Init.
Mode == DMA2D_R2M)
2067 tmp1 = pdata & DMA2D_OCOLR_ALPHA_1;
2068 tmp2 = pdata & DMA2D_OCOLR_RED_1;
2069 tmp3 = pdata & DMA2D_OCOLR_GREEN_1;
2070 tmp4 = pdata & DMA2D_OCOLR_BLUE_1;
2075 tmp = (tmp3 | tmp2 | tmp1 | tmp4);
2079 tmp = (tmp3 | tmp2 | tmp4);
2083 tmp2 = (tmp2 >> 19U);
2084 tmp3 = (tmp3 >> 10U);
2085 tmp4 = (tmp4 >> 3U);
2086 tmp = ((tmp3 << 5U) | (tmp2 << 11U) | tmp4);
2090 tmp1 = (tmp1 >> 31U);
2091 tmp2 = (tmp2 >> 19U);
2092 tmp3 = (tmp3 >> 11U);
2093 tmp4 = (tmp4 >> 3U);
2094 tmp = ((tmp3 << 5U) | (tmp2 << 10U) | (tmp1 << 15U) | tmp4);
2098 tmp1 = (tmp1 >> 28U);
2099 tmp2 = (tmp2 >> 20U);
2100 tmp3 = (tmp3 >> 12U);
2101 tmp4 = (tmp4 >> 4U);
2102 tmp = ((tmp3 << 4U) | (tmp2 << 8U) | (tmp1 << 12U) | tmp4);
2105 WRITE_REG(hdma2d->
Instance->OCOLR, tmp);
2110 WRITE_REG(hdma2d->
Instance->FGMAR, pdata);
HAL_DMA2D_CallbackIDTypeDef
HAL DMA2D common Callback ID enumeration definition.
@ HAL_DMA2D_MSPINIT_CB_ID
@ HAL_DMA2D_CLUTLOADINGCPLT_CB_ID
@ HAL_DMA2D_LINEEVENT_CB_ID
@ HAL_DMA2D_TRANSFERERROR_CB_ID
@ HAL_DMA2D_MSPDEINIT_CB_ID
@ HAL_DMA2D_TRANSFERCOMPLETE_CB_ID
HAL_StatusTypeDef HAL_DMA2D_UnRegisterCallback(DMA2D_HandleTypeDef *hdma2d, HAL_DMA2D_CallbackIDTypeDef CallbackID)
Unregister a DMA2D Callback DMA2D Callback is redirected to the weak (overridden) predefined callback...
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 (overridden) predefined callback.
HAL_StatusTypeDef HAL_DMA2D_DeInit(DMA2D_HandleTypeDef *hdma2d)
Deinitializes the DMA2D peripheral registers to their default reset values.
void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef *hdma2d)
DeInitializes the DMA2D MSP.
HAL_StatusTypeDef HAL_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d)
Initialize the DMA2D according to the specified parameters in the DMA2D_InitTypeDef and create the as...
void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef *hdma2d)
Initializes the DMA2D MSP.
HAL_StatusTypeDef HAL_DMA2D_Start_IT(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, uint32_t Height)
Start the DMA2D Transfer with interrupt enabled.
HAL_StatusTypeDef HAL_DMA2D_EnableCLUT(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
Enable the DMA2D CLUT Transfer.
void HAL_DMA2D_CLUTLoadingCpltCallback(DMA2D_HandleTypeDef *hdma2d)
CLUT Transfer Complete callback.
HAL_StatusTypeDef HAL_DMA2D_PollForTransfer(DMA2D_HandleTypeDef *hdma2d, uint32_t Timeout)
Polling for transfer complete or CLUT loading.
HAL_StatusTypeDef HAL_DMA2D_Resume(DMA2D_HandleTypeDef *hdma2d)
Resume the DMA2D Transfer.
void HAL_DMA2D_LineEventCallback(DMA2D_HandleTypeDef *hdma2d)
Transfer watermark callback.
HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Abort(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
Abort the DMA2D CLUT loading.
HAL_StatusTypeDef HAL_DMA2D_CLUTLoad(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx)
Start DMA2D CLUT Loading.
HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad_IT(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef *CLUTCfg, uint32_t LayerIdx)
Start DMA2D CLUT Loading with interrupt enabled.
HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Suspend(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
Suspend the DMA2D CLUT loading.
HAL_StatusTypeDef HAL_DMA2D_Start(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, uint32_t Height)
Start the DMA2D Transfer.
HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef *CLUTCfg, uint32_t LayerIdx)
Start DMA2D CLUT Loading.
void HAL_DMA2D_IRQHandler(DMA2D_HandleTypeDef *hdma2d)
Handle DMA2D interrupt request.
HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Resume(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
Resume the DMA2D CLUT loading.
HAL_StatusTypeDef HAL_DMA2D_Abort(DMA2D_HandleTypeDef *hdma2d)
Abort the DMA2D Transfer.
HAL_StatusTypeDef HAL_DMA2D_BlendingStart_IT(DMA2D_HandleTypeDef *hdma2d, uint32_t SrcAddress1, uint32_t SrcAddress2, uint32_t DstAddress, uint32_t Width, uint32_t Height)
Start the multi-source DMA2D Transfer with interrupt enabled.
HAL_StatusTypeDef HAL_DMA2D_CLUTLoad_IT(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx)
Start DMA2D CLUT Loading with interrupt enabled.
HAL_StatusTypeDef HAL_DMA2D_Suspend(DMA2D_HandleTypeDef *hdma2d)
Suspend the DMA2D Transfer.
HAL_StatusTypeDef HAL_DMA2D_BlendingStart(DMA2D_HandleTypeDef *hdma2d, uint32_t SrcAddress1, uint32_t SrcAddress2, uint32_t DstAddress, uint32_t Width, uint32_t Height)
Start the multi-source DMA2D Transfer.
HAL_StatusTypeDef HAL_DMA2D_ProgramLineEvent(DMA2D_HandleTypeDef *hdma2d, uint32_t Line)
Configure the line watermark.
HAL_StatusTypeDef HAL_DMA2D_EnableDeadTime(DMA2D_HandleTypeDef *hdma2d)
Enable DMA2D dead time feature.
HAL_StatusTypeDef HAL_DMA2D_ConfigDeadTime(DMA2D_HandleTypeDef *hdma2d, uint8_t DeadTime)
Configure dead time.
HAL_StatusTypeDef HAL_DMA2D_DisableDeadTime(DMA2D_HandleTypeDef *hdma2d)
Disable DMA2D dead time feature.
HAL_StatusTypeDef HAL_DMA2D_ConfigCLUT(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx)
Configure the DMA2D CLUT Transfer.
HAL_StatusTypeDef HAL_DMA2D_ConfigLayer(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
Configure the DMA2D Layer according to the specified parameters in the DMA2D_HandleTypeDef.
HAL_DMA2D_StateTypeDef HAL_DMA2D_GetState(DMA2D_HandleTypeDef *hdma2d)
Return the DMA2D state.
uint32_t HAL_DMA2D_GetError(DMA2D_HandleTypeDef *hdma2d)
Return the DMA2D error code.
void(* XferErrorCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
DMA2D_LayerCfgTypeDef LayerCfg[MAX_DMA2D_LAYER]
void(* XferCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* MspDeInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* LineEventCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* MspInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
__IO HAL_DMA2D_StateTypeDef State
void(* CLUTLoadingCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
void(* pDMA2D_CallbackTypeDef)(DMA2D_HandleTypeDef *hdma2d)
HAL DMA2D Callback pointer definition.
HAL_DMA2D_StateTypeDef
HAL DMA2D State structures definition.
@ HAL_DMA2D_STATE_SUSPEND
@ HAL_DMA2D_STATE_TIMEOUT
DMA2D CLUT Structure definition.
DMA2D Layer structure definition.
DMA2D handle Structure definition.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
This file contains all the functions prototypes for the HAL module driver.