mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Jun 21 17:46:44 2017 +0100
Revision:
167:e84263d55307
Parent:
149:156823d33999
Child:
182:a56a73fd2a6f
This updates the lib to the mbed lib v 145

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /**
<> 144:ef7eb2e8f9f7 2 ******************************************************************************
<> 144:ef7eb2e8f9f7 3 * @file stm32f4xx_hal_ltdc.c
<> 144:ef7eb2e8f9f7 4 * @author MCD Application Team
AnnaBridge 167:e84263d55307 5 * @version V1.7.1
AnnaBridge 167:e84263d55307 6 * @date 14-April-2017
<> 144:ef7eb2e8f9f7 7 * @brief LTDC HAL module driver.
<> 144:ef7eb2e8f9f7 8 * This file provides firmware functions to manage the following
<> 144:ef7eb2e8f9f7 9 * functionalities of the LTDC peripheral:
<> 144:ef7eb2e8f9f7 10 * + Initialization and de-initialization functions
<> 144:ef7eb2e8f9f7 11 * + IO operation functions
<> 144:ef7eb2e8f9f7 12 * + Peripheral Control functions
<> 144:ef7eb2e8f9f7 13 * + Peripheral State and Errors functions
<> 144:ef7eb2e8f9f7 14 *
<> 144:ef7eb2e8f9f7 15 @verbatim
<> 144:ef7eb2e8f9f7 16 ==============================================================================
<> 144:ef7eb2e8f9f7 17 ##### How to use this driver #####
<> 144:ef7eb2e8f9f7 18 ==============================================================================
<> 144:ef7eb2e8f9f7 19 [..]
<> 144:ef7eb2e8f9f7 20 (#) Program the required configuration through the following parameters:
<> 144:ef7eb2e8f9f7 21 the LTDC timing, the horizontal and vertical polarity,
<> 144:ef7eb2e8f9f7 22 the pixel clock polarity, Data Enable polarity and the LTDC background color value
<> 144:ef7eb2e8f9f7 23 using HAL_LTDC_Init() function
<> 144:ef7eb2e8f9f7 24
<> 144:ef7eb2e8f9f7 25 (#) Program the required configuration through the following parameters:
<> 144:ef7eb2e8f9f7 26 the pixel format, the blending factors, input alpha value, the window size
<> 144:ef7eb2e8f9f7 27 and the image size using HAL_LTDC_ConfigLayer() function for foreground
<> 144:ef7eb2e8f9f7 28 or/and background layer.
<> 144:ef7eb2e8f9f7 29
<> 144:ef7eb2e8f9f7 30 (#) Optionally, configure and enable the CLUT using HAL_LTDC_ConfigCLUT() and
<> 144:ef7eb2e8f9f7 31 HAL_LTDC_EnableCLUT functions.
<> 144:ef7eb2e8f9f7 32
<> 144:ef7eb2e8f9f7 33 (#) Optionally, enable the Dither using HAL_LTDC_EnableDither().
<> 144:ef7eb2e8f9f7 34
<> 144:ef7eb2e8f9f7 35 (#) Optionally, configure and enable the Color keying using HAL_LTDC_ConfigColorKeying()
<> 144:ef7eb2e8f9f7 36 and HAL_LTDC_EnableColorKeying functions.
<> 144:ef7eb2e8f9f7 37
<> 144:ef7eb2e8f9f7 38 (#) Optionally, configure LineInterrupt using HAL_LTDC_ProgramLineEvent()
<> 144:ef7eb2e8f9f7 39 function
<> 144:ef7eb2e8f9f7 40
<> 144:ef7eb2e8f9f7 41 (#) If needed, reconfigure and change the pixel format value, the alpha value
<> 144:ef7eb2e8f9f7 42 value, the window size, the window position and the layer start address
<> 144:ef7eb2e8f9f7 43 for foreground or/and background layer using respectively the following
<> 144:ef7eb2e8f9f7 44 functions: HAL_LTDC_SetPixelFormat(), HAL_LTDC_SetAlpha(), HAL_LTDC_SetWindowSize(),
<> 144:ef7eb2e8f9f7 45 HAL_LTDC_SetWindowPosition(), HAL_LTDC_SetAddress.
<> 144:ef7eb2e8f9f7 46
<> 144:ef7eb2e8f9f7 47 (#) Variant functions with “_NoReload” post fix allows to set the LTDC configuration/settings without immediate reload.
<> 144:ef7eb2e8f9f7 48 This is useful in case when the program requires to modify serval LTDC settings (on one or both layers)
AnnaBridge 167:e84263d55307 49 then applying(reload) these settings in one shot by calling the function “HAL_LTDC_Reload”
<> 144:ef7eb2e8f9f7 50
<> 144:ef7eb2e8f9f7 51 After calling the “_NoReload” functions to set different color/format/layer settings,
AnnaBridge 167:e84263d55307 52 the program can call the function “HAL_LTDC_Reload” To apply(Reload) these settings.
AnnaBridge 167:e84263d55307 53 Function “HAL_LTDC_Reload” can be called with the parameter “ReloadType”
<> 144:ef7eb2e8f9f7 54 set to LTDC_RELOAD_IMMEDIATE if an immediate reload is required.
AnnaBridge 167:e84263d55307 55 Function “HAL_LTDC_Reload” can be called with the parameter “ReloadType”
<> 144:ef7eb2e8f9f7 56 set to LTDC_RELOAD_VERTICAL_BLANKING if the reload should be done in the next vertical blanking period,
<> 144:ef7eb2e8f9f7 57 this option allows to avoid display flicker by applying the new settings during the vertical blanking period.
<> 144:ef7eb2e8f9f7 58
<> 144:ef7eb2e8f9f7 59
<> 144:ef7eb2e8f9f7 60 (#) To control LTDC state you can use the following function: HAL_LTDC_GetState()
<> 144:ef7eb2e8f9f7 61
<> 144:ef7eb2e8f9f7 62 *** LTDC HAL driver macros list ***
<> 144:ef7eb2e8f9f7 63 =============================================
<> 144:ef7eb2e8f9f7 64 [..]
<> 144:ef7eb2e8f9f7 65 Below the list of most used macros in LTDC HAL driver.
<> 144:ef7eb2e8f9f7 66
<> 144:ef7eb2e8f9f7 67 (+) __HAL_LTDC_ENABLE: Enable the LTDC.
<> 144:ef7eb2e8f9f7 68 (+) __HAL_LTDC_DISABLE: Disable the LTDC.
AnnaBridge 167:e84263d55307 69 (+) __HAL_LTDC_LAYER_ENABLE: Enable a LTDC Layer.
AnnaBridge 167:e84263d55307 70 (+) __HAL_LTDC_LAYER_DISABLE: Disable a LTDC Layer.
<> 144:ef7eb2e8f9f7 71 (+) __HAL_LTDC_CLEAR_FLAG: Clear the LTDC pending flags.
<> 144:ef7eb2e8f9f7 72 (+) __HAL_LTDC_ENABLE_IT: Enable the specified LTDC interrupts.
<> 144:ef7eb2e8f9f7 73 (+) __HAL_LTDC_DISABLE_IT: Disable the specified LTDC interrupts.
<> 144:ef7eb2e8f9f7 74
<> 144:ef7eb2e8f9f7 75 [..]
<> 144:ef7eb2e8f9f7 76 (@) You can refer to the LTDC HAL driver header file for more useful macros
<> 144:ef7eb2e8f9f7 77
<> 144:ef7eb2e8f9f7 78 @endverbatim
<> 144:ef7eb2e8f9f7 79 ******************************************************************************
<> 144:ef7eb2e8f9f7 80 * @attention
<> 144:ef7eb2e8f9f7 81 *
AnnaBridge 167:e84263d55307 82 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
<> 144:ef7eb2e8f9f7 83 *
<> 144:ef7eb2e8f9f7 84 * Redistribution and use in source and binary forms, with or without modification,
<> 144:ef7eb2e8f9f7 85 * are permitted provided that the following conditions are met:
<> 144:ef7eb2e8f9f7 86 * 1. Redistributions of source code must retain the above copyright notice,
<> 144:ef7eb2e8f9f7 87 * this list of conditions and the following disclaimer.
<> 144:ef7eb2e8f9f7 88 * 2. Redistributions in binary form must reproduce the above copyright notice,
<> 144:ef7eb2e8f9f7 89 * this list of conditions and the following disclaimer in the documentation
<> 144:ef7eb2e8f9f7 90 * and/or other materials provided with the distribution.
<> 144:ef7eb2e8f9f7 91 * 3. Neither the name of STMicroelectronics nor the names of its contributors
<> 144:ef7eb2e8f9f7 92 * may be used to endorse or promote products derived from this software
<> 144:ef7eb2e8f9f7 93 * without specific prior written permission.
<> 144:ef7eb2e8f9f7 94 *
<> 144:ef7eb2e8f9f7 95 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
<> 144:ef7eb2e8f9f7 96 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
<> 144:ef7eb2e8f9f7 97 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 144:ef7eb2e8f9f7 98 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
<> 144:ef7eb2e8f9f7 99 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
<> 144:ef7eb2e8f9f7 100 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
<> 144:ef7eb2e8f9f7 101 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
<> 144:ef7eb2e8f9f7 102 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
<> 144:ef7eb2e8f9f7 103 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
<> 144:ef7eb2e8f9f7 104 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 144:ef7eb2e8f9f7 105 *
<> 144:ef7eb2e8f9f7 106 ******************************************************************************
<> 144:ef7eb2e8f9f7 107 */
<> 144:ef7eb2e8f9f7 108
<> 144:ef7eb2e8f9f7 109 /* Includes ------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 110 #include "stm32f4xx_hal.h"
<> 144:ef7eb2e8f9f7 111
<> 144:ef7eb2e8f9f7 112 /** @addtogroup STM32F4xx_HAL_Driver
<> 144:ef7eb2e8f9f7 113 * @{
<> 144:ef7eb2e8f9f7 114 */
<> 144:ef7eb2e8f9f7 115 /** @defgroup LTDC LTDC
<> 144:ef7eb2e8f9f7 116 * @brief LTDC HAL module driver
<> 144:ef7eb2e8f9f7 117 * @{
<> 144:ef7eb2e8f9f7 118 */
<> 144:ef7eb2e8f9f7 119
<> 144:ef7eb2e8f9f7 120 #ifdef HAL_LTDC_MODULE_ENABLED
<> 144:ef7eb2e8f9f7 121
<> 144:ef7eb2e8f9f7 122 #if defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
<> 144:ef7eb2e8f9f7 123
<> 144:ef7eb2e8f9f7 124 /* Private typedef -----------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 125 /* Private define ------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 126 /* Private macro -------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 127 /* Private variables ---------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 128 /* Private function prototypes -----------------------------------------------*/
<> 144:ef7eb2e8f9f7 129 static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx);
<> 144:ef7eb2e8f9f7 130 /* Private functions ---------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 131
<> 144:ef7eb2e8f9f7 132 /** @defgroup LTDC_Exported_Functions LTDC Exported Functions
<> 144:ef7eb2e8f9f7 133 * @{
<> 144:ef7eb2e8f9f7 134 */
<> 144:ef7eb2e8f9f7 135
<> 144:ef7eb2e8f9f7 136 /** @defgroup LTDC_Exported_Functions_Group1 Initialization and Configuration functions
<> 144:ef7eb2e8f9f7 137 * @brief Initialization and Configuration functions
<> 144:ef7eb2e8f9f7 138 *
<> 144:ef7eb2e8f9f7 139 @verbatim
<> 144:ef7eb2e8f9f7 140 ===============================================================================
<> 144:ef7eb2e8f9f7 141 ##### Initialization and Configuration functions #####
<> 144:ef7eb2e8f9f7 142 ===============================================================================
<> 144:ef7eb2e8f9f7 143 [..] This section provides functions allowing to:
<> 144:ef7eb2e8f9f7 144 (+) Initialize and configure the LTDC
<> 144:ef7eb2e8f9f7 145 (+) De-initialize the LTDC
<> 144:ef7eb2e8f9f7 146
<> 144:ef7eb2e8f9f7 147 @endverbatim
<> 144:ef7eb2e8f9f7 148 * @{
<> 144:ef7eb2e8f9f7 149 */
<> 144:ef7eb2e8f9f7 150
<> 144:ef7eb2e8f9f7 151 /**
AnnaBridge 167:e84263d55307 152 * @brief Initialize the LTDC according to the specified parameters in the LTDC_InitTypeDef.
AnnaBridge 167:e84263d55307 153 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 154 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 155 * @retval HAL status
<> 144:ef7eb2e8f9f7 156 */
<> 144:ef7eb2e8f9f7 157 HAL_StatusTypeDef HAL_LTDC_Init(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 158 {
<> 144:ef7eb2e8f9f7 159 uint32_t tmp = 0U, tmp1 = 0U;
<> 144:ef7eb2e8f9f7 160
<> 144:ef7eb2e8f9f7 161 /* Check the LTDC peripheral state */
<> 144:ef7eb2e8f9f7 162 if(hltdc == NULL)
<> 144:ef7eb2e8f9f7 163 {
<> 144:ef7eb2e8f9f7 164 return HAL_ERROR;
<> 144:ef7eb2e8f9f7 165 }
<> 144:ef7eb2e8f9f7 166
<> 144:ef7eb2e8f9f7 167 /* Check function parameters */
<> 144:ef7eb2e8f9f7 168 assert_param(IS_LTDC_ALL_INSTANCE(hltdc->Instance));
<> 144:ef7eb2e8f9f7 169 assert_param(IS_LTDC_HSYNC(hltdc->Init.HorizontalSync));
<> 144:ef7eb2e8f9f7 170 assert_param(IS_LTDC_VSYNC(hltdc->Init.VerticalSync));
<> 144:ef7eb2e8f9f7 171 assert_param(IS_LTDC_AHBP(hltdc->Init.AccumulatedHBP));
<> 144:ef7eb2e8f9f7 172 assert_param(IS_LTDC_AVBP(hltdc->Init.AccumulatedVBP));
<> 144:ef7eb2e8f9f7 173 assert_param(IS_LTDC_AAH(hltdc->Init.AccumulatedActiveH));
<> 144:ef7eb2e8f9f7 174 assert_param(IS_LTDC_AAW(hltdc->Init.AccumulatedActiveW));
<> 144:ef7eb2e8f9f7 175 assert_param(IS_LTDC_TOTALH(hltdc->Init.TotalHeigh));
<> 144:ef7eb2e8f9f7 176 assert_param(IS_LTDC_TOTALW(hltdc->Init.TotalWidth));
<> 144:ef7eb2e8f9f7 177 assert_param(IS_LTDC_HSPOL(hltdc->Init.HSPolarity));
<> 144:ef7eb2e8f9f7 178 assert_param(IS_LTDC_VSPOL(hltdc->Init.VSPolarity));
<> 144:ef7eb2e8f9f7 179 assert_param(IS_LTDC_DEPOL(hltdc->Init.DEPolarity));
<> 144:ef7eb2e8f9f7 180 assert_param(IS_LTDC_PCPOL(hltdc->Init.PCPolarity));
<> 144:ef7eb2e8f9f7 181
<> 144:ef7eb2e8f9f7 182 if(hltdc->State == HAL_LTDC_STATE_RESET)
<> 144:ef7eb2e8f9f7 183 {
<> 144:ef7eb2e8f9f7 184 /* Allocate lock resource and initialize it */
<> 144:ef7eb2e8f9f7 185 hltdc->Lock = HAL_UNLOCKED;
<> 144:ef7eb2e8f9f7 186 /* Init the low level hardware */
<> 144:ef7eb2e8f9f7 187 HAL_LTDC_MspInit(hltdc);
<> 144:ef7eb2e8f9f7 188 }
<> 144:ef7eb2e8f9f7 189
<> 144:ef7eb2e8f9f7 190 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 191 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 192
AnnaBridge 167:e84263d55307 193 /* Configure the HS, VS, DE and PC polarity */
<> 144:ef7eb2e8f9f7 194 hltdc->Instance->GCR &= ~(LTDC_GCR_HSPOL | LTDC_GCR_VSPOL | LTDC_GCR_DEPOL | LTDC_GCR_PCPOL);
<> 144:ef7eb2e8f9f7 195 hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \
<> 144:ef7eb2e8f9f7 196 hltdc->Init.DEPolarity | hltdc->Init.PCPolarity);
<> 144:ef7eb2e8f9f7 197
AnnaBridge 167:e84263d55307 198 /* Set Synchronization size */
<> 144:ef7eb2e8f9f7 199 hltdc->Instance->SSCR &= ~(LTDC_SSCR_VSH | LTDC_SSCR_HSW);
<> 144:ef7eb2e8f9f7 200 tmp = (hltdc->Init.HorizontalSync << 16U);
<> 144:ef7eb2e8f9f7 201 hltdc->Instance->SSCR |= (tmp | hltdc->Init.VerticalSync);
<> 144:ef7eb2e8f9f7 202
AnnaBridge 167:e84263d55307 203 /* Set Accumulated Back porch */
<> 144:ef7eb2e8f9f7 204 hltdc->Instance->BPCR &= ~(LTDC_BPCR_AVBP | LTDC_BPCR_AHBP);
<> 144:ef7eb2e8f9f7 205 tmp = (hltdc->Init.AccumulatedHBP << 16U);
<> 144:ef7eb2e8f9f7 206 hltdc->Instance->BPCR |= (tmp | hltdc->Init.AccumulatedVBP);
<> 144:ef7eb2e8f9f7 207
AnnaBridge 167:e84263d55307 208 /* Set Accumulated Active Width */
<> 144:ef7eb2e8f9f7 209 hltdc->Instance->AWCR &= ~(LTDC_AWCR_AAH | LTDC_AWCR_AAW);
<> 144:ef7eb2e8f9f7 210 tmp = (hltdc->Init.AccumulatedActiveW << 16U);
<> 144:ef7eb2e8f9f7 211 hltdc->Instance->AWCR |= (tmp | hltdc->Init.AccumulatedActiveH);
<> 144:ef7eb2e8f9f7 212
AnnaBridge 167:e84263d55307 213 /* Set Total Width */
<> 144:ef7eb2e8f9f7 214 hltdc->Instance->TWCR &= ~(LTDC_TWCR_TOTALH | LTDC_TWCR_TOTALW);
<> 144:ef7eb2e8f9f7 215 tmp = (hltdc->Init.TotalWidth << 16U);
<> 144:ef7eb2e8f9f7 216 hltdc->Instance->TWCR |= (tmp | hltdc->Init.TotalHeigh);
<> 144:ef7eb2e8f9f7 217
AnnaBridge 167:e84263d55307 218 /* Set the background color value */
<> 144:ef7eb2e8f9f7 219 tmp = ((uint32_t)(hltdc->Init.Backcolor.Green) << 8U);
<> 144:ef7eb2e8f9f7 220 tmp1 = ((uint32_t)(hltdc->Init.Backcolor.Red) << 16U);
<> 144:ef7eb2e8f9f7 221 hltdc->Instance->BCCR &= ~(LTDC_BCCR_BCBLUE | LTDC_BCCR_BCGREEN | LTDC_BCCR_BCRED);
<> 144:ef7eb2e8f9f7 222 hltdc->Instance->BCCR |= (tmp1 | tmp | hltdc->Init.Backcolor.Blue);
<> 144:ef7eb2e8f9f7 223
AnnaBridge 167:e84263d55307 224 /* Enable the Transfer Error and FIFO underrun interrupts */
AnnaBridge 167:e84263d55307 225 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_TE | LTDC_IT_FU);
<> 144:ef7eb2e8f9f7 226
<> 144:ef7eb2e8f9f7 227 /* Enable LTDC by setting LTDCEN bit */
<> 144:ef7eb2e8f9f7 228 __HAL_LTDC_ENABLE(hltdc);
<> 144:ef7eb2e8f9f7 229
<> 144:ef7eb2e8f9f7 230 /* Initialize the error code */
<> 144:ef7eb2e8f9f7 231 hltdc->ErrorCode = HAL_LTDC_ERROR_NONE;
<> 144:ef7eb2e8f9f7 232
<> 144:ef7eb2e8f9f7 233 /* Initialize the LTDC state*/
<> 144:ef7eb2e8f9f7 234 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 235
<> 144:ef7eb2e8f9f7 236 return HAL_OK;
<> 144:ef7eb2e8f9f7 237 }
<> 144:ef7eb2e8f9f7 238
<> 144:ef7eb2e8f9f7 239 /**
AnnaBridge 167:e84263d55307 240 * @brief De-initialize the LTDC peripheral.
AnnaBridge 167:e84263d55307 241 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 242 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 243 * @retval None
<> 144:ef7eb2e8f9f7 244 */
<> 144:ef7eb2e8f9f7 245
<> 144:ef7eb2e8f9f7 246 HAL_StatusTypeDef HAL_LTDC_DeInit(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 247 {
<> 144:ef7eb2e8f9f7 248 /* DeInit the low level hardware */
<> 144:ef7eb2e8f9f7 249 HAL_LTDC_MspDeInit(hltdc);
<> 144:ef7eb2e8f9f7 250
<> 144:ef7eb2e8f9f7 251 /* Initialize the error code */
<> 144:ef7eb2e8f9f7 252 hltdc->ErrorCode = HAL_LTDC_ERROR_NONE;
<> 144:ef7eb2e8f9f7 253
<> 144:ef7eb2e8f9f7 254 /* Initialize the LTDC state*/
<> 144:ef7eb2e8f9f7 255 hltdc->State = HAL_LTDC_STATE_RESET;
<> 144:ef7eb2e8f9f7 256
<> 144:ef7eb2e8f9f7 257 /* Release Lock */
<> 144:ef7eb2e8f9f7 258 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 259
<> 144:ef7eb2e8f9f7 260 return HAL_OK;
<> 144:ef7eb2e8f9f7 261 }
<> 144:ef7eb2e8f9f7 262
<> 144:ef7eb2e8f9f7 263 /**
AnnaBridge 167:e84263d55307 264 * @brief Initialize the LTDC MSP.
AnnaBridge 167:e84263d55307 265 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 266 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 267 * @retval None
<> 144:ef7eb2e8f9f7 268 */
<> 144:ef7eb2e8f9f7 269 __weak void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
<> 144:ef7eb2e8f9f7 270 {
<> 144:ef7eb2e8f9f7 271 /* Prevent unused argument(s) compilation warning */
<> 144:ef7eb2e8f9f7 272 UNUSED(hltdc);
AnnaBridge 167:e84263d55307 273
AnnaBridge 167:e84263d55307 274 /* NOTE : This function should not be modified, when the callback is needed,
<> 144:ef7eb2e8f9f7 275 the HAL_LTDC_MspInit could be implemented in the user file
<> 144:ef7eb2e8f9f7 276 */
<> 144:ef7eb2e8f9f7 277 }
<> 144:ef7eb2e8f9f7 278
<> 144:ef7eb2e8f9f7 279 /**
AnnaBridge 167:e84263d55307 280 * @brief De-initialize the LTDC MSP.
AnnaBridge 167:e84263d55307 281 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 282 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 283 * @retval None
<> 144:ef7eb2e8f9f7 284 */
<> 144:ef7eb2e8f9f7 285 __weak void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
<> 144:ef7eb2e8f9f7 286 {
<> 144:ef7eb2e8f9f7 287 /* Prevent unused argument(s) compilation warning */
<> 144:ef7eb2e8f9f7 288 UNUSED(hltdc);
AnnaBridge 167:e84263d55307 289
AnnaBridge 167:e84263d55307 290 /* NOTE : This function should not be modified, when the callback is needed,
<> 144:ef7eb2e8f9f7 291 the HAL_LTDC_MspDeInit could be implemented in the user file
<> 144:ef7eb2e8f9f7 292 */
<> 144:ef7eb2e8f9f7 293 }
<> 144:ef7eb2e8f9f7 294
<> 144:ef7eb2e8f9f7 295 /**
<> 144:ef7eb2e8f9f7 296 * @}
<> 144:ef7eb2e8f9f7 297 */
<> 144:ef7eb2e8f9f7 298
<> 144:ef7eb2e8f9f7 299 /** @defgroup LTDC_Exported_Functions_Group2 IO operation functions
<> 144:ef7eb2e8f9f7 300 * @brief IO operation functions
<> 144:ef7eb2e8f9f7 301 *
<> 144:ef7eb2e8f9f7 302 @verbatim
<> 144:ef7eb2e8f9f7 303 ===============================================================================
<> 144:ef7eb2e8f9f7 304 ##### IO operation functions #####
<> 144:ef7eb2e8f9f7 305 ===============================================================================
<> 144:ef7eb2e8f9f7 306 [..] This section provides function allowing to:
<> 144:ef7eb2e8f9f7 307 (+) Handle LTDC interrupt request
<> 144:ef7eb2e8f9f7 308
<> 144:ef7eb2e8f9f7 309 @endverbatim
<> 144:ef7eb2e8f9f7 310 * @{
<> 144:ef7eb2e8f9f7 311 */
<> 144:ef7eb2e8f9f7 312 /**
AnnaBridge 167:e84263d55307 313 * @brief Handle LTDC interrupt request.
AnnaBridge 167:e84263d55307 314 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 315 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 316 * @retval HAL status
<> 144:ef7eb2e8f9f7 317 */
<> 144:ef7eb2e8f9f7 318 void HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 319 {
AnnaBridge 167:e84263d55307 320 uint32_t isrflags = READ_REG(hltdc->Instance->ISR);
AnnaBridge 167:e84263d55307 321 uint32_t itsources = READ_REG(hltdc->Instance->IER);
AnnaBridge 167:e84263d55307 322
<> 144:ef7eb2e8f9f7 323 /* Transfer Error Interrupt management ***************************************/
AnnaBridge 167:e84263d55307 324 if(((isrflags & LTDC_ISR_TERRIF) != RESET) && ((itsources & LTDC_IER_TERRIE) != RESET))
<> 144:ef7eb2e8f9f7 325 {
AnnaBridge 167:e84263d55307 326 /* Disable the transfer Error interrupt */
AnnaBridge 167:e84263d55307 327 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_TE);
<> 144:ef7eb2e8f9f7 328
AnnaBridge 167:e84263d55307 329 /* Clear the transfer error flag */
AnnaBridge 167:e84263d55307 330 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_TE);
<> 144:ef7eb2e8f9f7 331
AnnaBridge 167:e84263d55307 332 /* Update error code */
AnnaBridge 167:e84263d55307 333 hltdc->ErrorCode |= HAL_LTDC_ERROR_TE;
<> 144:ef7eb2e8f9f7 334
AnnaBridge 167:e84263d55307 335 /* Change LTDC state */
AnnaBridge 167:e84263d55307 336 hltdc->State = HAL_LTDC_STATE_ERROR;
<> 144:ef7eb2e8f9f7 337
AnnaBridge 167:e84263d55307 338 /* Process unlocked */
AnnaBridge 167:e84263d55307 339 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 340
AnnaBridge 167:e84263d55307 341 /* Transfer error Callback */
AnnaBridge 167:e84263d55307 342 HAL_LTDC_ErrorCallback(hltdc);
<> 144:ef7eb2e8f9f7 343 }
AnnaBridge 167:e84263d55307 344
<> 144:ef7eb2e8f9f7 345 /* FIFO underrun Interrupt management ***************************************/
AnnaBridge 167:e84263d55307 346 if(((isrflags & LTDC_ISR_FUIF) != RESET) && ((itsources & LTDC_IER_FUIE) != RESET))
<> 144:ef7eb2e8f9f7 347 {
AnnaBridge 167:e84263d55307 348 /* Disable the FIFO underrun interrupt */
AnnaBridge 167:e84263d55307 349 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_FU);
<> 144:ef7eb2e8f9f7 350
AnnaBridge 167:e84263d55307 351 /* Clear the FIFO underrun flag */
AnnaBridge 167:e84263d55307 352 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_FU);
<> 144:ef7eb2e8f9f7 353
AnnaBridge 167:e84263d55307 354 /* Update error code */
AnnaBridge 167:e84263d55307 355 hltdc->ErrorCode |= HAL_LTDC_ERROR_FU;
<> 144:ef7eb2e8f9f7 356
AnnaBridge 167:e84263d55307 357 /* Change LTDC state */
AnnaBridge 167:e84263d55307 358 hltdc->State = HAL_LTDC_STATE_ERROR;
<> 144:ef7eb2e8f9f7 359
AnnaBridge 167:e84263d55307 360 /* Process unlocked */
AnnaBridge 167:e84263d55307 361 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 362
AnnaBridge 167:e84263d55307 363 /* Transfer error Callback */
AnnaBridge 167:e84263d55307 364 HAL_LTDC_ErrorCallback(hltdc);
<> 144:ef7eb2e8f9f7 365 }
AnnaBridge 167:e84263d55307 366
<> 144:ef7eb2e8f9f7 367 /* Line Interrupt management ************************************************/
AnnaBridge 167:e84263d55307 368 if(((isrflags & LTDC_ISR_LIF) != RESET) && ((itsources & LTDC_IER_LIE) != RESET))
<> 144:ef7eb2e8f9f7 369 {
AnnaBridge 167:e84263d55307 370 /* Disable the Line interrupt */
AnnaBridge 167:e84263d55307 371 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI);
AnnaBridge 167:e84263d55307 372
AnnaBridge 167:e84263d55307 373 /* Clear the Line interrupt flag */
AnnaBridge 167:e84263d55307 374 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_LI);
<> 144:ef7eb2e8f9f7 375
AnnaBridge 167:e84263d55307 376 /* Change LTDC state */
AnnaBridge 167:e84263d55307 377 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 378
AnnaBridge 167:e84263d55307 379 /* Process unlocked */
AnnaBridge 167:e84263d55307 380 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 381
AnnaBridge 167:e84263d55307 382 /* Line interrupt Callback */
AnnaBridge 167:e84263d55307 383 HAL_LTDC_LineEventCallback(hltdc);
<> 144:ef7eb2e8f9f7 384 }
AnnaBridge 167:e84263d55307 385
<> 144:ef7eb2e8f9f7 386 /* Register reload Interrupt management ***************************************/
AnnaBridge 167:e84263d55307 387 if(((isrflags & LTDC_ISR_RRIF) != RESET) && ((itsources & LTDC_IER_RRIE) != RESET))
<> 144:ef7eb2e8f9f7 388 {
AnnaBridge 167:e84263d55307 389 /* Disable the register reload interrupt */
AnnaBridge 167:e84263d55307 390 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_RR);
<> 144:ef7eb2e8f9f7 391
AnnaBridge 167:e84263d55307 392 /* Clear the register reload flag */
AnnaBridge 167:e84263d55307 393 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_RR);
<> 144:ef7eb2e8f9f7 394
AnnaBridge 167:e84263d55307 395 /* Change LTDC state */
AnnaBridge 167:e84263d55307 396 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 397
AnnaBridge 167:e84263d55307 398 /* Process unlocked */
AnnaBridge 167:e84263d55307 399 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 400
AnnaBridge 167:e84263d55307 401 /* Register reload interrupt Callback */
AnnaBridge 167:e84263d55307 402 HAL_LTDC_ReloadEventCallback(hltdc);
AnnaBridge 167:e84263d55307 403 }
<> 144:ef7eb2e8f9f7 404 }
<> 144:ef7eb2e8f9f7 405
<> 144:ef7eb2e8f9f7 406 /**
<> 144:ef7eb2e8f9f7 407 * @brief Error LTDC callback.
AnnaBridge 167:e84263d55307 408 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 409 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 410 * @retval None
<> 144:ef7eb2e8f9f7 411 */
<> 144:ef7eb2e8f9f7 412 __weak void HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 413 {
<> 144:ef7eb2e8f9f7 414 /* Prevent unused argument(s) compilation warning */
<> 144:ef7eb2e8f9f7 415 UNUSED(hltdc);
AnnaBridge 167:e84263d55307 416
AnnaBridge 167:e84263d55307 417 /* NOTE : This function should not be modified, when the callback is needed,
<> 144:ef7eb2e8f9f7 418 the HAL_LTDC_ErrorCallback could be implemented in the user file
<> 144:ef7eb2e8f9f7 419 */
<> 144:ef7eb2e8f9f7 420 }
<> 144:ef7eb2e8f9f7 421
<> 144:ef7eb2e8f9f7 422 /**
<> 144:ef7eb2e8f9f7 423 * @brief Line Event callback.
AnnaBridge 167:e84263d55307 424 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 425 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 426 * @retval None
<> 144:ef7eb2e8f9f7 427 */
<> 144:ef7eb2e8f9f7 428 __weak void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 429 {
<> 144:ef7eb2e8f9f7 430 /* Prevent unused argument(s) compilation warning */
<> 144:ef7eb2e8f9f7 431 UNUSED(hltdc);
<> 144:ef7eb2e8f9f7 432
AnnaBridge 167:e84263d55307 433 /* NOTE : This function should not be modified, when the callback is needed,
<> 144:ef7eb2e8f9f7 434 the HAL_LTDC_LineEventCallback could be implemented in the user file
<> 144:ef7eb2e8f9f7 435 */
<> 144:ef7eb2e8f9f7 436 }
<> 144:ef7eb2e8f9f7 437
<> 144:ef7eb2e8f9f7 438 /**
<> 144:ef7eb2e8f9f7 439 * @brief Reload Event callback.
AnnaBridge 167:e84263d55307 440 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 441 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 442 * @retval None
<> 144:ef7eb2e8f9f7 443 */
<> 144:ef7eb2e8f9f7 444 __weak void HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 445 {
<> 144:ef7eb2e8f9f7 446 /* Prevent unused argument(s) compilation warning */
<> 144:ef7eb2e8f9f7 447 UNUSED(hltdc);
<> 144:ef7eb2e8f9f7 448
AnnaBridge 167:e84263d55307 449 /* NOTE : This function should not be modified, when the callback is needed,
<> 144:ef7eb2e8f9f7 450 the HAL_LTDC_ReloadEvenCallback could be implemented in the user file
<> 144:ef7eb2e8f9f7 451 */
<> 144:ef7eb2e8f9f7 452 }
<> 144:ef7eb2e8f9f7 453
<> 144:ef7eb2e8f9f7 454 /**
<> 144:ef7eb2e8f9f7 455 * @}
<> 144:ef7eb2e8f9f7 456 */
<> 144:ef7eb2e8f9f7 457
<> 144:ef7eb2e8f9f7 458 /** @defgroup LTDC_Exported_Functions_Group3 Peripheral Control functions
<> 144:ef7eb2e8f9f7 459 * @brief Peripheral Control functions
<> 144:ef7eb2e8f9f7 460 *
<> 144:ef7eb2e8f9f7 461 @verbatim
<> 144:ef7eb2e8f9f7 462 ===============================================================================
<> 144:ef7eb2e8f9f7 463 ##### Peripheral Control functions #####
<> 144:ef7eb2e8f9f7 464 ===============================================================================
<> 144:ef7eb2e8f9f7 465 [..] This section provides functions allowing to:
<> 144:ef7eb2e8f9f7 466 (+) Configure the LTDC foreground or/and background parameters.
<> 144:ef7eb2e8f9f7 467 (+) Set the active layer.
<> 144:ef7eb2e8f9f7 468 (+) Configure the color keying.
<> 144:ef7eb2e8f9f7 469 (+) Configure the C-LUT.
<> 144:ef7eb2e8f9f7 470 (+) Enable / Disable the color keying.
<> 144:ef7eb2e8f9f7 471 (+) Enable / Disable the C-LUT.
<> 144:ef7eb2e8f9f7 472 (+) Update the layer position.
<> 144:ef7eb2e8f9f7 473 (+) Update the layer size.
<> 144:ef7eb2e8f9f7 474 (+) Update pixel format on the fly.
<> 144:ef7eb2e8f9f7 475 (+) Update transparency on the fly.
<> 144:ef7eb2e8f9f7 476 (+) Update address on the fly.
<> 144:ef7eb2e8f9f7 477
<> 144:ef7eb2e8f9f7 478 @endverbatim
<> 144:ef7eb2e8f9f7 479 * @{
<> 144:ef7eb2e8f9f7 480 */
<> 144:ef7eb2e8f9f7 481
<> 144:ef7eb2e8f9f7 482 /**
<> 144:ef7eb2e8f9f7 483 * @brief Configure the LTDC Layer according to the specified
<> 144:ef7eb2e8f9f7 484 * parameters in the LTDC_InitTypeDef and create the associated handle.
AnnaBridge 167:e84263d55307 485 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 486 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 487 * @param pLayerCfg pointer to a LTDC_LayerCfgTypeDef structure that contains
<> 144:ef7eb2e8f9f7 488 * the configuration information for the Layer.
AnnaBridge 167:e84263d55307 489 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 490 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 491 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 492 * @retval HAL status
<> 144:ef7eb2e8f9f7 493 */
<> 144:ef7eb2e8f9f7 494 HAL_StatusTypeDef HAL_LTDC_ConfigLayer(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 495 {
AnnaBridge 167:e84263d55307 496 /* Check the parameters */
AnnaBridge 167:e84263d55307 497 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 498 assert_param(IS_LTDC_HCONFIGST(pLayerCfg->WindowX0));
AnnaBridge 167:e84263d55307 499 assert_param(IS_LTDC_HCONFIGSP(pLayerCfg->WindowX1));
AnnaBridge 167:e84263d55307 500 assert_param(IS_LTDC_VCONFIGST(pLayerCfg->WindowY0));
AnnaBridge 167:e84263d55307 501 assert_param(IS_LTDC_VCONFIGSP(pLayerCfg->WindowY1));
AnnaBridge 167:e84263d55307 502 assert_param(IS_LTDC_PIXEL_FORMAT(pLayerCfg->PixelFormat));
AnnaBridge 167:e84263d55307 503 assert_param(IS_LTDC_ALPHA(pLayerCfg->Alpha));
AnnaBridge 167:e84263d55307 504 assert_param(IS_LTDC_ALPHA(pLayerCfg->Alpha0));
AnnaBridge 167:e84263d55307 505 assert_param(IS_LTDC_BLENDING_FACTOR1(pLayerCfg->BlendingFactor1));
AnnaBridge 167:e84263d55307 506 assert_param(IS_LTDC_BLENDING_FACTOR2(pLayerCfg->BlendingFactor2));
AnnaBridge 167:e84263d55307 507 assert_param(IS_LTDC_CFBLL(pLayerCfg->ImageWidth));
AnnaBridge 167:e84263d55307 508 assert_param(IS_LTDC_CFBLNBR(pLayerCfg->ImageHeight));
AnnaBridge 167:e84263d55307 509
<> 144:ef7eb2e8f9f7 510 /* Process locked */
<> 144:ef7eb2e8f9f7 511 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 512
<> 144:ef7eb2e8f9f7 513 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 514 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 515
<> 144:ef7eb2e8f9f7 516 /* Copy new layer configuration into handle structure */
<> 144:ef7eb2e8f9f7 517 hltdc->LayerCfg[LayerIdx] = *pLayerCfg;
<> 144:ef7eb2e8f9f7 518
<> 144:ef7eb2e8f9f7 519 /* Configure the LTDC Layer */
<> 144:ef7eb2e8f9f7 520 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 521
AnnaBridge 167:e84263d55307 522 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 523 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 524
<> 144:ef7eb2e8f9f7 525 /* Initialize the LTDC state*/
<> 144:ef7eb2e8f9f7 526 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 527
<> 144:ef7eb2e8f9f7 528 /* Process unlocked */
<> 144:ef7eb2e8f9f7 529 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 530
<> 144:ef7eb2e8f9f7 531 return HAL_OK;
<> 144:ef7eb2e8f9f7 532 }
<> 144:ef7eb2e8f9f7 533
<> 144:ef7eb2e8f9f7 534 /**
<> 144:ef7eb2e8f9f7 535 * @brief Configure the color keying.
AnnaBridge 167:e84263d55307 536 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 537 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 538 * @param RGBValue the color key value
AnnaBridge 167:e84263d55307 539 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 540 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 541 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 542 * @retval HAL status
<> 144:ef7eb2e8f9f7 543 */
<> 144:ef7eb2e8f9f7 544 HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 545 {
AnnaBridge 167:e84263d55307 546 /* Check the parameters */
AnnaBridge 167:e84263d55307 547 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 548
<> 144:ef7eb2e8f9f7 549 /* Process locked */
<> 144:ef7eb2e8f9f7 550 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 551
<> 144:ef7eb2e8f9f7 552 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 553 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 554
AnnaBridge 167:e84263d55307 555 /* Configure the default color values */
<> 144:ef7eb2e8f9f7 556 LTDC_LAYER(hltdc, LayerIdx)->CKCR &= ~(LTDC_LxCKCR_CKBLUE | LTDC_LxCKCR_CKGREEN | LTDC_LxCKCR_CKRED);
<> 144:ef7eb2e8f9f7 557 LTDC_LAYER(hltdc, LayerIdx)->CKCR = RGBValue;
<> 144:ef7eb2e8f9f7 558
AnnaBridge 167:e84263d55307 559 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 560 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 561
<> 144:ef7eb2e8f9f7 562 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 563 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 564
<> 144:ef7eb2e8f9f7 565 /* Process unlocked */
<> 144:ef7eb2e8f9f7 566 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 567
<> 144:ef7eb2e8f9f7 568 return HAL_OK;
<> 144:ef7eb2e8f9f7 569 }
<> 144:ef7eb2e8f9f7 570
<> 144:ef7eb2e8f9f7 571 /**
<> 144:ef7eb2e8f9f7 572 * @brief Load the color lookup table.
AnnaBridge 167:e84263d55307 573 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 574 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 575 * @param pCLUT pointer to the color lookup table address.
AnnaBridge 167:e84263d55307 576 * @param CLUTSize the color lookup table size.
AnnaBridge 167:e84263d55307 577 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 578 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 579 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 580 * @retval HAL status
<> 144:ef7eb2e8f9f7 581 */
<> 144:ef7eb2e8f9f7 582 HAL_StatusTypeDef HAL_LTDC_ConfigCLUT(LTDC_HandleTypeDef *hltdc, uint32_t *pCLUT, uint32_t CLUTSize, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 583 {
<> 144:ef7eb2e8f9f7 584 uint32_t tmp = 0U;
<> 144:ef7eb2e8f9f7 585 uint32_t counter = 0U;
<> 144:ef7eb2e8f9f7 586 uint32_t pcounter = 0U;
<> 144:ef7eb2e8f9f7 587
AnnaBridge 167:e84263d55307 588 /* Check the parameters */
AnnaBridge 167:e84263d55307 589 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 590
<> 144:ef7eb2e8f9f7 591 /* Process locked */
<> 144:ef7eb2e8f9f7 592 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 593
<> 144:ef7eb2e8f9f7 594 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 595 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 596
<> 144:ef7eb2e8f9f7 597 for(counter = 0U; (counter < CLUTSize); counter++)
<> 144:ef7eb2e8f9f7 598 {
<> 144:ef7eb2e8f9f7 599 if(hltdc->LayerCfg[LayerIdx].PixelFormat == LTDC_PIXEL_FORMAT_AL44)
<> 144:ef7eb2e8f9f7 600 {
<> 144:ef7eb2e8f9f7 601 tmp = (((counter + 16U*counter) << 24U) | ((uint32_t)(*pCLUT) & 0xFFU) | ((uint32_t)(*pCLUT) & 0xFF00U) | ((uint32_t)(*pCLUT) & 0xFF0000U));
<> 144:ef7eb2e8f9f7 602 }
<> 144:ef7eb2e8f9f7 603 else
<> 144:ef7eb2e8f9f7 604 {
<> 144:ef7eb2e8f9f7 605 tmp = ((counter << 24U) | ((uint32_t)(*pCLUT) & 0xFFU) | ((uint32_t)(*pCLUT) & 0xFF00U) | ((uint32_t)(*pCLUT) & 0xFF0000U));
<> 144:ef7eb2e8f9f7 606 }
<> 144:ef7eb2e8f9f7 607 pcounter = (uint32_t)pCLUT + sizeof(*pCLUT);
<> 144:ef7eb2e8f9f7 608 pCLUT = (uint32_t *)pcounter;
<> 144:ef7eb2e8f9f7 609
<> 144:ef7eb2e8f9f7 610 /* Specifies the C-LUT address and RGB value */
<> 144:ef7eb2e8f9f7 611 LTDC_LAYER(hltdc, LayerIdx)->CLUTWR = tmp;
<> 144:ef7eb2e8f9f7 612 }
<> 144:ef7eb2e8f9f7 613
<> 144:ef7eb2e8f9f7 614 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 615 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 616
<> 144:ef7eb2e8f9f7 617 /* Process unlocked */
<> 144:ef7eb2e8f9f7 618 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 619
<> 144:ef7eb2e8f9f7 620 return HAL_OK;
<> 144:ef7eb2e8f9f7 621 }
<> 144:ef7eb2e8f9f7 622
<> 144:ef7eb2e8f9f7 623 /**
<> 144:ef7eb2e8f9f7 624 * @brief Enable the color keying.
AnnaBridge 167:e84263d55307 625 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 626 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 627 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 628 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 629 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 630 * @retval HAL status
<> 144:ef7eb2e8f9f7 631 */
<> 144:ef7eb2e8f9f7 632 HAL_StatusTypeDef HAL_LTDC_EnableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 633 {
AnnaBridge 167:e84263d55307 634 /* Check the parameters */
AnnaBridge 167:e84263d55307 635 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 636
<> 144:ef7eb2e8f9f7 637 /* Process locked */
<> 144:ef7eb2e8f9f7 638 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 639
<> 144:ef7eb2e8f9f7 640 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 641 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 642
<> 144:ef7eb2e8f9f7 643 /* Enable LTDC color keying by setting COLKEN bit */
<> 144:ef7eb2e8f9f7 644 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_COLKEN;
<> 144:ef7eb2e8f9f7 645
AnnaBridge 167:e84263d55307 646 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 647 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 648
<> 144:ef7eb2e8f9f7 649 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 650 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 651
<> 144:ef7eb2e8f9f7 652 /* Process unlocked */
<> 144:ef7eb2e8f9f7 653 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 654
<> 144:ef7eb2e8f9f7 655 return HAL_OK;
<> 144:ef7eb2e8f9f7 656 }
<> 144:ef7eb2e8f9f7 657
<> 144:ef7eb2e8f9f7 658 /**
<> 144:ef7eb2e8f9f7 659 * @brief Disable the color keying.
AnnaBridge 167:e84263d55307 660 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 661 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 662 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 663 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 664 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 665 * @retval HAL status
<> 144:ef7eb2e8f9f7 666 */
<> 144:ef7eb2e8f9f7 667 HAL_StatusTypeDef HAL_LTDC_DisableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 668 {
AnnaBridge 167:e84263d55307 669 /* Check the parameters */
AnnaBridge 167:e84263d55307 670 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 671
<> 144:ef7eb2e8f9f7 672 /* Process locked */
<> 144:ef7eb2e8f9f7 673 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 674
<> 144:ef7eb2e8f9f7 675 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 676 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 677
<> 144:ef7eb2e8f9f7 678 /* Disable LTDC color keying by setting COLKEN bit */
<> 144:ef7eb2e8f9f7 679 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_COLKEN;
<> 144:ef7eb2e8f9f7 680
AnnaBridge 167:e84263d55307 681 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 682 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 683
<> 144:ef7eb2e8f9f7 684 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 685 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 686
<> 144:ef7eb2e8f9f7 687 /* Process unlocked */
<> 144:ef7eb2e8f9f7 688 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 689
<> 144:ef7eb2e8f9f7 690 return HAL_OK;
<> 144:ef7eb2e8f9f7 691 }
<> 144:ef7eb2e8f9f7 692
<> 144:ef7eb2e8f9f7 693 /**
<> 144:ef7eb2e8f9f7 694 * @brief Enable the color lookup table.
AnnaBridge 167:e84263d55307 695 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 696 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 697 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 698 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 699 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 700 * @retval HAL status
<> 144:ef7eb2e8f9f7 701 */
<> 144:ef7eb2e8f9f7 702 HAL_StatusTypeDef HAL_LTDC_EnableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 703 {
AnnaBridge 167:e84263d55307 704 /* Check the parameters */
AnnaBridge 167:e84263d55307 705 assert_param(IS_LTDC_LAYER(LayerIdx));
<> 144:ef7eb2e8f9f7 706
<> 144:ef7eb2e8f9f7 707 /* Process locked */
<> 144:ef7eb2e8f9f7 708 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 709
<> 144:ef7eb2e8f9f7 710 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 711 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 712
AnnaBridge 167:e84263d55307 713 /* Enable LTDC color lookup table by setting CLUTEN bit */
<> 144:ef7eb2e8f9f7 714 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_CLUTEN;
<> 144:ef7eb2e8f9f7 715
AnnaBridge 167:e84263d55307 716 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 717 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 718
<> 144:ef7eb2e8f9f7 719 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 720 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 721
<> 144:ef7eb2e8f9f7 722 /* Process unlocked */
<> 144:ef7eb2e8f9f7 723 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 724
<> 144:ef7eb2e8f9f7 725 return HAL_OK;
<> 144:ef7eb2e8f9f7 726 }
<> 144:ef7eb2e8f9f7 727
<> 144:ef7eb2e8f9f7 728 /**
<> 144:ef7eb2e8f9f7 729 * @brief Disable the color lookup table.
AnnaBridge 167:e84263d55307 730 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 731 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 732 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 733 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 734 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 735 * @retval HAL status
<> 144:ef7eb2e8f9f7 736 */
<> 144:ef7eb2e8f9f7 737 HAL_StatusTypeDef HAL_LTDC_DisableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 738 {
AnnaBridge 167:e84263d55307 739 /* Check the parameters */
AnnaBridge 167:e84263d55307 740 assert_param(IS_LTDC_LAYER(LayerIdx));
<> 144:ef7eb2e8f9f7 741
<> 144:ef7eb2e8f9f7 742 /* Process locked */
<> 144:ef7eb2e8f9f7 743 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 744
<> 144:ef7eb2e8f9f7 745 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 746 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 747
<> 144:ef7eb2e8f9f7 748 /* Disable LTDC color lookup table by setting CLUTEN bit */
<> 144:ef7eb2e8f9f7 749 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_CLUTEN;
<> 144:ef7eb2e8f9f7 750
AnnaBridge 167:e84263d55307 751 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 752 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 753
<> 144:ef7eb2e8f9f7 754 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 755 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 756
<> 144:ef7eb2e8f9f7 757 /* Process unlocked */
<> 144:ef7eb2e8f9f7 758 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 759
<> 144:ef7eb2e8f9f7 760 return HAL_OK;
<> 144:ef7eb2e8f9f7 761 }
<> 144:ef7eb2e8f9f7 762
<> 144:ef7eb2e8f9f7 763 /**
AnnaBridge 167:e84263d55307 764 * @brief Enable Dither.
AnnaBridge 167:e84263d55307 765 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 766 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 767 * @retval HAL status
<> 144:ef7eb2e8f9f7 768 */
<> 144:ef7eb2e8f9f7 769
<> 144:ef7eb2e8f9f7 770 HAL_StatusTypeDef HAL_LTDC_EnableDither(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 771 {
<> 144:ef7eb2e8f9f7 772 /* Process locked */
<> 144:ef7eb2e8f9f7 773 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 774
<> 144:ef7eb2e8f9f7 775 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 776 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 777
<> 144:ef7eb2e8f9f7 778 /* Enable Dither by setting DTEN bit */
AnnaBridge 167:e84263d55307 779 LTDC->GCR |= (uint32_t)LTDC_GCR_DEN;
<> 144:ef7eb2e8f9f7 780
<> 144:ef7eb2e8f9f7 781 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 782 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 783
<> 144:ef7eb2e8f9f7 784 /* Process unlocked */
<> 144:ef7eb2e8f9f7 785 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 786
<> 144:ef7eb2e8f9f7 787 return HAL_OK;
<> 144:ef7eb2e8f9f7 788 }
<> 144:ef7eb2e8f9f7 789
<> 144:ef7eb2e8f9f7 790 /**
AnnaBridge 167:e84263d55307 791 * @brief Disable Dither.
AnnaBridge 167:e84263d55307 792 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 793 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 794 * @retval HAL status
<> 144:ef7eb2e8f9f7 795 */
<> 144:ef7eb2e8f9f7 796
<> 144:ef7eb2e8f9f7 797 HAL_StatusTypeDef HAL_LTDC_DisableDither(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 798 {
<> 144:ef7eb2e8f9f7 799 /* Process locked */
<> 144:ef7eb2e8f9f7 800 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 801
<> 144:ef7eb2e8f9f7 802 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 803 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 804
<> 144:ef7eb2e8f9f7 805 /* Disable Dither by setting DTEN bit */
AnnaBridge 167:e84263d55307 806 LTDC->GCR &= ~(uint32_t)LTDC_GCR_DEN;
<> 144:ef7eb2e8f9f7 807
<> 144:ef7eb2e8f9f7 808 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 809 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 810
<> 144:ef7eb2e8f9f7 811 /* Process unlocked */
<> 144:ef7eb2e8f9f7 812 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 813
<> 144:ef7eb2e8f9f7 814 return HAL_OK;
<> 144:ef7eb2e8f9f7 815 }
<> 144:ef7eb2e8f9f7 816
<> 144:ef7eb2e8f9f7 817 /**
<> 144:ef7eb2e8f9f7 818 * @brief Set the LTDC window size.
AnnaBridge 167:e84263d55307 819 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 820 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 821 * @param XSize LTDC Pixel per line
AnnaBridge 167:e84263d55307 822 * @param YSize LTDC Line number
AnnaBridge 167:e84263d55307 823 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 824 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 825 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 826 * @retval HAL status
<> 144:ef7eb2e8f9f7 827 */
<> 144:ef7eb2e8f9f7 828 HAL_StatusTypeDef HAL_LTDC_SetWindowSize(LTDC_HandleTypeDef *hltdc, uint32_t XSize, uint32_t YSize, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 829 {
<> 144:ef7eb2e8f9f7 830 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 831
AnnaBridge 167:e84263d55307 832 /* Check the parameters (Layers parameters)*/
AnnaBridge 167:e84263d55307 833 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 834 assert_param(IS_LTDC_CFBLL(XSize));
AnnaBridge 167:e84263d55307 835 assert_param(IS_LTDC_CFBLNBR(YSize));
AnnaBridge 167:e84263d55307 836
<> 144:ef7eb2e8f9f7 837 /* Process locked */
<> 144:ef7eb2e8f9f7 838 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 839
<> 144:ef7eb2e8f9f7 840 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 841 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 842
<> 144:ef7eb2e8f9f7 843 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 844 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 845
AnnaBridge 167:e84263d55307 846 /* update horizontal stop */
<> 144:ef7eb2e8f9f7 847 pLayerCfg->WindowX1 = XSize + pLayerCfg->WindowX0;
<> 144:ef7eb2e8f9f7 848
AnnaBridge 167:e84263d55307 849 /* update vertical stop */
<> 144:ef7eb2e8f9f7 850 pLayerCfg->WindowY1 = YSize + pLayerCfg->WindowY0;
<> 144:ef7eb2e8f9f7 851
<> 144:ef7eb2e8f9f7 852 /* Reconfigures the color frame buffer pitch in byte */
<> 144:ef7eb2e8f9f7 853 pLayerCfg->ImageWidth = XSize;
<> 144:ef7eb2e8f9f7 854
<> 144:ef7eb2e8f9f7 855 /* Reconfigures the frame buffer line number */
<> 144:ef7eb2e8f9f7 856 pLayerCfg->ImageHeight = YSize;
<> 144:ef7eb2e8f9f7 857
<> 144:ef7eb2e8f9f7 858 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 859 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 860
AnnaBridge 167:e84263d55307 861 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 862 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 863
<> 144:ef7eb2e8f9f7 864 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 865 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 866
<> 144:ef7eb2e8f9f7 867 /* Process unlocked */
<> 144:ef7eb2e8f9f7 868 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 869
<> 144:ef7eb2e8f9f7 870 return HAL_OK;
<> 144:ef7eb2e8f9f7 871 }
<> 144:ef7eb2e8f9f7 872
<> 144:ef7eb2e8f9f7 873 /**
<> 144:ef7eb2e8f9f7 874 * @brief Set the LTDC window position.
AnnaBridge 167:e84263d55307 875 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 876 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 877 * @param X0 LTDC window X offset
AnnaBridge 167:e84263d55307 878 * @param Y0 LTDC window Y offset
AnnaBridge 167:e84263d55307 879 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 880 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 881 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 882 * @retval HAL status
<> 144:ef7eb2e8f9f7 883 */
<> 144:ef7eb2e8f9f7 884 HAL_StatusTypeDef HAL_LTDC_SetWindowPosition(LTDC_HandleTypeDef *hltdc, uint32_t X0, uint32_t Y0, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 885 {
<> 144:ef7eb2e8f9f7 886 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 887
AnnaBridge 167:e84263d55307 888 /* Check the parameters */
AnnaBridge 167:e84263d55307 889 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 890 assert_param(IS_LTDC_CFBLL(X0));
AnnaBridge 167:e84263d55307 891 assert_param(IS_LTDC_CFBLNBR(Y0));
AnnaBridge 167:e84263d55307 892
<> 144:ef7eb2e8f9f7 893 /* Process locked */
<> 144:ef7eb2e8f9f7 894 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 895
<> 144:ef7eb2e8f9f7 896 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 897 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 898
<> 144:ef7eb2e8f9f7 899 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 900 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 901
<> 144:ef7eb2e8f9f7 902 /* update horizontal start/stop */
<> 144:ef7eb2e8f9f7 903 pLayerCfg->WindowX0 = X0;
<> 144:ef7eb2e8f9f7 904 pLayerCfg->WindowX1 = X0 + pLayerCfg->ImageWidth;
<> 144:ef7eb2e8f9f7 905
<> 144:ef7eb2e8f9f7 906 /* update vertical start/stop */
<> 144:ef7eb2e8f9f7 907 pLayerCfg->WindowY0 = Y0;
<> 144:ef7eb2e8f9f7 908 pLayerCfg->WindowY1 = Y0 + pLayerCfg->ImageHeight;
<> 144:ef7eb2e8f9f7 909
<> 144:ef7eb2e8f9f7 910 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 911 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 912
AnnaBridge 167:e84263d55307 913 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 914 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 915
<> 144:ef7eb2e8f9f7 916 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 917 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 918
<> 144:ef7eb2e8f9f7 919 /* Process unlocked */
<> 144:ef7eb2e8f9f7 920 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 921
<> 144:ef7eb2e8f9f7 922 return HAL_OK;
<> 144:ef7eb2e8f9f7 923 }
<> 144:ef7eb2e8f9f7 924
<> 144:ef7eb2e8f9f7 925 /**
<> 144:ef7eb2e8f9f7 926 * @brief Reconfigure the pixel format.
AnnaBridge 167:e84263d55307 927 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 928 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 929 * @param Pixelformat new pixel format value.
AnnaBridge 167:e84263d55307 930 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 931 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 932 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1).
<> 144:ef7eb2e8f9f7 933 * @retval HAL status
<> 144:ef7eb2e8f9f7 934 */
<> 144:ef7eb2e8f9f7 935 HAL_StatusTypeDef HAL_LTDC_SetPixelFormat(LTDC_HandleTypeDef *hltdc, uint32_t Pixelformat, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 936 {
<> 144:ef7eb2e8f9f7 937 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 938
AnnaBridge 167:e84263d55307 939 /* Check the parameters */
AnnaBridge 167:e84263d55307 940 assert_param(IS_LTDC_PIXEL_FORMAT(Pixelformat));
AnnaBridge 167:e84263d55307 941 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 942
<> 144:ef7eb2e8f9f7 943 /* Process locked */
<> 144:ef7eb2e8f9f7 944 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 945
<> 144:ef7eb2e8f9f7 946 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 947 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 948
<> 144:ef7eb2e8f9f7 949 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 950 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 951
<> 144:ef7eb2e8f9f7 952 /* Reconfigure the pixel format */
<> 144:ef7eb2e8f9f7 953 pLayerCfg->PixelFormat = Pixelformat;
<> 144:ef7eb2e8f9f7 954
<> 144:ef7eb2e8f9f7 955 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 956 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 957
AnnaBridge 167:e84263d55307 958 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 959 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 960
<> 144:ef7eb2e8f9f7 961 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 962 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 963
<> 144:ef7eb2e8f9f7 964 /* Process unlocked */
<> 144:ef7eb2e8f9f7 965 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 966
<> 144:ef7eb2e8f9f7 967 return HAL_OK;
<> 144:ef7eb2e8f9f7 968 }
<> 144:ef7eb2e8f9f7 969
<> 144:ef7eb2e8f9f7 970 /**
<> 144:ef7eb2e8f9f7 971 * @brief Reconfigure the layer alpha value.
AnnaBridge 167:e84263d55307 972 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 973 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 974 * @param Alpha new alpha value.
AnnaBridge 167:e84263d55307 975 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 976 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 977 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 978 * @retval HAL status
<> 144:ef7eb2e8f9f7 979 */
<> 144:ef7eb2e8f9f7 980 HAL_StatusTypeDef HAL_LTDC_SetAlpha(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 981 {
<> 144:ef7eb2e8f9f7 982 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 983
AnnaBridge 167:e84263d55307 984 /* Check the parameters */
AnnaBridge 167:e84263d55307 985 assert_param(IS_LTDC_ALPHA(Alpha));
AnnaBridge 167:e84263d55307 986 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 987
<> 144:ef7eb2e8f9f7 988 /* Process locked */
<> 144:ef7eb2e8f9f7 989 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 990
<> 144:ef7eb2e8f9f7 991 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 992 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 993
<> 144:ef7eb2e8f9f7 994 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 995 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 996
<> 144:ef7eb2e8f9f7 997 /* Reconfigure the Alpha value */
<> 144:ef7eb2e8f9f7 998 pLayerCfg->Alpha = Alpha;
<> 144:ef7eb2e8f9f7 999
<> 144:ef7eb2e8f9f7 1000 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 1001 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1002
AnnaBridge 167:e84263d55307 1003 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 1004 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 1005
<> 144:ef7eb2e8f9f7 1006 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1007 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1008
<> 144:ef7eb2e8f9f7 1009 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1010 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1011
<> 144:ef7eb2e8f9f7 1012 return HAL_OK;
<> 144:ef7eb2e8f9f7 1013 }
<> 144:ef7eb2e8f9f7 1014 /**
<> 144:ef7eb2e8f9f7 1015 * @brief Reconfigure the frame buffer Address.
AnnaBridge 167:e84263d55307 1016 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1017 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1018 * @param Address new address value.
AnnaBridge 167:e84263d55307 1019 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1020 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1021 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1).
<> 144:ef7eb2e8f9f7 1022 * @retval HAL status
<> 144:ef7eb2e8f9f7 1023 */
<> 144:ef7eb2e8f9f7 1024 HAL_StatusTypeDef HAL_LTDC_SetAddress(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1025 {
<> 144:ef7eb2e8f9f7 1026 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 1027
AnnaBridge 167:e84263d55307 1028 /* Check the parameters */
AnnaBridge 167:e84263d55307 1029 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1030
<> 144:ef7eb2e8f9f7 1031 /* Process locked */
<> 144:ef7eb2e8f9f7 1032 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1033
<> 144:ef7eb2e8f9f7 1034 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1035 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1036
<> 144:ef7eb2e8f9f7 1037 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 1038 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 1039
<> 144:ef7eb2e8f9f7 1040 /* Reconfigure the Address */
<> 144:ef7eb2e8f9f7 1041 pLayerCfg->FBStartAdress = Address;
<> 144:ef7eb2e8f9f7 1042
<> 144:ef7eb2e8f9f7 1043 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 1044 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1045
AnnaBridge 167:e84263d55307 1046 /* Set the Immediate Reload type */
<> 144:ef7eb2e8f9f7 1047 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 1048
<> 144:ef7eb2e8f9f7 1049 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1050 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1051
<> 144:ef7eb2e8f9f7 1052 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1053 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1054
<> 144:ef7eb2e8f9f7 1055 return HAL_OK;
<> 144:ef7eb2e8f9f7 1056 }
<> 144:ef7eb2e8f9f7 1057
<> 144:ef7eb2e8f9f7 1058 /**
<> 144:ef7eb2e8f9f7 1059 * @brief Function used to reconfigure the pitch for specific cases where the attached LayerIdx buffer have a width that is
<> 144:ef7eb2e8f9f7 1060 * larger than the one intended to be displayed on screen. Example of a buffer 800x480 attached to layer for which we
<> 144:ef7eb2e8f9f7 1061 * want to read and display on screen only a portion 320x240 taken in the center of the buffer. The pitch in pixels
<> 144:ef7eb2e8f9f7 1062 * will be in that case 800 pixels and not 320 pixels as initially configured by previous call to HAL_LTDC_ConfigLayer().
AnnaBridge 167:e84263d55307 1063 * @note This function should be called only after a previous call to HAL_LTDC_ConfigLayer() to modify the default pitch
AnnaBridge 167:e84263d55307 1064 * configured by HAL_LTDC_ConfigLayer() when required (refer to example described just above).
AnnaBridge 167:e84263d55307 1065 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1066 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1067 * @param LinePitchInPixels New line pitch in pixels to configure for LTDC layer 'LayerIdx'.
AnnaBridge 167:e84263d55307 1068 * @param LayerIdx LTDC layer index concerned by the modification of line pitch.
<> 144:ef7eb2e8f9f7 1069 * @retval HAL status
<> 144:ef7eb2e8f9f7 1070 */
<> 144:ef7eb2e8f9f7 1071 HAL_StatusTypeDef HAL_LTDC_SetPitch(LTDC_HandleTypeDef *hltdc, uint32_t LinePitchInPixels, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1072 {
<> 144:ef7eb2e8f9f7 1073 uint32_t tmp = 0U;
<> 144:ef7eb2e8f9f7 1074 uint32_t pitchUpdate = 0U;
<> 144:ef7eb2e8f9f7 1075 uint32_t pixelFormat = 0U;
AnnaBridge 167:e84263d55307 1076
AnnaBridge 167:e84263d55307 1077 /* Check the parameters */
AnnaBridge 167:e84263d55307 1078 assert_param(IS_LTDC_LAYER(LayerIdx));
<> 144:ef7eb2e8f9f7 1079
<> 144:ef7eb2e8f9f7 1080 /* Process locked */
<> 144:ef7eb2e8f9f7 1081 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1082
<> 144:ef7eb2e8f9f7 1083 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1084 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1085
<> 144:ef7eb2e8f9f7 1086 /* get LayerIdx used pixel format */
<> 144:ef7eb2e8f9f7 1087 pixelFormat = hltdc->LayerCfg[LayerIdx].PixelFormat;
<> 144:ef7eb2e8f9f7 1088
<> 144:ef7eb2e8f9f7 1089 if(pixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
<> 144:ef7eb2e8f9f7 1090 {
<> 144:ef7eb2e8f9f7 1091 tmp = 4U;
<> 144:ef7eb2e8f9f7 1092 }
<> 144:ef7eb2e8f9f7 1093 else if (pixelFormat == LTDC_PIXEL_FORMAT_RGB888)
<> 144:ef7eb2e8f9f7 1094 {
<> 144:ef7eb2e8f9f7 1095 tmp = 3U;
<> 144:ef7eb2e8f9f7 1096 }
<> 144:ef7eb2e8f9f7 1097 else if((pixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
<> 144:ef7eb2e8f9f7 1098 (pixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
<> 144:ef7eb2e8f9f7 1099 (pixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
<> 144:ef7eb2e8f9f7 1100 (pixelFormat == LTDC_PIXEL_FORMAT_AL88))
<> 144:ef7eb2e8f9f7 1101 {
<> 144:ef7eb2e8f9f7 1102 tmp = 2U;
<> 144:ef7eb2e8f9f7 1103 }
<> 144:ef7eb2e8f9f7 1104 else
<> 144:ef7eb2e8f9f7 1105 {
<> 144:ef7eb2e8f9f7 1106 tmp = 1U;
<> 144:ef7eb2e8f9f7 1107 }
<> 144:ef7eb2e8f9f7 1108
<> 144:ef7eb2e8f9f7 1109 pitchUpdate = ((LinePitchInPixels * tmp) << 16U);
<> 144:ef7eb2e8f9f7 1110
<> 144:ef7eb2e8f9f7 1111 /* Clear previously set standard pitch */
<> 144:ef7eb2e8f9f7 1112 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~LTDC_LxCFBLR_CFBP;
<> 144:ef7eb2e8f9f7 1113
AnnaBridge 167:e84263d55307 1114 /* Set the Reload type as immediate update of LTDC pitch configured above */
<> 144:ef7eb2e8f9f7 1115 LTDC->SRCR |= LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 1116
<> 144:ef7eb2e8f9f7 1117 /* Set new line pitch value */
<> 144:ef7eb2e8f9f7 1118 LTDC_LAYER(hltdc, LayerIdx)->CFBLR |= pitchUpdate;
<> 144:ef7eb2e8f9f7 1119
AnnaBridge 167:e84263d55307 1120 /* Set the Reload type as immediate update of LTDC pitch configured above */
<> 144:ef7eb2e8f9f7 1121 LTDC->SRCR |= LTDC_SRCR_IMR;
<> 144:ef7eb2e8f9f7 1122
<> 144:ef7eb2e8f9f7 1123 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1124 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1125
<> 144:ef7eb2e8f9f7 1126 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1127 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1128
<> 144:ef7eb2e8f9f7 1129 return HAL_OK;
<> 144:ef7eb2e8f9f7 1130 }
<> 144:ef7eb2e8f9f7 1131
<> 144:ef7eb2e8f9f7 1132 /**
AnnaBridge 167:e84263d55307 1133 * @brief Define the position of the line interrupt.
AnnaBridge 167:e84263d55307 1134 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
AnnaBridge 167:e84263d55307 1135 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1136 * @param Line Line Interrupt Position.
AnnaBridge 167:e84263d55307 1137 * @note User application may resort to HAL_LTDC_LineEventCallback() at line interrupt generation.
<> 144:ef7eb2e8f9f7 1138 * @retval HAL status
<> 144:ef7eb2e8f9f7 1139 */
<> 144:ef7eb2e8f9f7 1140 HAL_StatusTypeDef HAL_LTDC_ProgramLineEvent(LTDC_HandleTypeDef *hltdc, uint32_t Line)
<> 144:ef7eb2e8f9f7 1141 {
AnnaBridge 167:e84263d55307 1142 /* Check the parameters */
AnnaBridge 167:e84263d55307 1143 assert_param(IS_LTDC_LIPOS(Line));
AnnaBridge 167:e84263d55307 1144
<> 144:ef7eb2e8f9f7 1145 /* Process locked */
<> 144:ef7eb2e8f9f7 1146 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1147
<> 144:ef7eb2e8f9f7 1148 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1149 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1150
AnnaBridge 167:e84263d55307 1151 /* Disable the Line interrupt */
AnnaBridge 167:e84263d55307 1152 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI);
AnnaBridge 167:e84263d55307 1153
AnnaBridge 167:e84263d55307 1154 /* Set the Line Interrupt position */
AnnaBridge 167:e84263d55307 1155 LTDC->LIPCR = (uint32_t)Line;
<> 144:ef7eb2e8f9f7 1156
<> 144:ef7eb2e8f9f7 1157 /* Enable the Line interrupt */
<> 144:ef7eb2e8f9f7 1158 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_LI);
<> 144:ef7eb2e8f9f7 1159
<> 144:ef7eb2e8f9f7 1160 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1161 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1162
<> 144:ef7eb2e8f9f7 1163 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1164 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1165
<> 144:ef7eb2e8f9f7 1166 return HAL_OK;
<> 144:ef7eb2e8f9f7 1167 }
<> 144:ef7eb2e8f9f7 1168
<> 144:ef7eb2e8f9f7 1169 /**
AnnaBridge 167:e84263d55307 1170 * @brief Reload LTDC Layers configuration.
AnnaBridge 167:e84263d55307 1171 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
AnnaBridge 167:e84263d55307 1172 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1173 * @param ReloadType This parameter can be one of the following values :
AnnaBridge 167:e84263d55307 1174 * LTDC_RELOAD_IMMEDIATE : Immediate Reload
AnnaBridge 167:e84263d55307 1175 * LTDC_RELOAD_VERTICAL_BLANKING : Reload in the next Vertical Blanking
AnnaBridge 167:e84263d55307 1176 * @note User application may resort to HAL_LTDC_ReloadEventCallback() at reload interrupt generation.
<> 144:ef7eb2e8f9f7 1177 * @retval HAL status
<> 144:ef7eb2e8f9f7 1178 */
AnnaBridge 167:e84263d55307 1179 HAL_StatusTypeDef HAL_LTDC_Reload(LTDC_HandleTypeDef *hltdc, uint32_t ReloadType)
<> 144:ef7eb2e8f9f7 1180 {
AnnaBridge 167:e84263d55307 1181 /* Check the parameters */
AnnaBridge 167:e84263d55307 1182 assert_param(IS_LTDC_RELOAD(ReloadType));
<> 144:ef7eb2e8f9f7 1183
<> 144:ef7eb2e8f9f7 1184 /* Process locked */
<> 144:ef7eb2e8f9f7 1185 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1186
<> 144:ef7eb2e8f9f7 1187 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1188 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1189
<> 144:ef7eb2e8f9f7 1190 /* Enable the Reload interrupt */
<> 144:ef7eb2e8f9f7 1191 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_RR);
<> 144:ef7eb2e8f9f7 1192
<> 144:ef7eb2e8f9f7 1193 /* Apply Reload type */
<> 144:ef7eb2e8f9f7 1194 hltdc->Instance->SRCR = ReloadType;
<> 144:ef7eb2e8f9f7 1195
<> 144:ef7eb2e8f9f7 1196 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1197 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1198
<> 144:ef7eb2e8f9f7 1199 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1200 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1201
<> 144:ef7eb2e8f9f7 1202 return HAL_OK;
<> 144:ef7eb2e8f9f7 1203 }
<> 144:ef7eb2e8f9f7 1204
<> 144:ef7eb2e8f9f7 1205 /**
<> 144:ef7eb2e8f9f7 1206 * @brief Configure the LTDC Layer according to the specified without reloading
<> 144:ef7eb2e8f9f7 1207 * parameters in the LTDC_InitTypeDef and create the associated handle.
AnnaBridge 167:e84263d55307 1208 * Variant of the function HAL_LTDC_ConfigLayer without immediate reload.
AnnaBridge 167:e84263d55307 1209 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1210 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1211 * @param pLayerCfg pointer to a LTDC_LayerCfgTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1212 * the configuration information for the Layer.
AnnaBridge 167:e84263d55307 1213 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1214 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1215 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1216 * @retval HAL status
<> 144:ef7eb2e8f9f7 1217 */
<> 144:ef7eb2e8f9f7 1218 HAL_StatusTypeDef HAL_LTDC_ConfigLayer_NoReload(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1219 {
AnnaBridge 167:e84263d55307 1220 /* Check the parameters */
AnnaBridge 167:e84263d55307 1221 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1222 assert_param(IS_LTDC_HCONFIGST(pLayerCfg->WindowX0));
AnnaBridge 167:e84263d55307 1223 assert_param(IS_LTDC_HCONFIGSP(pLayerCfg->WindowX1));
AnnaBridge 167:e84263d55307 1224 assert_param(IS_LTDC_VCONFIGST(pLayerCfg->WindowY0));
AnnaBridge 167:e84263d55307 1225 assert_param(IS_LTDC_VCONFIGSP(pLayerCfg->WindowY1));
AnnaBridge 167:e84263d55307 1226 assert_param(IS_LTDC_PIXEL_FORMAT(pLayerCfg->PixelFormat));
AnnaBridge 167:e84263d55307 1227 assert_param(IS_LTDC_ALPHA(pLayerCfg->Alpha));
AnnaBridge 167:e84263d55307 1228 assert_param(IS_LTDC_ALPHA(pLayerCfg->Alpha0));
AnnaBridge 167:e84263d55307 1229 assert_param(IS_LTDC_BLENDING_FACTOR1(pLayerCfg->BlendingFactor1));
AnnaBridge 167:e84263d55307 1230 assert_param(IS_LTDC_BLENDING_FACTOR2(pLayerCfg->BlendingFactor2));
AnnaBridge 167:e84263d55307 1231 assert_param(IS_LTDC_CFBLL(pLayerCfg->ImageWidth));
AnnaBridge 167:e84263d55307 1232 assert_param(IS_LTDC_CFBLNBR(pLayerCfg->ImageHeight));
AnnaBridge 167:e84263d55307 1233
<> 144:ef7eb2e8f9f7 1234 /* Process locked */
<> 144:ef7eb2e8f9f7 1235 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1236
<> 144:ef7eb2e8f9f7 1237 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1238 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1239
<> 144:ef7eb2e8f9f7 1240 /* Copy new layer configuration into handle structure */
<> 144:ef7eb2e8f9f7 1241 hltdc->LayerCfg[LayerIdx] = *pLayerCfg;
<> 144:ef7eb2e8f9f7 1242
<> 144:ef7eb2e8f9f7 1243 /* Configure the LTDC Layer */
<> 144:ef7eb2e8f9f7 1244 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1245
AnnaBridge 167:e84263d55307 1246 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1247
<> 144:ef7eb2e8f9f7 1248 /* Initialize the LTDC state*/
<> 144:ef7eb2e8f9f7 1249 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1250
<> 144:ef7eb2e8f9f7 1251 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1252 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1253
<> 144:ef7eb2e8f9f7 1254 return HAL_OK;
<> 144:ef7eb2e8f9f7 1255 }
<> 144:ef7eb2e8f9f7 1256
<> 144:ef7eb2e8f9f7 1257 /**
<> 144:ef7eb2e8f9f7 1258 * @brief Set the LTDC window size without reloading.
AnnaBridge 167:e84263d55307 1259 * Variant of the function HAL_LTDC_SetWindowSize without immediate reload.
AnnaBridge 167:e84263d55307 1260 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1261 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1262 * @param XSize LTDC Pixel per line
AnnaBridge 167:e84263d55307 1263 * @param YSize LTDC Line number
AnnaBridge 167:e84263d55307 1264 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1265 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1266 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1267 * @retval HAL status
<> 144:ef7eb2e8f9f7 1268 */
<> 144:ef7eb2e8f9f7 1269 HAL_StatusTypeDef HAL_LTDC_SetWindowSize_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t XSize, uint32_t YSize, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1270 {
<> 144:ef7eb2e8f9f7 1271 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 1272
AnnaBridge 167:e84263d55307 1273 /* Check the parameters (Layers parameters)*/
AnnaBridge 167:e84263d55307 1274 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1275 assert_param(IS_LTDC_CFBLL(XSize));
AnnaBridge 167:e84263d55307 1276 assert_param(IS_LTDC_CFBLNBR(YSize));
AnnaBridge 167:e84263d55307 1277
<> 144:ef7eb2e8f9f7 1278 /* Process locked */
<> 144:ef7eb2e8f9f7 1279 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1280
<> 144:ef7eb2e8f9f7 1281 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1282 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1283
<> 144:ef7eb2e8f9f7 1284 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 1285 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 1286
AnnaBridge 167:e84263d55307 1287 /* update horizontal stop */
<> 144:ef7eb2e8f9f7 1288 pLayerCfg->WindowX1 = XSize + pLayerCfg->WindowX0;
<> 144:ef7eb2e8f9f7 1289
AnnaBridge 167:e84263d55307 1290 /* update vertical stop */
<> 144:ef7eb2e8f9f7 1291 pLayerCfg->WindowY1 = YSize + pLayerCfg->WindowY0;
<> 144:ef7eb2e8f9f7 1292
<> 144:ef7eb2e8f9f7 1293 /* Reconfigures the color frame buffer pitch in byte */
<> 144:ef7eb2e8f9f7 1294 pLayerCfg->ImageWidth = XSize;
<> 144:ef7eb2e8f9f7 1295
<> 144:ef7eb2e8f9f7 1296 /* Reconfigures the frame buffer line number */
<> 144:ef7eb2e8f9f7 1297 pLayerCfg->ImageHeight = YSize;
<> 144:ef7eb2e8f9f7 1298
<> 144:ef7eb2e8f9f7 1299 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 1300 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1301
AnnaBridge 167:e84263d55307 1302 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1303
<> 144:ef7eb2e8f9f7 1304 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1305 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1306
<> 144:ef7eb2e8f9f7 1307 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1308 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1309
<> 144:ef7eb2e8f9f7 1310 return HAL_OK;
<> 144:ef7eb2e8f9f7 1311 }
<> 144:ef7eb2e8f9f7 1312
<> 144:ef7eb2e8f9f7 1313 /**
<> 144:ef7eb2e8f9f7 1314 * @brief Set the LTDC window position without reloading.
AnnaBridge 167:e84263d55307 1315 * Variant of the function HAL_LTDC_SetWindowPosition without immediate reload.
AnnaBridge 167:e84263d55307 1316 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1317 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1318 * @param X0 LTDC window X offset
AnnaBridge 167:e84263d55307 1319 * @param Y0 LTDC window Y offset
AnnaBridge 167:e84263d55307 1320 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1321 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1322 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1323 * @retval HAL status
<> 144:ef7eb2e8f9f7 1324 */
<> 144:ef7eb2e8f9f7 1325 HAL_StatusTypeDef HAL_LTDC_SetWindowPosition_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t X0, uint32_t Y0, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1326 {
<> 144:ef7eb2e8f9f7 1327 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 1328
AnnaBridge 167:e84263d55307 1329 /* Check the parameters */
AnnaBridge 167:e84263d55307 1330 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1331 assert_param(IS_LTDC_CFBLL(X0));
AnnaBridge 167:e84263d55307 1332 assert_param(IS_LTDC_CFBLNBR(Y0));
AnnaBridge 167:e84263d55307 1333
<> 144:ef7eb2e8f9f7 1334 /* Process locked */
<> 144:ef7eb2e8f9f7 1335 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1336
<> 144:ef7eb2e8f9f7 1337 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1338 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1339
<> 144:ef7eb2e8f9f7 1340 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 1341 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 1342
<> 144:ef7eb2e8f9f7 1343 /* update horizontal start/stop */
<> 144:ef7eb2e8f9f7 1344 pLayerCfg->WindowX0 = X0;
<> 144:ef7eb2e8f9f7 1345 pLayerCfg->WindowX1 = X0 + pLayerCfg->ImageWidth;
<> 144:ef7eb2e8f9f7 1346
<> 144:ef7eb2e8f9f7 1347 /* update vertical start/stop */
<> 144:ef7eb2e8f9f7 1348 pLayerCfg->WindowY0 = Y0;
<> 144:ef7eb2e8f9f7 1349 pLayerCfg->WindowY1 = Y0 + pLayerCfg->ImageHeight;
<> 144:ef7eb2e8f9f7 1350
<> 144:ef7eb2e8f9f7 1351 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 1352 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1353
AnnaBridge 167:e84263d55307 1354 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1355
<> 144:ef7eb2e8f9f7 1356 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1357 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1358
<> 144:ef7eb2e8f9f7 1359 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1360 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1361
<> 144:ef7eb2e8f9f7 1362 return HAL_OK;
<> 144:ef7eb2e8f9f7 1363 }
<> 144:ef7eb2e8f9f7 1364
<> 144:ef7eb2e8f9f7 1365 /**
<> 144:ef7eb2e8f9f7 1366 * @brief Reconfigure the pixel format without reloading.
AnnaBridge 167:e84263d55307 1367 * Variant of the function HAL_LTDC_SetPixelFormat without immediate reload.
AnnaBridge 167:e84263d55307 1368 * @param hltdc pointer to a LTDC_HandleTypeDfef structure that contains
<> 144:ef7eb2e8f9f7 1369 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1370 * @param Pixelformat new pixel format value.
AnnaBridge 167:e84263d55307 1371 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1372 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1373 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1).
<> 144:ef7eb2e8f9f7 1374 * @retval HAL status
<> 144:ef7eb2e8f9f7 1375 */
<> 144:ef7eb2e8f9f7 1376 HAL_StatusTypeDef HAL_LTDC_SetPixelFormat_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Pixelformat, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1377 {
<> 144:ef7eb2e8f9f7 1378 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 1379
AnnaBridge 167:e84263d55307 1380 /* Check the parameters */
AnnaBridge 167:e84263d55307 1381 assert_param(IS_LTDC_PIXEL_FORMAT(Pixelformat));
AnnaBridge 167:e84263d55307 1382 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1383
<> 144:ef7eb2e8f9f7 1384 /* Process locked */
<> 144:ef7eb2e8f9f7 1385 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1386
<> 144:ef7eb2e8f9f7 1387 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1388 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1389
<> 144:ef7eb2e8f9f7 1390 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 1391 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 1392
<> 144:ef7eb2e8f9f7 1393 /* Reconfigure the pixel format */
<> 144:ef7eb2e8f9f7 1394 pLayerCfg->PixelFormat = Pixelformat;
<> 144:ef7eb2e8f9f7 1395
<> 144:ef7eb2e8f9f7 1396 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 1397 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1398
AnnaBridge 167:e84263d55307 1399 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1400
<> 144:ef7eb2e8f9f7 1401 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1402 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1403
<> 144:ef7eb2e8f9f7 1404 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1405 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1406
<> 144:ef7eb2e8f9f7 1407 return HAL_OK;
<> 144:ef7eb2e8f9f7 1408 }
<> 144:ef7eb2e8f9f7 1409
<> 144:ef7eb2e8f9f7 1410 /**
<> 144:ef7eb2e8f9f7 1411 * @brief Reconfigure the layer alpha value without reloading.
AnnaBridge 167:e84263d55307 1412 * Variant of the function HAL_LTDC_SetAlpha without immediate reload.
AnnaBridge 167:e84263d55307 1413 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1414 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1415 * @param Alpha new alpha value.
AnnaBridge 167:e84263d55307 1416 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1417 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1418 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1419 * @retval HAL status
<> 144:ef7eb2e8f9f7 1420 */
<> 144:ef7eb2e8f9f7 1421 HAL_StatusTypeDef HAL_LTDC_SetAlpha_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1422 {
<> 144:ef7eb2e8f9f7 1423 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 1424
AnnaBridge 167:e84263d55307 1425 /* Check the parameters */
AnnaBridge 167:e84263d55307 1426 assert_param(IS_LTDC_ALPHA(Alpha));
AnnaBridge 167:e84263d55307 1427 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1428
<> 144:ef7eb2e8f9f7 1429 /* Process locked */
<> 144:ef7eb2e8f9f7 1430 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1431
<> 144:ef7eb2e8f9f7 1432 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1433 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1434
<> 144:ef7eb2e8f9f7 1435 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 1436 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 1437
<> 144:ef7eb2e8f9f7 1438 /* Reconfigure the Alpha value */
<> 144:ef7eb2e8f9f7 1439 pLayerCfg->Alpha = Alpha;
<> 144:ef7eb2e8f9f7 1440
<> 144:ef7eb2e8f9f7 1441 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 1442 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1443
AnnaBridge 167:e84263d55307 1444 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1445
<> 144:ef7eb2e8f9f7 1446 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1447 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1448
<> 144:ef7eb2e8f9f7 1449 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1450 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1451
<> 144:ef7eb2e8f9f7 1452 return HAL_OK;
<> 144:ef7eb2e8f9f7 1453 }
<> 144:ef7eb2e8f9f7 1454
<> 144:ef7eb2e8f9f7 1455 /**
<> 144:ef7eb2e8f9f7 1456 * @brief Reconfigure the frame buffer Address without reloading.
AnnaBridge 167:e84263d55307 1457 * Variant of the function HAL_LTDC_SetAddress without immediate reload.
AnnaBridge 167:e84263d55307 1458 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1459 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1460 * @param Address new address value.
AnnaBridge 167:e84263d55307 1461 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1462 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1463 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1).
<> 144:ef7eb2e8f9f7 1464 * @retval HAL status
<> 144:ef7eb2e8f9f7 1465 */
<> 144:ef7eb2e8f9f7 1466 HAL_StatusTypeDef HAL_LTDC_SetAddress_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1467 {
<> 144:ef7eb2e8f9f7 1468 LTDC_LayerCfgTypeDef *pLayerCfg;
<> 144:ef7eb2e8f9f7 1469
AnnaBridge 167:e84263d55307 1470 /* Check the parameters */
AnnaBridge 167:e84263d55307 1471 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1472
<> 144:ef7eb2e8f9f7 1473 /* Process locked */
<> 144:ef7eb2e8f9f7 1474 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1475
<> 144:ef7eb2e8f9f7 1476 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1477 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1478
<> 144:ef7eb2e8f9f7 1479 /* Get layer configuration from handle structure */
<> 144:ef7eb2e8f9f7 1480 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
<> 144:ef7eb2e8f9f7 1481
<> 144:ef7eb2e8f9f7 1482 /* Reconfigure the Address */
<> 144:ef7eb2e8f9f7 1483 pLayerCfg->FBStartAdress = Address;
<> 144:ef7eb2e8f9f7 1484
<> 144:ef7eb2e8f9f7 1485 /* Set LTDC parameters */
<> 144:ef7eb2e8f9f7 1486 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
<> 144:ef7eb2e8f9f7 1487
AnnaBridge 167:e84263d55307 1488 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1489
<> 144:ef7eb2e8f9f7 1490 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1491 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1492
<> 144:ef7eb2e8f9f7 1493 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1494 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1495
<> 144:ef7eb2e8f9f7 1496 return HAL_OK;
<> 144:ef7eb2e8f9f7 1497 }
<> 144:ef7eb2e8f9f7 1498
<> 144:ef7eb2e8f9f7 1499 /**
<> 144:ef7eb2e8f9f7 1500 * @brief Function used to reconfigure the pitch for specific cases where the attached LayerIdx buffer have a width that is
<> 144:ef7eb2e8f9f7 1501 * larger than the one intended to be displayed on screen. Example of a buffer 800x480 attached to layer for which we
<> 144:ef7eb2e8f9f7 1502 * want to read and display on screen only a portion 320x240 taken in the center of the buffer. The pitch in pixels
<> 144:ef7eb2e8f9f7 1503 * will be in that case 800 pixels and not 320 pixels as initially configured by previous call to HAL_LTDC_ConfigLayer().
AnnaBridge 167:e84263d55307 1504 * @note This function should be called only after a previous call to HAL_LTDC_ConfigLayer() to modify the default pitch
AnnaBridge 167:e84263d55307 1505 * configured by HAL_LTDC_ConfigLayer() when required (refer to example described just above).
AnnaBridge 167:e84263d55307 1506 * Variant of the function HAL_LTDC_SetPitch without immediate reload.
AnnaBridge 167:e84263d55307 1507 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1508 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1509 * @param LinePitchInPixels New line pitch in pixels to configure for LTDC layer 'LayerIdx'.
AnnaBridge 167:e84263d55307 1510 * @param LayerIdx LTDC layer index concerned by the modification of line pitch.
<> 144:ef7eb2e8f9f7 1511 * @retval HAL status
<> 144:ef7eb2e8f9f7 1512 */
<> 144:ef7eb2e8f9f7 1513 HAL_StatusTypeDef HAL_LTDC_SetPitch_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LinePitchInPixels, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1514 {
AnnaBridge 167:e84263d55307 1515 uint32_t tmp = 0U;
AnnaBridge 167:e84263d55307 1516 uint32_t pitchUpdate = 0U;
AnnaBridge 167:e84263d55307 1517 uint32_t pixelFormat = 0U;
AnnaBridge 167:e84263d55307 1518
AnnaBridge 167:e84263d55307 1519 /* Check the parameters */
AnnaBridge 167:e84263d55307 1520 assert_param(IS_LTDC_LAYER(LayerIdx));
<> 144:ef7eb2e8f9f7 1521
<> 144:ef7eb2e8f9f7 1522 /* Process locked */
<> 144:ef7eb2e8f9f7 1523 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1524
<> 144:ef7eb2e8f9f7 1525 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1526 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1527
<> 144:ef7eb2e8f9f7 1528 /* get LayerIdx used pixel format */
<> 144:ef7eb2e8f9f7 1529 pixelFormat = hltdc->LayerCfg[LayerIdx].PixelFormat;
<> 144:ef7eb2e8f9f7 1530
<> 144:ef7eb2e8f9f7 1531 if(pixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
<> 144:ef7eb2e8f9f7 1532 {
AnnaBridge 167:e84263d55307 1533 tmp = 4U;
<> 144:ef7eb2e8f9f7 1534 }
<> 144:ef7eb2e8f9f7 1535 else if (pixelFormat == LTDC_PIXEL_FORMAT_RGB888)
<> 144:ef7eb2e8f9f7 1536 {
AnnaBridge 167:e84263d55307 1537 tmp = 3U;
<> 144:ef7eb2e8f9f7 1538 }
<> 144:ef7eb2e8f9f7 1539 else if((pixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
<> 144:ef7eb2e8f9f7 1540 (pixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
<> 144:ef7eb2e8f9f7 1541 (pixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
<> 144:ef7eb2e8f9f7 1542 (pixelFormat == LTDC_PIXEL_FORMAT_AL88))
<> 144:ef7eb2e8f9f7 1543 {
AnnaBridge 167:e84263d55307 1544 tmp = 2U;
<> 144:ef7eb2e8f9f7 1545 }
<> 144:ef7eb2e8f9f7 1546 else
<> 144:ef7eb2e8f9f7 1547 {
AnnaBridge 167:e84263d55307 1548 tmp = 1U;
<> 144:ef7eb2e8f9f7 1549 }
<> 144:ef7eb2e8f9f7 1550
AnnaBridge 167:e84263d55307 1551 pitchUpdate = ((LinePitchInPixels * tmp) << 16U);
<> 144:ef7eb2e8f9f7 1552
<> 144:ef7eb2e8f9f7 1553 /* Clear previously set standard pitch */
<> 144:ef7eb2e8f9f7 1554 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~LTDC_LxCFBLR_CFBP;
<> 144:ef7eb2e8f9f7 1555
<> 144:ef7eb2e8f9f7 1556 /* Set new line pitch value */
<> 144:ef7eb2e8f9f7 1557 LTDC_LAYER(hltdc, LayerIdx)->CFBLR |= pitchUpdate;
<> 144:ef7eb2e8f9f7 1558
AnnaBridge 167:e84263d55307 1559 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1560
<> 144:ef7eb2e8f9f7 1561 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1562 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1563
<> 144:ef7eb2e8f9f7 1564 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1565 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1566
<> 144:ef7eb2e8f9f7 1567 return HAL_OK;
<> 144:ef7eb2e8f9f7 1568 }
<> 144:ef7eb2e8f9f7 1569
<> 144:ef7eb2e8f9f7 1570
<> 144:ef7eb2e8f9f7 1571 /**
<> 144:ef7eb2e8f9f7 1572 * @brief Configure the color keying without reloading.
AnnaBridge 167:e84263d55307 1573 * Variant of the function HAL_LTDC_ConfigColorKeying without immediate reload.
AnnaBridge 167:e84263d55307 1574 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1575 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1576 * @param RGBValue the color key value
AnnaBridge 167:e84263d55307 1577 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1578 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1579 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1580 * @retval HAL status
<> 144:ef7eb2e8f9f7 1581 */
<> 144:ef7eb2e8f9f7 1582 HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1583 {
AnnaBridge 167:e84263d55307 1584 /* Check the parameters */
AnnaBridge 167:e84263d55307 1585 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1586
<> 144:ef7eb2e8f9f7 1587 /* Process locked */
<> 144:ef7eb2e8f9f7 1588 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1589
<> 144:ef7eb2e8f9f7 1590 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1591 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1592
AnnaBridge 167:e84263d55307 1593 /* Configure the default color values */
<> 144:ef7eb2e8f9f7 1594 LTDC_LAYER(hltdc, LayerIdx)->CKCR &= ~(LTDC_LxCKCR_CKBLUE | LTDC_LxCKCR_CKGREEN | LTDC_LxCKCR_CKRED);
<> 144:ef7eb2e8f9f7 1595 LTDC_LAYER(hltdc, LayerIdx)->CKCR = RGBValue;
<> 144:ef7eb2e8f9f7 1596
AnnaBridge 167:e84263d55307 1597 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1598
<> 144:ef7eb2e8f9f7 1599 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1600 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1601
<> 144:ef7eb2e8f9f7 1602 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1603 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1604
<> 144:ef7eb2e8f9f7 1605 return HAL_OK;
<> 144:ef7eb2e8f9f7 1606 }
<> 144:ef7eb2e8f9f7 1607
<> 144:ef7eb2e8f9f7 1608 /**
<> 144:ef7eb2e8f9f7 1609 * @brief Enable the color keying without reloading.
AnnaBridge 167:e84263d55307 1610 * Variant of the function HAL_LTDC_EnableColorKeying without immediate reload.
AnnaBridge 167:e84263d55307 1611 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1612 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1613 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1614 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1615 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1616 * @retval HAL status
<> 144:ef7eb2e8f9f7 1617 */
<> 144:ef7eb2e8f9f7 1618 HAL_StatusTypeDef HAL_LTDC_EnableColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1619 {
AnnaBridge 167:e84263d55307 1620 /* Check the parameters */
AnnaBridge 167:e84263d55307 1621 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1622
<> 144:ef7eb2e8f9f7 1623 /* Process locked */
<> 144:ef7eb2e8f9f7 1624 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1625
<> 144:ef7eb2e8f9f7 1626 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1627 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1628
<> 144:ef7eb2e8f9f7 1629 /* Enable LTDC color keying by setting COLKEN bit */
<> 144:ef7eb2e8f9f7 1630 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_COLKEN;
<> 144:ef7eb2e8f9f7 1631
AnnaBridge 167:e84263d55307 1632 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1633
<> 144:ef7eb2e8f9f7 1634 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1635 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1636
<> 144:ef7eb2e8f9f7 1637 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1638 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1639
<> 144:ef7eb2e8f9f7 1640 return HAL_OK;
<> 144:ef7eb2e8f9f7 1641 }
<> 144:ef7eb2e8f9f7 1642
<> 144:ef7eb2e8f9f7 1643 /**
<> 144:ef7eb2e8f9f7 1644 * @brief Disable the color keying without reloading.
AnnaBridge 167:e84263d55307 1645 * Variant of the function HAL_LTDC_DisableColorKeying without immediate reload.
AnnaBridge 167:e84263d55307 1646 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1647 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1648 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1649 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1650 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1651 * @retval HAL status
<> 144:ef7eb2e8f9f7 1652 */
<> 144:ef7eb2e8f9f7 1653 HAL_StatusTypeDef HAL_LTDC_DisableColorKeying_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1654 {
AnnaBridge 167:e84263d55307 1655 /* Check the parameters */
AnnaBridge 167:e84263d55307 1656 assert_param(IS_LTDC_LAYER(LayerIdx));
AnnaBridge 167:e84263d55307 1657
<> 144:ef7eb2e8f9f7 1658 /* Process locked */
<> 144:ef7eb2e8f9f7 1659 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1660
<> 144:ef7eb2e8f9f7 1661 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1662 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1663
<> 144:ef7eb2e8f9f7 1664 /* Disable LTDC color keying by setting COLKEN bit */
<> 144:ef7eb2e8f9f7 1665 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_COLKEN;
<> 144:ef7eb2e8f9f7 1666
AnnaBridge 167:e84263d55307 1667 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1668
<> 144:ef7eb2e8f9f7 1669 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1670 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1671
<> 144:ef7eb2e8f9f7 1672 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1673 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1674
<> 144:ef7eb2e8f9f7 1675 return HAL_OK;
<> 144:ef7eb2e8f9f7 1676 }
<> 144:ef7eb2e8f9f7 1677
<> 144:ef7eb2e8f9f7 1678 /**
<> 144:ef7eb2e8f9f7 1679 * @brief Enable the color lookup table without reloading.
AnnaBridge 167:e84263d55307 1680 * Variant of the function HAL_LTDC_EnableCLUT without immediate reload.
AnnaBridge 167:e84263d55307 1681 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1682 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1683 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1684 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1685 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1686 * @retval HAL status
<> 144:ef7eb2e8f9f7 1687 */
<> 144:ef7eb2e8f9f7 1688 HAL_StatusTypeDef HAL_LTDC_EnableCLUT_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1689 {
AnnaBridge 167:e84263d55307 1690 /* Check the parameters */
AnnaBridge 167:e84263d55307 1691 assert_param(IS_LTDC_LAYER(LayerIdx));
<> 144:ef7eb2e8f9f7 1692
<> 144:ef7eb2e8f9f7 1693 /* Process locked */
<> 144:ef7eb2e8f9f7 1694 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1695
<> 144:ef7eb2e8f9f7 1696 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1697 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1698
<> 144:ef7eb2e8f9f7 1699 /* Disable LTDC color lookup table by setting CLUTEN bit */
<> 144:ef7eb2e8f9f7 1700 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_CLUTEN;
<> 144:ef7eb2e8f9f7 1701
AnnaBridge 167:e84263d55307 1702 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1703
<> 144:ef7eb2e8f9f7 1704 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1705 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1706
<> 144:ef7eb2e8f9f7 1707 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1708 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1709
<> 144:ef7eb2e8f9f7 1710 return HAL_OK;
<> 144:ef7eb2e8f9f7 1711 }
<> 144:ef7eb2e8f9f7 1712
<> 144:ef7eb2e8f9f7 1713 /**
<> 144:ef7eb2e8f9f7 1714 * @brief Disable the color lookup table without reloading.
AnnaBridge 167:e84263d55307 1715 * Variant of the function HAL_LTDC_DisableCLUT without immediate reload.
AnnaBridge 167:e84263d55307 1716 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1717 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1718 * @param LayerIdx LTDC Layer index.
<> 144:ef7eb2e8f9f7 1719 * This parameter can be one of the following values:
AnnaBridge 167:e84263d55307 1720 * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1721 * @retval HAL status
<> 144:ef7eb2e8f9f7 1722 */
<> 144:ef7eb2e8f9f7 1723 HAL_StatusTypeDef HAL_LTDC_DisableCLUT_NoReload(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1724 {
AnnaBridge 167:e84263d55307 1725 /* Check the parameters */
AnnaBridge 167:e84263d55307 1726 assert_param(IS_LTDC_LAYER(LayerIdx));
<> 144:ef7eb2e8f9f7 1727
<> 144:ef7eb2e8f9f7 1728 /* Process locked */
<> 144:ef7eb2e8f9f7 1729 __HAL_LOCK(hltdc);
<> 144:ef7eb2e8f9f7 1730
<> 144:ef7eb2e8f9f7 1731 /* Change LTDC peripheral state */
<> 144:ef7eb2e8f9f7 1732 hltdc->State = HAL_LTDC_STATE_BUSY;
<> 144:ef7eb2e8f9f7 1733
<> 144:ef7eb2e8f9f7 1734 /* Disable LTDC color lookup table by setting CLUTEN bit */
<> 144:ef7eb2e8f9f7 1735 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_CLUTEN;
<> 144:ef7eb2e8f9f7 1736
AnnaBridge 167:e84263d55307 1737 /* Do not set the Immediate Reload */
<> 144:ef7eb2e8f9f7 1738
<> 144:ef7eb2e8f9f7 1739 /* Change the LTDC state*/
<> 144:ef7eb2e8f9f7 1740 hltdc->State = HAL_LTDC_STATE_READY;
<> 144:ef7eb2e8f9f7 1741
<> 144:ef7eb2e8f9f7 1742 /* Process unlocked */
<> 144:ef7eb2e8f9f7 1743 __HAL_UNLOCK(hltdc);
<> 144:ef7eb2e8f9f7 1744
<> 144:ef7eb2e8f9f7 1745 return HAL_OK;
<> 144:ef7eb2e8f9f7 1746 }
<> 144:ef7eb2e8f9f7 1747
<> 144:ef7eb2e8f9f7 1748 /**
<> 144:ef7eb2e8f9f7 1749 * @}
<> 144:ef7eb2e8f9f7 1750 */
<> 144:ef7eb2e8f9f7 1751
<> 144:ef7eb2e8f9f7 1752 /** @defgroup LTDC_Exported_Functions_Group4 Peripheral State and Errors functions
<> 144:ef7eb2e8f9f7 1753 * @brief Peripheral State and Errors functions
<> 144:ef7eb2e8f9f7 1754 *
<> 144:ef7eb2e8f9f7 1755 @verbatim
<> 144:ef7eb2e8f9f7 1756 ===============================================================================
<> 144:ef7eb2e8f9f7 1757 ##### Peripheral State and Errors functions #####
<> 144:ef7eb2e8f9f7 1758 ===============================================================================
<> 144:ef7eb2e8f9f7 1759 [..]
<> 144:ef7eb2e8f9f7 1760 This subsection provides functions allowing to
AnnaBridge 167:e84263d55307 1761 (+) Check the LTDC handle state.
AnnaBridge 167:e84263d55307 1762 (+) Get the LTDC handle error code.
<> 144:ef7eb2e8f9f7 1763
<> 144:ef7eb2e8f9f7 1764 @endverbatim
<> 144:ef7eb2e8f9f7 1765 * @{
<> 144:ef7eb2e8f9f7 1766 */
<> 144:ef7eb2e8f9f7 1767
<> 144:ef7eb2e8f9f7 1768 /**
AnnaBridge 167:e84263d55307 1769 * @brief Return the LTDC handle state.
AnnaBridge 167:e84263d55307 1770 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1771 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 1772 * @retval HAL state
<> 144:ef7eb2e8f9f7 1773 */
<> 144:ef7eb2e8f9f7 1774 HAL_LTDC_StateTypeDef HAL_LTDC_GetState(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 1775 {
<> 144:ef7eb2e8f9f7 1776 return hltdc->State;
<> 144:ef7eb2e8f9f7 1777 }
<> 144:ef7eb2e8f9f7 1778
<> 144:ef7eb2e8f9f7 1779 /**
AnnaBridge 167:e84263d55307 1780 * @brief Return the LTDC handle error code.
AnnaBridge 167:e84263d55307 1781 * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1782 * the configuration information for the LTDC.
<> 144:ef7eb2e8f9f7 1783 * @retval LTDC Error Code
<> 144:ef7eb2e8f9f7 1784 */
<> 144:ef7eb2e8f9f7 1785 uint32_t HAL_LTDC_GetError(LTDC_HandleTypeDef *hltdc)
<> 144:ef7eb2e8f9f7 1786 {
<> 144:ef7eb2e8f9f7 1787 return hltdc->ErrorCode;
<> 144:ef7eb2e8f9f7 1788 }
<> 144:ef7eb2e8f9f7 1789
<> 144:ef7eb2e8f9f7 1790 /**
<> 144:ef7eb2e8f9f7 1791 * @}
<> 144:ef7eb2e8f9f7 1792 */
<> 144:ef7eb2e8f9f7 1793
<> 144:ef7eb2e8f9f7 1794 /**
AnnaBridge 167:e84263d55307 1795 * @}
AnnaBridge 167:e84263d55307 1796 */
AnnaBridge 167:e84263d55307 1797
AnnaBridge 167:e84263d55307 1798 /** @defgroup LTDC_Private_Functions LTDC Private Functions
AnnaBridge 167:e84263d55307 1799 * @{
AnnaBridge 167:e84263d55307 1800 */
AnnaBridge 167:e84263d55307 1801
AnnaBridge 167:e84263d55307 1802 /**
AnnaBridge 167:e84263d55307 1803 * @brief Configure the LTDC peripheral
AnnaBridge 167:e84263d55307 1804 * @param hltdc Pointer to a LTDC_HandleTypeDef structure that contains
<> 144:ef7eb2e8f9f7 1805 * the configuration information for the LTDC.
AnnaBridge 167:e84263d55307 1806 * @param pLayerCfg Pointer LTDC Layer Configuration structure
AnnaBridge 167:e84263d55307 1807 * @param LayerIdx LTDC Layer index.
AnnaBridge 167:e84263d55307 1808 * This parameter can be one of the following values: LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1)
<> 144:ef7eb2e8f9f7 1809 * @retval None
<> 144:ef7eb2e8f9f7 1810 */
<> 144:ef7eb2e8f9f7 1811 static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
<> 144:ef7eb2e8f9f7 1812 {
<> 144:ef7eb2e8f9f7 1813 uint32_t tmp = 0U;
<> 144:ef7eb2e8f9f7 1814 uint32_t tmp1 = 0U;
<> 144:ef7eb2e8f9f7 1815 uint32_t tmp2 = 0U;
<> 144:ef7eb2e8f9f7 1816
AnnaBridge 167:e84263d55307 1817 /* Configure the horizontal start and stop position */
<> 144:ef7eb2e8f9f7 1818 tmp = ((pLayerCfg->WindowX1 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U)) << 16U);
<> 144:ef7eb2e8f9f7 1819 LTDC_LAYER(hltdc, LayerIdx)->WHPCR &= ~(LTDC_LxWHPCR_WHSTPOS | LTDC_LxWHPCR_WHSPPOS);
<> 144:ef7eb2e8f9f7 1820 LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U) + 1U) | tmp);
<> 144:ef7eb2e8f9f7 1821
AnnaBridge 167:e84263d55307 1822 /* Configure the vertical start and stop position */
<> 144:ef7eb2e8f9f7 1823 tmp = ((pLayerCfg->WindowY1 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP)) << 16U);
<> 144:ef7eb2e8f9f7 1824 LTDC_LAYER(hltdc, LayerIdx)->WVPCR &= ~(LTDC_LxWVPCR_WVSTPOS | LTDC_LxWVPCR_WVSPPOS);
<> 144:ef7eb2e8f9f7 1825 LTDC_LAYER(hltdc, LayerIdx)->WVPCR = ((pLayerCfg->WindowY0 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP) + 1U) | tmp);
<> 144:ef7eb2e8f9f7 1826
<> 144:ef7eb2e8f9f7 1827 /* Specifies the pixel format */
<> 144:ef7eb2e8f9f7 1828 LTDC_LAYER(hltdc, LayerIdx)->PFCR &= ~(LTDC_LxPFCR_PF);
<> 144:ef7eb2e8f9f7 1829 LTDC_LAYER(hltdc, LayerIdx)->PFCR = (pLayerCfg->PixelFormat);
<> 144:ef7eb2e8f9f7 1830
AnnaBridge 167:e84263d55307 1831 /* Configure the default color values */
<> 144:ef7eb2e8f9f7 1832 tmp = ((uint32_t)(pLayerCfg->Backcolor.Green) << 8U);
<> 144:ef7eb2e8f9f7 1833 tmp1 = ((uint32_t)(pLayerCfg->Backcolor.Red) << 16U);
<> 144:ef7eb2e8f9f7 1834 tmp2 = (pLayerCfg->Alpha0 << 24U);
<> 144:ef7eb2e8f9f7 1835 LTDC_LAYER(hltdc, LayerIdx)->DCCR &= ~(LTDC_LxDCCR_DCBLUE | LTDC_LxDCCR_DCGREEN | LTDC_LxDCCR_DCRED | LTDC_LxDCCR_DCALPHA);
<> 144:ef7eb2e8f9f7 1836 LTDC_LAYER(hltdc, LayerIdx)->DCCR = (pLayerCfg->Backcolor.Blue | tmp | tmp1 | tmp2);
<> 144:ef7eb2e8f9f7 1837
<> 144:ef7eb2e8f9f7 1838 /* Specifies the constant alpha value */
<> 144:ef7eb2e8f9f7 1839 LTDC_LAYER(hltdc, LayerIdx)->CACR &= ~(LTDC_LxCACR_CONSTA);
<> 144:ef7eb2e8f9f7 1840 LTDC_LAYER(hltdc, LayerIdx)->CACR = (pLayerCfg->Alpha);
<> 144:ef7eb2e8f9f7 1841
<> 144:ef7eb2e8f9f7 1842 /* Specifies the blending factors */
<> 144:ef7eb2e8f9f7 1843 LTDC_LAYER(hltdc, LayerIdx)->BFCR &= ~(LTDC_LxBFCR_BF2 | LTDC_LxBFCR_BF1);
<> 144:ef7eb2e8f9f7 1844 LTDC_LAYER(hltdc, LayerIdx)->BFCR = (pLayerCfg->BlendingFactor1 | pLayerCfg->BlendingFactor2);
<> 144:ef7eb2e8f9f7 1845
AnnaBridge 167:e84263d55307 1846 /* Configure the color frame buffer start address */
<> 144:ef7eb2e8f9f7 1847 LTDC_LAYER(hltdc, LayerIdx)->CFBAR &= ~(LTDC_LxCFBAR_CFBADD);
<> 144:ef7eb2e8f9f7 1848 LTDC_LAYER(hltdc, LayerIdx)->CFBAR = (pLayerCfg->FBStartAdress);
<> 144:ef7eb2e8f9f7 1849
<> 144:ef7eb2e8f9f7 1850 if(pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
<> 144:ef7eb2e8f9f7 1851 {
<> 144:ef7eb2e8f9f7 1852 tmp = 4U;
<> 144:ef7eb2e8f9f7 1853 }
<> 144:ef7eb2e8f9f7 1854 else if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB888)
<> 144:ef7eb2e8f9f7 1855 {
<> 144:ef7eb2e8f9f7 1856 tmp = 3U;
<> 144:ef7eb2e8f9f7 1857 }
<> 144:ef7eb2e8f9f7 1858 else if((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
<> 144:ef7eb2e8f9f7 1859 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
<> 144:ef7eb2e8f9f7 1860 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
<> 144:ef7eb2e8f9f7 1861 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_AL88))
<> 144:ef7eb2e8f9f7 1862 {
<> 144:ef7eb2e8f9f7 1863 tmp = 2U;
<> 144:ef7eb2e8f9f7 1864 }
<> 144:ef7eb2e8f9f7 1865 else
<> 144:ef7eb2e8f9f7 1866 {
<> 144:ef7eb2e8f9f7 1867 tmp = 1U;
<> 144:ef7eb2e8f9f7 1868 }
<> 144:ef7eb2e8f9f7 1869
AnnaBridge 167:e84263d55307 1870 /* Configure the color frame buffer pitch in byte */
<> 144:ef7eb2e8f9f7 1871 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~(LTDC_LxCFBLR_CFBLL | LTDC_LxCFBLR_CFBP);
<> 144:ef7eb2e8f9f7 1872 LTDC_LAYER(hltdc, LayerIdx)->CFBLR = (((pLayerCfg->ImageWidth * tmp) << 16U) | (((pLayerCfg->WindowX1 - pLayerCfg->WindowX0) * tmp) + 3U));
<> 144:ef7eb2e8f9f7 1873
AnnaBridge 167:e84263d55307 1874 /* Configure the frame buffer line number */
<> 144:ef7eb2e8f9f7 1875 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR &= ~(LTDC_LxCFBLNR_CFBLNBR);
<> 144:ef7eb2e8f9f7 1876 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR = (pLayerCfg->ImageHeight);
<> 144:ef7eb2e8f9f7 1877
<> 144:ef7eb2e8f9f7 1878 /* Enable LTDC_Layer by setting LEN bit */
<> 144:ef7eb2e8f9f7 1879 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_LEN;
<> 144:ef7eb2e8f9f7 1880 }
<> 144:ef7eb2e8f9f7 1881
<> 144:ef7eb2e8f9f7 1882 /**
<> 144:ef7eb2e8f9f7 1883 * @}
<> 144:ef7eb2e8f9f7 1884 */
<> 144:ef7eb2e8f9f7 1885 #endif /* STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
<> 144:ef7eb2e8f9f7 1886 #endif /* HAL_LTDC_MODULE_ENABLED */
AnnaBridge 167:e84263d55307 1887
<> 144:ef7eb2e8f9f7 1888 /**
<> 144:ef7eb2e8f9f7 1889 * @}
<> 144:ef7eb2e8f9f7 1890 */
<> 144:ef7eb2e8f9f7 1891
<> 144:ef7eb2e8f9f7 1892 /**
<> 144:ef7eb2e8f9f7 1893 * @}
<> 144:ef7eb2e8f9f7 1894 */
<> 144:ef7eb2e8f9f7 1895
<> 144:ef7eb2e8f9f7 1896 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/