mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Jul 02 16:30:08 2015 +0100
Revision:
581:39197bcd20f2
Parent:
532:fe11edbda85c
Child:
613:bc40b8d2aec4
Synchronized with git revision ae2d3cdffe70184eb8736d94f76c45c93f4b7724

Full URL: https://github.com/mbedmicro/mbed/commit/ae2d3cdffe70184eb8736d94f76c45c93f4b7724/

Make it possible to build the core mbed library with yotta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 87:085cde657901 1 /**
mbed_official 87:085cde657901 2 ******************************************************************************
mbed_official 87:085cde657901 3 * @file stm32f4xx_hal_ltdc.c
mbed_official 87:085cde657901 4 * @author MCD Application Team
mbed_official 532:fe11edbda85c 5 * @version V1.3.0
mbed_official 532:fe11edbda85c 6 * @date 09-March-2015
mbed_official 87:085cde657901 7 * @brief LTDC HAL module driver.
mbed_official 87:085cde657901 8 * This file provides firmware functions to manage the following
mbed_official 87:085cde657901 9 * functionalities of the LTDC peripheral:
mbed_official 87:085cde657901 10 * + Initialization and de-initialization functions
mbed_official 87:085cde657901 11 * + IO operation functions
mbed_official 87:085cde657901 12 * + Peripheral Control functions
mbed_official 87:085cde657901 13 * + Peripheral State and Errors functions
mbed_official 87:085cde657901 14 *
mbed_official 87:085cde657901 15 @verbatim
mbed_official 369:2e96f1b71984 16 ==============================================================================
mbed_official 87:085cde657901 17 ##### How to use this driver #####
mbed_official 87:085cde657901 18 ==============================================================================
mbed_official 87:085cde657901 19 [..]
mbed_official 226:b062af740e40 20 (#) Program the required configuration through the following parameters:
mbed_official 87:085cde657901 21 the LTDC timing, the horizontal and vertical polarity,
mbed_official 87:085cde657901 22 the pixel clock polarity, Data Enable polarity and the LTDC background color value
mbed_official 87:085cde657901 23 using HAL_LTDC_Init() function
mbed_official 87:085cde657901 24
mbed_official 226:b062af740e40 25 (#) Program the required configuration through the following parameters:
mbed_official 87:085cde657901 26 the pixel format, the blending factors, input alpha value, the window size
mbed_official 87:085cde657901 27 and the image size using HAL_LTDC_ConfigLayer() function for foreground
mbed_official 87:085cde657901 28 or/and background layer.
mbed_official 87:085cde657901 29
mbed_official 87:085cde657901 30 (#) Optionally, configure and enable the CLUT using HAL_LTDC_ConfigCLUT() and
mbed_official 87:085cde657901 31 HAL_LTDC_EnableCLUT functions.
mbed_official 87:085cde657901 32
mbed_official 87:085cde657901 33 (#) Optionally, enable the Dither using HAL_LTDC_EnableDither().
mbed_official 87:085cde657901 34
mbed_official 87:085cde657901 35 (#) Optionally, configure and enable the Color keying using HAL_LTDC_ConfigColorKeying()
mbed_official 87:085cde657901 36 and HAL_LTDC_EnableColorKeying functions.
mbed_official 87:085cde657901 37
mbed_official 532:fe11edbda85c 38 (#) Optionally, configure LineInterrupt using HAL_LTDC_ProgramLineEvent()
mbed_official 87:085cde657901 39 function
mbed_official 87:085cde657901 40
mbed_official 226:b062af740e40 41 (#) If needed, reconfigure and change the pixel format value, the alpha value
mbed_official 87:085cde657901 42 value, the window size, the window position and the layer start address
mbed_official 87:085cde657901 43 for foreground or/and background layer using respectively the following
mbed_official 87:085cde657901 44 functions: HAL_LTDC_SetPixelFormat(), HAL_LTDC_SetAlpha(), HAL_LTDC_SetWindowSize(),
mbed_official 87:085cde657901 45 HAL_LTDC_SetWindowPosition(), HAL_LTDC_SetAddress.
mbed_official 87:085cde657901 46
mbed_official 87:085cde657901 47 (#) To control LTDC state you can use the following function: HAL_LTDC_GetState()
mbed_official 87:085cde657901 48
mbed_official 87:085cde657901 49 *** LTDC HAL driver macros list ***
mbed_official 87:085cde657901 50 =============================================
mbed_official 87:085cde657901 51 [..]
mbed_official 87:085cde657901 52 Below the list of most used macros in LTDC HAL driver.
mbed_official 87:085cde657901 53
mbed_official 87:085cde657901 54 (+) __HAL_LTDC_ENABLE: Enable the LTDC.
mbed_official 87:085cde657901 55 (+) __HAL_LTDC_DISABLE: Disable the LTDC.
mbed_official 87:085cde657901 56 (+) __HAL_LTDC_LAYER_ENABLE: Enable the LTDC Layer.
mbed_official 87:085cde657901 57 (+) __HAL_LTDC_LAYER_DISABLE: Disable the LTDC Layer.
mbed_official 87:085cde657901 58 (+) __HAL_LTDC_RELOAD_CONFIG: Reload Layer Configuration.
mbed_official 87:085cde657901 59 (+) __HAL_LTDC_GET_FLAG: Get the LTDC pending flags.
mbed_official 226:b062af740e40 60 (+) __HAL_LTDC_CLEAR_FLAG: Clear the LTDC pending flags.
mbed_official 226:b062af740e40 61 (+) __HAL_LTDC_ENABLE_IT: Enable the specified LTDC interrupts.
mbed_official 226:b062af740e40 62 (+) __HAL_LTDC_DISABLE_IT: Disable the specified LTDC interrupts.
mbed_official 226:b062af740e40 63 (+) __HAL_LTDC_GET_IT_SOURCE: Check whether the specified LTDC interrupt has occurred or not.
mbed_official 87:085cde657901 64
mbed_official 87:085cde657901 65 [..]
mbed_official 87:085cde657901 66 (@) You can refer to the LTDC HAL driver header file for more useful macros
mbed_official 87:085cde657901 67
mbed_official 87:085cde657901 68 @endverbatim
mbed_official 87:085cde657901 69 ******************************************************************************
mbed_official 87:085cde657901 70 * @attention
mbed_official 87:085cde657901 71 *
mbed_official 532:fe11edbda85c 72 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 87:085cde657901 73 *
mbed_official 87:085cde657901 74 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 87:085cde657901 75 * are permitted provided that the following conditions are met:
mbed_official 87:085cde657901 76 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 87:085cde657901 77 * this list of conditions and the following disclaimer.
mbed_official 87:085cde657901 78 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 87:085cde657901 79 * this list of conditions and the following disclaimer in the documentation
mbed_official 87:085cde657901 80 * and/or other materials provided with the distribution.
mbed_official 87:085cde657901 81 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 87:085cde657901 82 * may be used to endorse or promote products derived from this software
mbed_official 87:085cde657901 83 * without specific prior written permission.
mbed_official 87:085cde657901 84 *
mbed_official 87:085cde657901 85 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 87:085cde657901 86 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 87:085cde657901 87 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 87:085cde657901 88 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 87:085cde657901 89 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 87:085cde657901 90 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 87:085cde657901 91 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 87:085cde657901 92 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 87:085cde657901 93 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 87:085cde657901 94 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 87:085cde657901 95 *
mbed_official 87:085cde657901 96 ******************************************************************************
mbed_official 87:085cde657901 97 */
mbed_official 87:085cde657901 98
mbed_official 87:085cde657901 99 /* Includes ------------------------------------------------------------------*/
mbed_official 87:085cde657901 100 #include "stm32f4xx_hal.h"
mbed_official 87:085cde657901 101
mbed_official 87:085cde657901 102 /** @addtogroup STM32F4xx_HAL_Driver
mbed_official 87:085cde657901 103 * @{
mbed_official 87:085cde657901 104 */
mbed_official 532:fe11edbda85c 105 /** @defgroup LTDC LTDC
mbed_official 87:085cde657901 106 * @brief LTDC HAL module driver
mbed_official 87:085cde657901 107 * @{
mbed_official 87:085cde657901 108 */
mbed_official 87:085cde657901 109
mbed_official 87:085cde657901 110 #ifdef HAL_LTDC_MODULE_ENABLED
mbed_official 87:085cde657901 111
mbed_official 87:085cde657901 112 #if defined(STM32F429xx) || defined(STM32F439xx)
mbed_official 87:085cde657901 113
mbed_official 87:085cde657901 114 /* Private typedef -----------------------------------------------------------*/
mbed_official 87:085cde657901 115 /* Private define ------------------------------------------------------------*/
mbed_official 87:085cde657901 116 /* Private macro -------------------------------------------------------------*/
mbed_official 87:085cde657901 117 /* Private variables ---------------------------------------------------------*/
mbed_official 87:085cde657901 118 /* Private function prototypes -----------------------------------------------*/
mbed_official 87:085cde657901 119 static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx);
mbed_official 87:085cde657901 120 /* Private functions ---------------------------------------------------------*/
mbed_official 87:085cde657901 121
mbed_official 532:fe11edbda85c 122 /** @defgroup LTDC_Exported_Functions LTDC Exported Functions
mbed_official 87:085cde657901 123 * @{
mbed_official 87:085cde657901 124 */
mbed_official 87:085cde657901 125
mbed_official 532:fe11edbda85c 126 /** @defgroup LTDC_Exported_Functions_Group1 Initialization and Configuration functions
mbed_official 87:085cde657901 127 * @brief Initialization and Configuration functions
mbed_official 87:085cde657901 128 *
mbed_official 87:085cde657901 129 @verbatim
mbed_official 87:085cde657901 130 ===============================================================================
mbed_official 87:085cde657901 131 ##### Initialization and Configuration functions #####
mbed_official 87:085cde657901 132 ===============================================================================
mbed_official 87:085cde657901 133 [..] This section provides functions allowing to:
mbed_official 87:085cde657901 134 (+) Initialize and configure the LTDC
mbed_official 87:085cde657901 135 (+) De-initialize the LTDC
mbed_official 87:085cde657901 136
mbed_official 87:085cde657901 137 @endverbatim
mbed_official 87:085cde657901 138 * @{
mbed_official 87:085cde657901 139 */
mbed_official 87:085cde657901 140
mbed_official 87:085cde657901 141 /**
mbed_official 87:085cde657901 142 * @brief Initializes the LTDC according to the specified
mbed_official 87:085cde657901 143 * parameters in the LTDC_InitTypeDef and create the associated handle.
mbed_official 87:085cde657901 144 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 145 * the configuration information for the LTDC.
mbed_official 87:085cde657901 146 * @retval HAL status
mbed_official 87:085cde657901 147 */
mbed_official 87:085cde657901 148 HAL_StatusTypeDef HAL_LTDC_Init(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 149 {
mbed_official 87:085cde657901 150 uint32_t tmp = 0, tmp1 = 0;
mbed_official 87:085cde657901 151
mbed_official 87:085cde657901 152 /* Check the LTDC peripheral state */
mbed_official 384:ef87175507f1 153 if(hltdc == HAL_NULL)
mbed_official 87:085cde657901 154 {
mbed_official 87:085cde657901 155 return HAL_ERROR;
mbed_official 87:085cde657901 156 }
mbed_official 87:085cde657901 157
mbed_official 87:085cde657901 158 /* Check function parameters */
mbed_official 87:085cde657901 159 assert_param(IS_LTDC_ALL_INSTANCE(hltdc->Instance));
mbed_official 87:085cde657901 160 assert_param(IS_LTDC_HSYNC(hltdc->Init.HorizontalSync));
mbed_official 87:085cde657901 161 assert_param(IS_LTDC_VSYNC(hltdc->Init.VerticalSync));
mbed_official 87:085cde657901 162 assert_param(IS_LTDC_AHBP(hltdc->Init.AccumulatedHBP));
mbed_official 87:085cde657901 163 assert_param(IS_LTDC_AVBP(hltdc->Init.AccumulatedVBP));
mbed_official 87:085cde657901 164 assert_param(IS_LTDC_AAH(hltdc->Init.AccumulatedActiveH));
mbed_official 87:085cde657901 165 assert_param(IS_LTDC_AAW(hltdc->Init.AccumulatedActiveW));
mbed_official 87:085cde657901 166 assert_param(IS_LTDC_TOTALH(hltdc->Init.TotalHeigh));
mbed_official 87:085cde657901 167 assert_param(IS_LTDC_TOTALW(hltdc->Init.TotalWidth));
mbed_official 87:085cde657901 168 assert_param(IS_LTDC_HSPOL(hltdc->Init.HSPolarity));
mbed_official 87:085cde657901 169 assert_param(IS_LTDC_VSPOL(hltdc->Init.VSPolarity));
mbed_official 87:085cde657901 170 assert_param(IS_LTDC_DEPOL(hltdc->Init.DEPolarity));
mbed_official 87:085cde657901 171 assert_param(IS_LTDC_PCPOL(hltdc->Init.PCPolarity));
mbed_official 87:085cde657901 172
mbed_official 87:085cde657901 173 if(hltdc->State == HAL_LTDC_STATE_RESET)
mbed_official 87:085cde657901 174 {
mbed_official 532:fe11edbda85c 175 /* Allocate lock resource and initialize it */
mbed_official 532:fe11edbda85c 176 hltdc->Lock = HAL_UNLOCKED;
mbed_official 87:085cde657901 177 /* Init the low level hardware */
mbed_official 87:085cde657901 178 HAL_LTDC_MspInit(hltdc);
mbed_official 87:085cde657901 179 }
mbed_official 87:085cde657901 180
mbed_official 87:085cde657901 181 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 182 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 183
mbed_official 87:085cde657901 184 /* Configures the HS, VS, DE and PC polarity */
mbed_official 87:085cde657901 185 hltdc->Instance->GCR &= ~(LTDC_GCR_HSPOL | LTDC_GCR_VSPOL | LTDC_GCR_DEPOL | LTDC_GCR_PCPOL);
mbed_official 87:085cde657901 186 hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \
mbed_official 87:085cde657901 187 hltdc->Init.DEPolarity | hltdc->Init.PCPolarity);
mbed_official 87:085cde657901 188
mbed_official 87:085cde657901 189 /* Sets Synchronization size */
mbed_official 87:085cde657901 190 hltdc->Instance->SSCR &= ~(LTDC_SSCR_VSH | LTDC_SSCR_HSW);
mbed_official 87:085cde657901 191 tmp = (hltdc->Init.HorizontalSync << 16);
mbed_official 87:085cde657901 192 hltdc->Instance->SSCR |= (tmp | hltdc->Init.VerticalSync);
mbed_official 87:085cde657901 193
mbed_official 87:085cde657901 194 /* Sets Accumulated Back porch */
mbed_official 87:085cde657901 195 hltdc->Instance->BPCR &= ~(LTDC_BPCR_AVBP | LTDC_BPCR_AHBP);
mbed_official 87:085cde657901 196 tmp = (hltdc->Init.AccumulatedHBP << 16);
mbed_official 87:085cde657901 197 hltdc->Instance->BPCR |= (tmp | hltdc->Init.AccumulatedVBP);
mbed_official 87:085cde657901 198
mbed_official 87:085cde657901 199 /* Sets Accumulated Active Width */
mbed_official 87:085cde657901 200 hltdc->Instance->AWCR &= ~(LTDC_AWCR_AAH | LTDC_AWCR_AAW);
mbed_official 87:085cde657901 201 tmp = (hltdc->Init.AccumulatedActiveW << 16);
mbed_official 87:085cde657901 202 hltdc->Instance->AWCR |= (tmp | hltdc->Init.AccumulatedActiveH);
mbed_official 87:085cde657901 203
mbed_official 87:085cde657901 204 /* Sets Total Width */
mbed_official 87:085cde657901 205 hltdc->Instance->TWCR &= ~(LTDC_TWCR_TOTALH | LTDC_TWCR_TOTALW);
mbed_official 87:085cde657901 206 tmp = (hltdc->Init.TotalWidth << 16);
mbed_official 87:085cde657901 207 hltdc->Instance->TWCR |= (tmp | hltdc->Init.TotalHeigh);
mbed_official 87:085cde657901 208
mbed_official 87:085cde657901 209 /* Sets the background color value */
mbed_official 87:085cde657901 210 tmp = ((uint32_t)(hltdc->Init.Backcolor.Green) << 8);
mbed_official 87:085cde657901 211 tmp1 = ((uint32_t)(hltdc->Init.Backcolor.Red) << 16);
mbed_official 87:085cde657901 212 hltdc->Instance->BCCR &= ~(LTDC_BCCR_BCBLUE | LTDC_BCCR_BCGREEN | LTDC_BCCR_BCRED);
mbed_official 87:085cde657901 213 hltdc->Instance->BCCR |= (tmp1 | tmp | hltdc->Init.Backcolor.Blue);
mbed_official 87:085cde657901 214
mbed_official 87:085cde657901 215 /* Enable the transfer Error interrupt */
mbed_official 87:085cde657901 216 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_TE);
mbed_official 87:085cde657901 217
mbed_official 87:085cde657901 218 /* Enable the FIFO underrun interrupt */
mbed_official 87:085cde657901 219 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_FU);
mbed_official 87:085cde657901 220
mbed_official 87:085cde657901 221 /* Enable LTDC by setting LTDCEN bit */
mbed_official 87:085cde657901 222 __HAL_LTDC_ENABLE(hltdc);
mbed_official 87:085cde657901 223
mbed_official 532:fe11edbda85c 224 /* Initialize the error code */
mbed_official 87:085cde657901 225 hltdc->ErrorCode = HAL_LTDC_ERROR_NONE;
mbed_official 87:085cde657901 226
mbed_official 87:085cde657901 227 /* Initialize the LTDC state*/
mbed_official 87:085cde657901 228 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 229
mbed_official 87:085cde657901 230 return HAL_OK;
mbed_official 87:085cde657901 231 }
mbed_official 87:085cde657901 232
mbed_official 87:085cde657901 233 /**
mbed_official 87:085cde657901 234 * @brief Deinitializes the LTDC peripheral registers to their default reset
mbed_official 87:085cde657901 235 * values.
mbed_official 87:085cde657901 236 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 237 * the configuration information for the LTDC.
mbed_official 87:085cde657901 238 * @retval None
mbed_official 87:085cde657901 239 */
mbed_official 87:085cde657901 240
mbed_official 87:085cde657901 241 HAL_StatusTypeDef HAL_LTDC_DeInit(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 242 {
mbed_official 87:085cde657901 243 /* DeInit the low level hardware */
mbed_official 87:085cde657901 244 HAL_LTDC_MspDeInit(hltdc);
mbed_official 87:085cde657901 245
mbed_official 532:fe11edbda85c 246 /* Initialize the error code */
mbed_official 87:085cde657901 247 hltdc->ErrorCode = HAL_LTDC_ERROR_NONE;
mbed_official 87:085cde657901 248
mbed_official 87:085cde657901 249 /* Initialize the LTDC state*/
mbed_official 87:085cde657901 250 hltdc->State = HAL_LTDC_STATE_RESET;
mbed_official 87:085cde657901 251
mbed_official 106:ced8cbb51063 252 /* Release Lock */
mbed_official 106:ced8cbb51063 253 __HAL_UNLOCK(hltdc);
mbed_official 106:ced8cbb51063 254
mbed_official 87:085cde657901 255 return HAL_OK;
mbed_official 87:085cde657901 256 }
mbed_official 87:085cde657901 257
mbed_official 87:085cde657901 258 /**
mbed_official 87:085cde657901 259 * @brief Initializes the LTDC MSP.
mbed_official 87:085cde657901 260 * @param hltdc : pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 261 * the configuration information for the LTDC.
mbed_official 87:085cde657901 262 * @retval None
mbed_official 87:085cde657901 263 */
mbed_official 87:085cde657901 264 __weak void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
mbed_official 87:085cde657901 265 {
mbed_official 87:085cde657901 266 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 87:085cde657901 267 the HAL_LTDC_MspInit could be implemented in the user file
mbed_official 87:085cde657901 268 */
mbed_official 87:085cde657901 269 }
mbed_official 87:085cde657901 270
mbed_official 87:085cde657901 271 /**
mbed_official 87:085cde657901 272 * @brief DeInitializes the LTDC MSP.
mbed_official 87:085cde657901 273 * @param hltdc : pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 274 * the configuration information for the LTDC.
mbed_official 87:085cde657901 275 * @retval None
mbed_official 87:085cde657901 276 */
mbed_official 87:085cde657901 277 __weak void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
mbed_official 87:085cde657901 278 {
mbed_official 87:085cde657901 279 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 87:085cde657901 280 the HAL_LTDC_MspDeInit could be implemented in the user file
mbed_official 87:085cde657901 281 */
mbed_official 87:085cde657901 282 }
mbed_official 87:085cde657901 283
mbed_official 87:085cde657901 284 /**
mbed_official 87:085cde657901 285 * @}
mbed_official 87:085cde657901 286 */
mbed_official 87:085cde657901 287
mbed_official 532:fe11edbda85c 288 /** @defgroup LTDC_Exported_Functions_Group2 IO operation functions
mbed_official 87:085cde657901 289 * @brief IO operation functions
mbed_official 87:085cde657901 290 *
mbed_official 87:085cde657901 291 @verbatim
mbed_official 87:085cde657901 292 ===============================================================================
mbed_official 87:085cde657901 293 ##### IO operation functions #####
mbed_official 87:085cde657901 294 ===============================================================================
mbed_official 87:085cde657901 295 [..] This section provides function allowing to:
mbed_official 87:085cde657901 296 (+) Handle LTDC interrupt request
mbed_official 87:085cde657901 297
mbed_official 87:085cde657901 298 @endverbatim
mbed_official 87:085cde657901 299 * @{
mbed_official 87:085cde657901 300 */
mbed_official 87:085cde657901 301 /**
mbed_official 87:085cde657901 302 * @brief Handles LTDC interrupt request.
mbed_official 87:085cde657901 303 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 304 * the configuration information for the LTDC.
mbed_official 87:085cde657901 305 * @retval HAL status
mbed_official 87:085cde657901 306 */
mbed_official 87:085cde657901 307 void HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 308 {
mbed_official 87:085cde657901 309 /* Transfer Error Interrupt management ***************************************/
mbed_official 87:085cde657901 310 if(__HAL_LTDC_GET_FLAG(hltdc, LTDC_FLAG_TE) != RESET)
mbed_official 87:085cde657901 311 {
mbed_official 106:ced8cbb51063 312 if(__HAL_LTDC_GET_IT_SOURCE(hltdc, LTDC_IT_TE) != RESET)
mbed_official 87:085cde657901 313 {
mbed_official 87:085cde657901 314 /* Disable the transfer Error interrupt */
mbed_official 87:085cde657901 315 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_TE);
mbed_official 87:085cde657901 316
mbed_official 87:085cde657901 317 /* Clear the transfer error flag */
mbed_official 87:085cde657901 318 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_TE);
mbed_official 87:085cde657901 319
mbed_official 87:085cde657901 320 /* Update error code */
mbed_official 87:085cde657901 321 hltdc->ErrorCode |= HAL_LTDC_ERROR_TE;
mbed_official 87:085cde657901 322
mbed_official 87:085cde657901 323 /* Change LTDC state */
mbed_official 87:085cde657901 324 hltdc->State = HAL_LTDC_STATE_ERROR;
mbed_official 87:085cde657901 325
mbed_official 87:085cde657901 326 /* Process unlocked */
mbed_official 87:085cde657901 327 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 328
mbed_official 87:085cde657901 329 /* Transfer error Callback */
mbed_official 87:085cde657901 330 HAL_LTDC_ErrorCallback(hltdc);
mbed_official 87:085cde657901 331 }
mbed_official 87:085cde657901 332 }
mbed_official 87:085cde657901 333 /* FIFO underrun Interrupt management ***************************************/
mbed_official 87:085cde657901 334 if(__HAL_LTDC_GET_FLAG(hltdc, LTDC_FLAG_FU) != RESET)
mbed_official 87:085cde657901 335 {
mbed_official 106:ced8cbb51063 336 if(__HAL_LTDC_GET_IT_SOURCE(hltdc, LTDC_IT_FU) != RESET)
mbed_official 87:085cde657901 337 {
mbed_official 87:085cde657901 338 /* Disable the FIFO underrun interrupt */
mbed_official 87:085cde657901 339 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_FU);
mbed_official 87:085cde657901 340
mbed_official 87:085cde657901 341 /* Clear the FIFO underrun flag */
mbed_official 87:085cde657901 342 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_FU);
mbed_official 87:085cde657901 343
mbed_official 87:085cde657901 344 /* Update error code */
mbed_official 87:085cde657901 345 hltdc->ErrorCode |= HAL_LTDC_ERROR_FU;
mbed_official 87:085cde657901 346
mbed_official 87:085cde657901 347 /* Change LTDC state */
mbed_official 87:085cde657901 348 hltdc->State = HAL_LTDC_STATE_ERROR;
mbed_official 87:085cde657901 349
mbed_official 87:085cde657901 350 /* Process unlocked */
mbed_official 87:085cde657901 351 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 352
mbed_official 87:085cde657901 353 /* Transfer error Callback */
mbed_official 87:085cde657901 354 HAL_LTDC_ErrorCallback(hltdc);
mbed_official 87:085cde657901 355 }
mbed_official 87:085cde657901 356 }
mbed_official 87:085cde657901 357 /* Line Interrupt management ************************************************/
mbed_official 87:085cde657901 358 if(__HAL_LTDC_GET_FLAG(hltdc, LTDC_FLAG_LI) != RESET)
mbed_official 87:085cde657901 359 {
mbed_official 106:ced8cbb51063 360 if(__HAL_LTDC_GET_IT_SOURCE(hltdc, LTDC_IT_LI) != RESET)
mbed_official 87:085cde657901 361 {
mbed_official 87:085cde657901 362 /* Disable the Line interrupt */
mbed_official 87:085cde657901 363 __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI);
mbed_official 87:085cde657901 364
mbed_official 87:085cde657901 365 /* Clear the Line interrupt flag */
mbed_official 87:085cde657901 366 __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_LI);
mbed_official 87:085cde657901 367
mbed_official 87:085cde657901 368 /* Change LTDC state */
mbed_official 87:085cde657901 369 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 370
mbed_official 87:085cde657901 371 /* Process unlocked */
mbed_official 87:085cde657901 372 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 373
mbed_official 87:085cde657901 374 /* Line interrupt Callback */
mbed_official 87:085cde657901 375 HAL_LTDC_LineEvenCallback(hltdc);
mbed_official 87:085cde657901 376 }
mbed_official 87:085cde657901 377 }
mbed_official 87:085cde657901 378 }
mbed_official 87:085cde657901 379
mbed_official 87:085cde657901 380 /**
mbed_official 87:085cde657901 381 * @brief Error LTDC callback.
mbed_official 87:085cde657901 382 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 383 * the configuration information for the LTDC.
mbed_official 87:085cde657901 384 * @retval None
mbed_official 87:085cde657901 385 */
mbed_official 87:085cde657901 386 __weak void HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 387 {
mbed_official 87:085cde657901 388 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 87:085cde657901 389 the HAL_LTDC_ErrorCallback could be implemented in the user file
mbed_official 87:085cde657901 390 */
mbed_official 87:085cde657901 391 }
mbed_official 87:085cde657901 392
mbed_official 87:085cde657901 393 /**
mbed_official 87:085cde657901 394 * @brief Line Event callback.
mbed_official 87:085cde657901 395 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 396 * the configuration information for the LTDC.
mbed_official 87:085cde657901 397 * @retval None
mbed_official 87:085cde657901 398 */
mbed_official 87:085cde657901 399 __weak void HAL_LTDC_LineEvenCallback(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 400 {
mbed_official 87:085cde657901 401 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 87:085cde657901 402 the HAL_LTDC_LineEvenCallback could be implemented in the user file
mbed_official 87:085cde657901 403 */
mbed_official 87:085cde657901 404 }
mbed_official 87:085cde657901 405
mbed_official 87:085cde657901 406 /**
mbed_official 87:085cde657901 407 * @}
mbed_official 87:085cde657901 408 */
mbed_official 87:085cde657901 409
mbed_official 532:fe11edbda85c 410 /** @defgroup LTDC_Exported_Functions_Group3 Peripheral Control functions
mbed_official 87:085cde657901 411 * @brief Peripheral Control functions
mbed_official 87:085cde657901 412 *
mbed_official 87:085cde657901 413 @verbatim
mbed_official 87:085cde657901 414 ===============================================================================
mbed_official 87:085cde657901 415 ##### Peripheral Control functions #####
mbed_official 87:085cde657901 416 ===============================================================================
mbed_official 87:085cde657901 417 [..] This section provides functions allowing to:
mbed_official 87:085cde657901 418 (+) Configure the LTDC foreground or/and background parameters.
mbed_official 87:085cde657901 419 (+) Set the active layer.
mbed_official 87:085cde657901 420 (+) Configure the color keying.
mbed_official 87:085cde657901 421 (+) Configure the C-LUT.
mbed_official 87:085cde657901 422 (+) Enable / Disable the color keying.
mbed_official 87:085cde657901 423 (+) Enable / Disable the C-LUT.
mbed_official 87:085cde657901 424 (+) Update the layer position.
mbed_official 87:085cde657901 425 (+) Update the layer size.
mbed_official 226:b062af740e40 426 (+) Update pixel format on the fly.
mbed_official 226:b062af740e40 427 (+) Update transparency on the fly.
mbed_official 226:b062af740e40 428 (+) Update address on the fly.
mbed_official 87:085cde657901 429
mbed_official 87:085cde657901 430 @endverbatim
mbed_official 87:085cde657901 431 * @{
mbed_official 87:085cde657901 432 */
mbed_official 87:085cde657901 433
mbed_official 87:085cde657901 434 /**
mbed_official 87:085cde657901 435 * @brief Configure the LTDC Layer according to the specified
mbed_official 87:085cde657901 436 * parameters in the LTDC_InitTypeDef and create the associated handle.
mbed_official 87:085cde657901 437 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 438 * the configuration information for the LTDC.
mbed_official 87:085cde657901 439 * @param pLayerCfg: pointer to a LTDC_LayerCfgTypeDef structure that contains
mbed_official 87:085cde657901 440 * the configuration information for the Layer.
mbed_official 226:b062af740e40 441 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 442 * This parameter can be one of the following values:
mbed_official 87:085cde657901 443 * 0 or 1
mbed_official 87:085cde657901 444 * @retval HAL status
mbed_official 87:085cde657901 445 */
mbed_official 87:085cde657901 446 HAL_StatusTypeDef HAL_LTDC_ConfigLayer(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
mbed_official 87:085cde657901 447 {
mbed_official 87:085cde657901 448 /* Process locked */
mbed_official 87:085cde657901 449 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 450
mbed_official 87:085cde657901 451 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 452 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 453
mbed_official 87:085cde657901 454 /* Check the parameters */
mbed_official 87:085cde657901 455 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 456 assert_param(IS_LTDC_PIXEL_FORMAT(pLayerCfg->PixelFormat));
mbed_official 87:085cde657901 457 assert_param(IS_LTDC_BLENDING_FACTOR1(pLayerCfg->BlendingFactor1));
mbed_official 87:085cde657901 458 assert_param(IS_LTDC_BLENDING_FACTOR2(pLayerCfg->BlendingFactor2));
mbed_official 87:085cde657901 459 assert_param(IS_LTDC_HCONFIGST(pLayerCfg->WindowX0));
mbed_official 87:085cde657901 460 assert_param(IS_LTDC_HCONFIGSP(pLayerCfg->WindowX1));
mbed_official 87:085cde657901 461 assert_param(IS_LTDC_VCONFIGST(pLayerCfg->WindowY0));
mbed_official 87:085cde657901 462 assert_param(IS_LTDC_VCONFIGSP(pLayerCfg->WindowY1));
mbed_official 87:085cde657901 463 assert_param(IS_LTDC_ALPHA(pLayerCfg->Alpha0));
mbed_official 87:085cde657901 464 assert_param(IS_LTDC_CFBLL(pLayerCfg->ImageWidth));
mbed_official 87:085cde657901 465 assert_param(IS_LTDC_CFBLNBR(pLayerCfg->ImageHeight));
mbed_official 87:085cde657901 466
mbed_official 87:085cde657901 467 /* Copy new layer configuration into handle structure */
mbed_official 87:085cde657901 468 hltdc->LayerCfg[LayerIdx] = *pLayerCfg;
mbed_official 87:085cde657901 469
mbed_official 87:085cde657901 470 /* Configure the LTDC Layer */
mbed_official 87:085cde657901 471 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
mbed_official 87:085cde657901 472
mbed_official 87:085cde657901 473 /* Sets the Reload type */
mbed_official 87:085cde657901 474 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 475
mbed_official 87:085cde657901 476 /* Initialize the LTDC state*/
mbed_official 87:085cde657901 477 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 478
mbed_official 87:085cde657901 479 /* Process unlocked */
mbed_official 87:085cde657901 480 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 481
mbed_official 87:085cde657901 482 return HAL_OK;
mbed_official 87:085cde657901 483 }
mbed_official 87:085cde657901 484
mbed_official 87:085cde657901 485 /**
mbed_official 87:085cde657901 486 * @brief Configure the color keying.
mbed_official 87:085cde657901 487 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 488 * the configuration information for the LTDC.
mbed_official 87:085cde657901 489 * @param RGBValue: the color key value
mbed_official 226:b062af740e40 490 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 491 * This parameter can be one of the following values:
mbed_official 87:085cde657901 492 * 0 or 1
mbed_official 226:b062af740e40 493 * @retval HAL status
mbed_official 87:085cde657901 494 */
mbed_official 87:085cde657901 495 HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx)
mbed_official 87:085cde657901 496 {
mbed_official 87:085cde657901 497 /* Process locked */
mbed_official 87:085cde657901 498 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 499
mbed_official 87:085cde657901 500 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 501 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 502
mbed_official 87:085cde657901 503 /* Check the parameters */
mbed_official 87:085cde657901 504 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 505
mbed_official 87:085cde657901 506 /* Configures the default color values */
mbed_official 532:fe11edbda85c 507 LTDC_LAYER(hltdc, LayerIdx)->CKCR &= ~(LTDC_LxCKCR_CKBLUE | LTDC_LxCKCR_CKGREEN | LTDC_LxCKCR_CKRED);
mbed_official 532:fe11edbda85c 508 LTDC_LAYER(hltdc, LayerIdx)->CKCR = RGBValue;
mbed_official 87:085cde657901 509
mbed_official 87:085cde657901 510 /* Sets the Reload type */
mbed_official 87:085cde657901 511 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 512
mbed_official 87:085cde657901 513 /* Change the LTDC state*/
mbed_official 87:085cde657901 514 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 515
mbed_official 87:085cde657901 516 /* Process unlocked */
mbed_official 87:085cde657901 517 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 518
mbed_official 87:085cde657901 519 return HAL_OK;
mbed_official 87:085cde657901 520 }
mbed_official 87:085cde657901 521
mbed_official 87:085cde657901 522 /**
mbed_official 87:085cde657901 523 * @brief Load the color lookup table.
mbed_official 87:085cde657901 524 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 525 * the configuration information for the LTDC.
mbed_official 87:085cde657901 526 * @param pCLUT: pointer to the color lookup table address.
mbed_official 87:085cde657901 527 * @param CLUTSize: the color lookup table size.
mbed_official 226:b062af740e40 528 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 529 * This parameter can be one of the following values:
mbed_official 87:085cde657901 530 * 0 or 1
mbed_official 226:b062af740e40 531 * @retval HAL status
mbed_official 87:085cde657901 532 */
mbed_official 87:085cde657901 533 HAL_StatusTypeDef HAL_LTDC_ConfigCLUT(LTDC_HandleTypeDef *hltdc, uint32_t *pCLUT, uint32_t CLUTSize, uint32_t LayerIdx)
mbed_official 87:085cde657901 534 {
mbed_official 87:085cde657901 535 uint32_t tmp = 0;
mbed_official 87:085cde657901 536 uint32_t counter = 0;
mbed_official 87:085cde657901 537 uint32_t pcounter = 0;
mbed_official 87:085cde657901 538
mbed_official 87:085cde657901 539 /* Process locked */
mbed_official 87:085cde657901 540 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 541
mbed_official 87:085cde657901 542 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 543 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 544
mbed_official 87:085cde657901 545 /* Check the parameters */
mbed_official 87:085cde657901 546 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 547
mbed_official 87:085cde657901 548 for(counter = 0; (counter < CLUTSize); counter++)
mbed_official 87:085cde657901 549 {
mbed_official 532:fe11edbda85c 550 if(hltdc->LayerCfg[LayerIdx].PixelFormat == LTDC_PIXEL_FORMAT_AL44)
mbed_official 532:fe11edbda85c 551 {
mbed_official 532:fe11edbda85c 552 tmp = (((counter + 16*counter) << 24) | ((uint32_t)(*pCLUT) & 0xFF) | ((uint32_t)(*pCLUT) & 0xFF00) | ((uint32_t)(*pCLUT) & 0xFF0000));
mbed_official 532:fe11edbda85c 553 }
mbed_official 532:fe11edbda85c 554 else
mbed_official 532:fe11edbda85c 555 {
mbed_official 532:fe11edbda85c 556 tmp = ((counter << 24) | ((uint32_t)(*pCLUT) & 0xFF) | ((uint32_t)(*pCLUT) & 0xFF00) | ((uint32_t)(*pCLUT) & 0xFF0000));
mbed_official 532:fe11edbda85c 557 }
mbed_official 87:085cde657901 558 pcounter = (uint32_t)pCLUT + sizeof(*pCLUT);
mbed_official 87:085cde657901 559 pCLUT = (uint32_t *)pcounter;
mbed_official 87:085cde657901 560
mbed_official 87:085cde657901 561 /* Specifies the C-LUT address and RGB value */
mbed_official 532:fe11edbda85c 562 LTDC_LAYER(hltdc, LayerIdx)->CLUTWR = tmp;
mbed_official 87:085cde657901 563 }
mbed_official 87:085cde657901 564
mbed_official 87:085cde657901 565 /* Change the LTDC state*/
mbed_official 87:085cde657901 566 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 567
mbed_official 87:085cde657901 568 /* Process unlocked */
mbed_official 87:085cde657901 569 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 570
mbed_official 87:085cde657901 571 return HAL_OK;
mbed_official 87:085cde657901 572 }
mbed_official 87:085cde657901 573
mbed_official 87:085cde657901 574 /**
mbed_official 87:085cde657901 575 * @brief Enable the color keying.
mbed_official 87:085cde657901 576 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 577 * the configuration information for the LTDC.
mbed_official 226:b062af740e40 578 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 579 * This parameter can be one of the following values:
mbed_official 87:085cde657901 580 * 0 or 1
mbed_official 226:b062af740e40 581 * @retval HAL status
mbed_official 87:085cde657901 582 */
mbed_official 87:085cde657901 583 HAL_StatusTypeDef HAL_LTDC_EnableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
mbed_official 87:085cde657901 584 {
mbed_official 87:085cde657901 585 /* Process locked */
mbed_official 87:085cde657901 586 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 587
mbed_official 87:085cde657901 588 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 589 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 590
mbed_official 87:085cde657901 591 /* Check the parameters */
mbed_official 87:085cde657901 592 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 593
mbed_official 87:085cde657901 594 /* Enable LTDC color keying by setting COLKEN bit */
mbed_official 532:fe11edbda85c 595 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_COLKEN;
mbed_official 87:085cde657901 596
mbed_official 87:085cde657901 597 /* Sets the Reload type */
mbed_official 87:085cde657901 598 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 599
mbed_official 87:085cde657901 600 /* Change the LTDC state*/
mbed_official 87:085cde657901 601 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 602
mbed_official 87:085cde657901 603 /* Process unlocked */
mbed_official 87:085cde657901 604 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 605
mbed_official 87:085cde657901 606 return HAL_OK;
mbed_official 87:085cde657901 607 }
mbed_official 87:085cde657901 608
mbed_official 87:085cde657901 609 /**
mbed_official 87:085cde657901 610 * @brief Disable the color keying.
mbed_official 87:085cde657901 611 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 612 * the configuration information for the LTDC.
mbed_official 226:b062af740e40 613 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 614 * This parameter can be one of the following values:
mbed_official 87:085cde657901 615 * 0 or 1
mbed_official 226:b062af740e40 616 * @retval HAL status
mbed_official 87:085cde657901 617 */
mbed_official 87:085cde657901 618 HAL_StatusTypeDef HAL_LTDC_DisableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
mbed_official 87:085cde657901 619 {
mbed_official 87:085cde657901 620 /* Process locked */
mbed_official 87:085cde657901 621 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 622
mbed_official 87:085cde657901 623 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 624 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 625
mbed_official 87:085cde657901 626 /* Check the parameters */
mbed_official 87:085cde657901 627 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 628
mbed_official 87:085cde657901 629 /* Disable LTDC color keying by setting COLKEN bit */
mbed_official 532:fe11edbda85c 630 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_COLKEN;
mbed_official 87:085cde657901 631
mbed_official 87:085cde657901 632 /* Sets the Reload type */
mbed_official 87:085cde657901 633 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 634
mbed_official 87:085cde657901 635 /* Change the LTDC state*/
mbed_official 87:085cde657901 636 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 637
mbed_official 87:085cde657901 638 /* Process unlocked */
mbed_official 87:085cde657901 639 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 640
mbed_official 87:085cde657901 641 return HAL_OK;
mbed_official 87:085cde657901 642 }
mbed_official 87:085cde657901 643
mbed_official 87:085cde657901 644 /**
mbed_official 87:085cde657901 645 * @brief Enable the color lookup table.
mbed_official 87:085cde657901 646 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 647 * the configuration information for the LTDC.
mbed_official 226:b062af740e40 648 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 649 * This parameter can be one of the following values:
mbed_official 87:085cde657901 650 * 0 or 1
mbed_official 226:b062af740e40 651 * @retval HAL status
mbed_official 87:085cde657901 652 */
mbed_official 87:085cde657901 653 HAL_StatusTypeDef HAL_LTDC_EnableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
mbed_official 87:085cde657901 654 {
mbed_official 87:085cde657901 655
mbed_official 87:085cde657901 656 /* Process locked */
mbed_official 87:085cde657901 657 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 658
mbed_official 87:085cde657901 659 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 660 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 661
mbed_official 87:085cde657901 662 /* Check the parameters */
mbed_official 87:085cde657901 663 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 664
mbed_official 87:085cde657901 665 /* Disable LTDC color lookup table by setting CLUTEN bit */
mbed_official 532:fe11edbda85c 666 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_CLUTEN;
mbed_official 87:085cde657901 667
mbed_official 87:085cde657901 668 /* Sets the Reload type */
mbed_official 87:085cde657901 669 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 670
mbed_official 87:085cde657901 671 /* Change the LTDC state*/
mbed_official 87:085cde657901 672 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 673
mbed_official 87:085cde657901 674 /* Process unlocked */
mbed_official 87:085cde657901 675 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 676
mbed_official 87:085cde657901 677 return HAL_OK;
mbed_official 87:085cde657901 678 }
mbed_official 87:085cde657901 679
mbed_official 87:085cde657901 680 /**
mbed_official 87:085cde657901 681 * @brief Disable the color lookup table.
mbed_official 87:085cde657901 682 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 683 * the configuration information for the LTDC.
mbed_official 226:b062af740e40 684 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 685 * This parameter can be one of the following values:
mbed_official 87:085cde657901 686 * 0 or 1
mbed_official 226:b062af740e40 687 * @retval HAL status
mbed_official 87:085cde657901 688 */
mbed_official 87:085cde657901 689 HAL_StatusTypeDef HAL_LTDC_DisableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx)
mbed_official 87:085cde657901 690 {
mbed_official 87:085cde657901 691
mbed_official 87:085cde657901 692 /* Process locked */
mbed_official 87:085cde657901 693 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 694
mbed_official 87:085cde657901 695 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 696 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 697
mbed_official 87:085cde657901 698 /* Check the parameters */
mbed_official 87:085cde657901 699 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 700
mbed_official 87:085cde657901 701 /* Disable LTDC color lookup table by setting CLUTEN bit */
mbed_official 532:fe11edbda85c 702 LTDC_LAYER(hltdc, LayerIdx)->CR &= ~(uint32_t)LTDC_LxCR_CLUTEN;
mbed_official 87:085cde657901 703
mbed_official 87:085cde657901 704 /* Sets the Reload type */
mbed_official 87:085cde657901 705 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 706
mbed_official 87:085cde657901 707 /* Change the LTDC state*/
mbed_official 87:085cde657901 708 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 709
mbed_official 87:085cde657901 710 /* Process unlocked */
mbed_official 87:085cde657901 711 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 712
mbed_official 87:085cde657901 713 return HAL_OK;
mbed_official 87:085cde657901 714 }
mbed_official 87:085cde657901 715
mbed_official 87:085cde657901 716 /**
mbed_official 87:085cde657901 717 * @brief Enables Dither.
mbed_official 87:085cde657901 718 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 719 * the configuration information for the LTDC.
mbed_official 226:b062af740e40 720 * @retval HAL status
mbed_official 87:085cde657901 721 */
mbed_official 87:085cde657901 722
mbed_official 87:085cde657901 723 HAL_StatusTypeDef HAL_LTDC_EnableDither(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 724 {
mbed_official 87:085cde657901 725 /* Process locked */
mbed_official 87:085cde657901 726 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 727
mbed_official 87:085cde657901 728 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 729 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 730
mbed_official 87:085cde657901 731 /* Enable Dither by setting DTEN bit */
mbed_official 87:085cde657901 732 LTDC->GCR |= (uint32_t)LTDC_GCR_DTEN;
mbed_official 87:085cde657901 733
mbed_official 87:085cde657901 734 /* Change the LTDC state*/
mbed_official 87:085cde657901 735 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 736
mbed_official 87:085cde657901 737 /* Process unlocked */
mbed_official 87:085cde657901 738 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 739
mbed_official 87:085cde657901 740 return HAL_OK;
mbed_official 87:085cde657901 741 }
mbed_official 87:085cde657901 742
mbed_official 87:085cde657901 743 /**
mbed_official 87:085cde657901 744 * @brief Disables Dither.
mbed_official 87:085cde657901 745 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 746 * the configuration information for the LTDC.
mbed_official 226:b062af740e40 747 * @retval HAL status
mbed_official 87:085cde657901 748 */
mbed_official 87:085cde657901 749
mbed_official 87:085cde657901 750 HAL_StatusTypeDef HAL_LTDC_DisableDither(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 751 {
mbed_official 87:085cde657901 752 /* Process locked */
mbed_official 87:085cde657901 753 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 754
mbed_official 87:085cde657901 755 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 756 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 757
mbed_official 87:085cde657901 758 /* Disable Dither by setting DTEN bit */
mbed_official 87:085cde657901 759 LTDC->GCR &= ~(uint32_t)LTDC_GCR_DTEN;
mbed_official 87:085cde657901 760
mbed_official 87:085cde657901 761 /* Change the LTDC state*/
mbed_official 87:085cde657901 762 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 763
mbed_official 87:085cde657901 764 /* Process unlocked */
mbed_official 87:085cde657901 765 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 766
mbed_official 87:085cde657901 767 return HAL_OK;
mbed_official 87:085cde657901 768 }
mbed_official 87:085cde657901 769
mbed_official 87:085cde657901 770 /**
mbed_official 87:085cde657901 771 * @brief Set the LTDC window size.
mbed_official 87:085cde657901 772 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 773 * the configuration information for the LTDC.
mbed_official 87:085cde657901 774 * @param XSize: LTDC Pixel per line
mbed_official 87:085cde657901 775 * @param YSize: LTDC Line number
mbed_official 226:b062af740e40 776 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 777 * This parameter can be one of the following values:
mbed_official 87:085cde657901 778 * 0 or 1
mbed_official 226:b062af740e40 779 * @retval HAL status
mbed_official 87:085cde657901 780 */
mbed_official 87:085cde657901 781 HAL_StatusTypeDef HAL_LTDC_SetWindowSize(LTDC_HandleTypeDef *hltdc, uint32_t XSize, uint32_t YSize, uint32_t LayerIdx)
mbed_official 87:085cde657901 782 {
mbed_official 87:085cde657901 783 LTDC_LayerCfgTypeDef *pLayerCfg;
mbed_official 87:085cde657901 784
mbed_official 87:085cde657901 785 /* Process locked */
mbed_official 87:085cde657901 786 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 787
mbed_official 87:085cde657901 788 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 789 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 790
mbed_official 87:085cde657901 791 /* Get layer configuration from handle structure */
mbed_official 87:085cde657901 792 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
mbed_official 87:085cde657901 793
mbed_official 87:085cde657901 794 /* Check the parameters (Layers parameters)*/
mbed_official 87:085cde657901 795 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 796 assert_param(IS_LTDC_HCONFIGST(pLayerCfg->WindowX0));
mbed_official 87:085cde657901 797 assert_param(IS_LTDC_HCONFIGSP(pLayerCfg->WindowX1));
mbed_official 87:085cde657901 798 assert_param(IS_LTDC_VCONFIGST(pLayerCfg->WindowY0));
mbed_official 87:085cde657901 799 assert_param(IS_LTDC_VCONFIGSP(pLayerCfg->WindowY1));
mbed_official 87:085cde657901 800 assert_param(IS_LTDC_CFBLL(XSize));
mbed_official 87:085cde657901 801 assert_param(IS_LTDC_CFBLNBR(YSize));
mbed_official 87:085cde657901 802
mbed_official 87:085cde657901 803 /* update horizontal start/stop */
mbed_official 87:085cde657901 804 pLayerCfg->WindowX0 = 0;
mbed_official 87:085cde657901 805 pLayerCfg->WindowX1 = XSize + pLayerCfg->WindowX0;
mbed_official 87:085cde657901 806
mbed_official 87:085cde657901 807 /* update vertical start/stop */
mbed_official 87:085cde657901 808 pLayerCfg->WindowY0 = 0;
mbed_official 87:085cde657901 809 pLayerCfg->WindowY1 = YSize + pLayerCfg->WindowY0;
mbed_official 87:085cde657901 810
mbed_official 87:085cde657901 811 /* Reconfigures the color frame buffer pitch in byte */
mbed_official 87:085cde657901 812 pLayerCfg->ImageWidth = XSize;
mbed_official 87:085cde657901 813
mbed_official 87:085cde657901 814 /* Reconfigures the frame buffer line number */
mbed_official 87:085cde657901 815 pLayerCfg->ImageHeight = YSize;
mbed_official 87:085cde657901 816
mbed_official 87:085cde657901 817 /* Set LTDC parameters */
mbed_official 87:085cde657901 818 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
mbed_official 87:085cde657901 819
mbed_official 87:085cde657901 820 /* Sets the Reload type */
mbed_official 87:085cde657901 821 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 822
mbed_official 87:085cde657901 823 /* Change the LTDC state*/
mbed_official 87:085cde657901 824 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 825
mbed_official 87:085cde657901 826 /* Process unlocked */
mbed_official 87:085cde657901 827 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 828
mbed_official 87:085cde657901 829 return HAL_OK;
mbed_official 87:085cde657901 830 }
mbed_official 87:085cde657901 831
mbed_official 87:085cde657901 832 /**
mbed_official 87:085cde657901 833 * @brief Set the LTDC window position.
mbed_official 87:085cde657901 834 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 835 * the configuration information for the LTDC.
mbed_official 87:085cde657901 836 * @param X0: LTDC window X offset
mbed_official 87:085cde657901 837 * @param Y0: LTDC window Y offset
mbed_official 226:b062af740e40 838 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 839 * This parameter can be one of the following values:
mbed_official 87:085cde657901 840 * 0 or 1
mbed_official 226:b062af740e40 841 * @retval HAL status
mbed_official 87:085cde657901 842 */
mbed_official 87:085cde657901 843 HAL_StatusTypeDef HAL_LTDC_SetWindowPosition(LTDC_HandleTypeDef *hltdc, uint32_t X0, uint32_t Y0, uint32_t LayerIdx)
mbed_official 87:085cde657901 844 {
mbed_official 87:085cde657901 845 LTDC_LayerCfgTypeDef *pLayerCfg;
mbed_official 87:085cde657901 846
mbed_official 87:085cde657901 847 /* Process locked */
mbed_official 87:085cde657901 848 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 849
mbed_official 87:085cde657901 850 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 851 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 852
mbed_official 87:085cde657901 853 /* Get layer configuration from handle structure */
mbed_official 87:085cde657901 854 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
mbed_official 87:085cde657901 855
mbed_official 87:085cde657901 856 /* Check the parameters */
mbed_official 87:085cde657901 857 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 858 assert_param(IS_LTDC_HCONFIGST(pLayerCfg->WindowX0));
mbed_official 87:085cde657901 859 assert_param(IS_LTDC_HCONFIGSP(pLayerCfg->WindowX1));
mbed_official 87:085cde657901 860 assert_param(IS_LTDC_VCONFIGST(pLayerCfg->WindowY0));
mbed_official 87:085cde657901 861 assert_param(IS_LTDC_VCONFIGSP(pLayerCfg->WindowY1));
mbed_official 87:085cde657901 862
mbed_official 87:085cde657901 863 /* update horizontal start/stop */
mbed_official 87:085cde657901 864 pLayerCfg->WindowX0 = X0;
mbed_official 87:085cde657901 865 pLayerCfg->WindowX1 = X0 + pLayerCfg->ImageWidth;
mbed_official 87:085cde657901 866
mbed_official 87:085cde657901 867 /* update vertical start/stop */
mbed_official 87:085cde657901 868 pLayerCfg->WindowY0 = Y0;
mbed_official 87:085cde657901 869 pLayerCfg->WindowY1 = Y0 + pLayerCfg->ImageHeight;
mbed_official 87:085cde657901 870
mbed_official 87:085cde657901 871 /* Set LTDC parameters */
mbed_official 87:085cde657901 872 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
mbed_official 87:085cde657901 873
mbed_official 87:085cde657901 874 /* Sets the Reload type */
mbed_official 87:085cde657901 875 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 876
mbed_official 87:085cde657901 877 /* Change the LTDC state*/
mbed_official 87:085cde657901 878 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 879
mbed_official 87:085cde657901 880 /* Process unlocked */
mbed_official 87:085cde657901 881 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 882
mbed_official 87:085cde657901 883 return HAL_OK;
mbed_official 87:085cde657901 884 }
mbed_official 87:085cde657901 885
mbed_official 87:085cde657901 886 /**
mbed_official 87:085cde657901 887 * @brief Reconfigure the pixel format.
mbed_official 87:085cde657901 888 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 889 * the configuration information for the LTDC.
mbed_official 87:085cde657901 890 * @param Pixelformat: new pixel format value.
mbed_official 87:085cde657901 891 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 892 * This parameter can be one of the following values:
mbed_official 87:085cde657901 893 * 0 or 1.
mbed_official 226:b062af740e40 894 * @retval HAL status
mbed_official 87:085cde657901 895 */
mbed_official 87:085cde657901 896 HAL_StatusTypeDef HAL_LTDC_SetPixelFormat(LTDC_HandleTypeDef *hltdc, uint32_t Pixelformat, uint32_t LayerIdx)
mbed_official 87:085cde657901 897 {
mbed_official 87:085cde657901 898 LTDC_LayerCfgTypeDef *pLayerCfg;
mbed_official 87:085cde657901 899
mbed_official 87:085cde657901 900 /* Process locked */
mbed_official 87:085cde657901 901 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 902
mbed_official 87:085cde657901 903 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 904 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 905
mbed_official 87:085cde657901 906 /* Check the parameters */
mbed_official 87:085cde657901 907 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 908 assert_param(IS_LTDC_PIXEL_FORMAT(Pixelformat));
mbed_official 87:085cde657901 909
mbed_official 87:085cde657901 910 /* Get layer configuration from handle structure */
mbed_official 87:085cde657901 911 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
mbed_official 87:085cde657901 912
mbed_official 87:085cde657901 913 /* Reconfigure the pixel format */
mbed_official 87:085cde657901 914 pLayerCfg->PixelFormat = Pixelformat;
mbed_official 87:085cde657901 915
mbed_official 87:085cde657901 916 /* Set LTDC parameters */
mbed_official 87:085cde657901 917 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
mbed_official 87:085cde657901 918
mbed_official 87:085cde657901 919 /* Sets the Reload type */
mbed_official 87:085cde657901 920 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 921
mbed_official 87:085cde657901 922 /* Change the LTDC state*/
mbed_official 87:085cde657901 923 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 924
mbed_official 87:085cde657901 925 /* Process unlocked */
mbed_official 87:085cde657901 926 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 927
mbed_official 87:085cde657901 928 return HAL_OK;
mbed_official 87:085cde657901 929 }
mbed_official 87:085cde657901 930
mbed_official 87:085cde657901 931 /**
mbed_official 87:085cde657901 932 * @brief Reconfigure the layer alpha value.
mbed_official 87:085cde657901 933 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 934 * the configuration information for the LTDC.
mbed_official 87:085cde657901 935 * @param Alpha: new alpha value.
mbed_official 226:b062af740e40 936 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 937 * This parameter can be one of the following values:
mbed_official 87:085cde657901 938 * 0 or 1
mbed_official 226:b062af740e40 939 * @retval HAL status
mbed_official 87:085cde657901 940 */
mbed_official 87:085cde657901 941 HAL_StatusTypeDef HAL_LTDC_SetAlpha(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, uint32_t LayerIdx)
mbed_official 87:085cde657901 942 {
mbed_official 87:085cde657901 943 LTDC_LayerCfgTypeDef *pLayerCfg;
mbed_official 87:085cde657901 944
mbed_official 87:085cde657901 945 /* Process locked */
mbed_official 87:085cde657901 946 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 947
mbed_official 87:085cde657901 948 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 949 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 950
mbed_official 87:085cde657901 951 /* Check the parameters */
mbed_official 87:085cde657901 952 assert_param(IS_LTDC_ALPHA(Alpha));
mbed_official 87:085cde657901 953 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 954
mbed_official 87:085cde657901 955 /* Get layer configuration from handle structure */
mbed_official 87:085cde657901 956 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
mbed_official 87:085cde657901 957
mbed_official 87:085cde657901 958 /* Reconfigure the Alpha value */
mbed_official 87:085cde657901 959 pLayerCfg->Alpha = Alpha;
mbed_official 87:085cde657901 960
mbed_official 87:085cde657901 961 /* Set LTDC parameters */
mbed_official 87:085cde657901 962 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
mbed_official 87:085cde657901 963
mbed_official 87:085cde657901 964 /* Sets the Reload type */
mbed_official 87:085cde657901 965 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 966
mbed_official 87:085cde657901 967 /* Change the LTDC state*/
mbed_official 87:085cde657901 968 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 969
mbed_official 87:085cde657901 970 /* Process unlocked */
mbed_official 87:085cde657901 971 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 972
mbed_official 87:085cde657901 973 return HAL_OK;
mbed_official 87:085cde657901 974 }
mbed_official 87:085cde657901 975 /**
mbed_official 87:085cde657901 976 * @brief Reconfigure the frame buffer Address.
mbed_official 87:085cde657901 977 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 978 * the configuration information for the LTDC.
mbed_official 87:085cde657901 979 * @param Address: new address value.
mbed_official 87:085cde657901 980 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 981 * This parameter can be one of the following values:
mbed_official 87:085cde657901 982 * 0 or 1.
mbed_official 226:b062af740e40 983 * @retval HAL status
mbed_official 87:085cde657901 984 */
mbed_official 87:085cde657901 985 HAL_StatusTypeDef HAL_LTDC_SetAddress(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx)
mbed_official 87:085cde657901 986 {
mbed_official 87:085cde657901 987 LTDC_LayerCfgTypeDef *pLayerCfg;
mbed_official 87:085cde657901 988
mbed_official 87:085cde657901 989 /* Process locked */
mbed_official 87:085cde657901 990 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 991
mbed_official 87:085cde657901 992 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 993 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 994
mbed_official 87:085cde657901 995 /* Check the parameters */
mbed_official 87:085cde657901 996 assert_param(IS_LTDC_LAYER(LayerIdx));
mbed_official 87:085cde657901 997
mbed_official 87:085cde657901 998 /* Get layer configuration from handle structure */
mbed_official 87:085cde657901 999 pLayerCfg = &hltdc->LayerCfg[LayerIdx];
mbed_official 87:085cde657901 1000
mbed_official 87:085cde657901 1001 /* Reconfigure the Address */
mbed_official 87:085cde657901 1002 pLayerCfg->FBStartAdress = Address;
mbed_official 87:085cde657901 1003
mbed_official 87:085cde657901 1004 /* Set LTDC parameters */
mbed_official 87:085cde657901 1005 LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx);
mbed_official 87:085cde657901 1006
mbed_official 87:085cde657901 1007 /* Sets the Reload type */
mbed_official 87:085cde657901 1008 hltdc->Instance->SRCR = LTDC_SRCR_IMR;
mbed_official 87:085cde657901 1009
mbed_official 87:085cde657901 1010 /* Change the LTDC state*/
mbed_official 87:085cde657901 1011 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 1012
mbed_official 87:085cde657901 1013 /* Process unlocked */
mbed_official 87:085cde657901 1014 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 1015
mbed_official 87:085cde657901 1016 return HAL_OK;
mbed_official 87:085cde657901 1017 }
mbed_official 87:085cde657901 1018
mbed_official 87:085cde657901 1019 /**
mbed_official 87:085cde657901 1020 * @brief Define the position of the line interrupt .
mbed_official 87:085cde657901 1021 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 1022 * the configuration information for the LTDC.
mbed_official 87:085cde657901 1023 * @param Line: Line Interrupt Position.
mbed_official 226:b062af740e40 1024 * @retval HAL status
mbed_official 87:085cde657901 1025 */
mbed_official 87:085cde657901 1026 HAL_StatusTypeDef HAL_LTDC_ProgramLineEvent(LTDC_HandleTypeDef *hltdc, uint32_t Line)
mbed_official 87:085cde657901 1027 {
mbed_official 87:085cde657901 1028 /* Process locked */
mbed_official 87:085cde657901 1029 __HAL_LOCK(hltdc);
mbed_official 87:085cde657901 1030
mbed_official 87:085cde657901 1031 /* Change LTDC peripheral state */
mbed_official 87:085cde657901 1032 hltdc->State = HAL_LTDC_STATE_BUSY;
mbed_official 87:085cde657901 1033
mbed_official 87:085cde657901 1034 /* Check the parameters */
mbed_official 87:085cde657901 1035 assert_param(IS_LTDC_LIPOS(Line));
mbed_official 87:085cde657901 1036
mbed_official 87:085cde657901 1037 /* Enable the Line interrupt */
mbed_official 87:085cde657901 1038 __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_LI);
mbed_official 87:085cde657901 1039
mbed_official 87:085cde657901 1040 /* Sets the Line Interrupt position */
mbed_official 87:085cde657901 1041 LTDC->LIPCR = (uint32_t)Line;
mbed_official 87:085cde657901 1042
mbed_official 87:085cde657901 1043 /* Change the LTDC state*/
mbed_official 87:085cde657901 1044 hltdc->State = HAL_LTDC_STATE_READY;
mbed_official 87:085cde657901 1045
mbed_official 87:085cde657901 1046 /* Process unlocked */
mbed_official 87:085cde657901 1047 __HAL_UNLOCK(hltdc);
mbed_official 87:085cde657901 1048
mbed_official 87:085cde657901 1049 return HAL_OK;
mbed_official 87:085cde657901 1050 }
mbed_official 87:085cde657901 1051
mbed_official 87:085cde657901 1052 /**
mbed_official 87:085cde657901 1053 * @}
mbed_official 87:085cde657901 1054 */
mbed_official 87:085cde657901 1055
mbed_official 532:fe11edbda85c 1056 /** @defgroup LTDC_Exported_Functions_Group4 Peripheral State and Errors functions
mbed_official 87:085cde657901 1057 * @brief Peripheral State and Errors functions
mbed_official 87:085cde657901 1058 *
mbed_official 87:085cde657901 1059 @verbatim
mbed_official 87:085cde657901 1060 ===============================================================================
mbed_official 87:085cde657901 1061 ##### Peripheral State and Errors functions #####
mbed_official 87:085cde657901 1062 ===============================================================================
mbed_official 87:085cde657901 1063 [..]
mbed_official 87:085cde657901 1064 This subsection provides functions allowing to
mbed_official 87:085cde657901 1065 (+) Check the LTDC state.
mbed_official 87:085cde657901 1066 (+) Get error code.
mbed_official 87:085cde657901 1067
mbed_official 87:085cde657901 1068 @endverbatim
mbed_official 87:085cde657901 1069 * @{
mbed_official 87:085cde657901 1070 */
mbed_official 87:085cde657901 1071
mbed_official 87:085cde657901 1072 /**
mbed_official 87:085cde657901 1073 * @brief Return the LTDC state
mbed_official 87:085cde657901 1074 * @param hltdc: pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 1075 * the configuration information for the LTDC.
mbed_official 87:085cde657901 1076 * @retval HAL state
mbed_official 87:085cde657901 1077 */
mbed_official 87:085cde657901 1078 HAL_LTDC_StateTypeDef HAL_LTDC_GetState(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 1079 {
mbed_official 87:085cde657901 1080 return hltdc->State;
mbed_official 87:085cde657901 1081 }
mbed_official 87:085cde657901 1082
mbed_official 87:085cde657901 1083 /**
mbed_official 87:085cde657901 1084 * @brief Return the LTDC error code
mbed_official 87:085cde657901 1085 * @param hltdc : pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 1086 * the configuration information for the LTDC.
mbed_official 87:085cde657901 1087 * @retval LTDC Error Code
mbed_official 87:085cde657901 1088 */
mbed_official 87:085cde657901 1089 uint32_t HAL_LTDC_GetError(LTDC_HandleTypeDef *hltdc)
mbed_official 87:085cde657901 1090 {
mbed_official 87:085cde657901 1091 return hltdc->ErrorCode;
mbed_official 87:085cde657901 1092 }
mbed_official 87:085cde657901 1093
mbed_official 87:085cde657901 1094 /**
mbed_official 87:085cde657901 1095 * @}
mbed_official 87:085cde657901 1096 */
mbed_official 87:085cde657901 1097
mbed_official 87:085cde657901 1098 /**
mbed_official 87:085cde657901 1099 * @brief Configures the LTDC peripheral
mbed_official 87:085cde657901 1100 * @param hltdc : Pointer to a LTDC_HandleTypeDef structure that contains
mbed_official 87:085cde657901 1101 * the configuration information for the LTDC.
mbed_official 532:fe11edbda85c 1102 * @param pLayerCfg: Pointer LTDC Layer Configuration structure
mbed_official 226:b062af740e40 1103 * @param LayerIdx: LTDC Layer index.
mbed_official 87:085cde657901 1104 * This parameter can be one of the following values: 0 or 1
mbed_official 87:085cde657901 1105 * @retval None
mbed_official 87:085cde657901 1106 */
mbed_official 87:085cde657901 1107 static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx)
mbed_official 87:085cde657901 1108 {
mbed_official 87:085cde657901 1109 uint32_t tmp = 0;
mbed_official 87:085cde657901 1110 uint32_t tmp1 = 0;
mbed_official 87:085cde657901 1111 uint32_t tmp2 = 0;
mbed_official 87:085cde657901 1112
mbed_official 87:085cde657901 1113 /* Configures the horizontal start and stop position */
mbed_official 87:085cde657901 1114 tmp = ((pLayerCfg->WindowX1 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16)) << 16);
mbed_official 532:fe11edbda85c 1115 LTDC_LAYER(hltdc, LayerIdx)->WHPCR &= ~(LTDC_LxWHPCR_WHSTPOS | LTDC_LxWHPCR_WHSPPOS);
mbed_official 532:fe11edbda85c 1116 LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16) + 1) | tmp);
mbed_official 87:085cde657901 1117
mbed_official 87:085cde657901 1118 /* Configures the vertical start and stop position */
mbed_official 87:085cde657901 1119 tmp = ((pLayerCfg->WindowY1 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP)) << 16);
mbed_official 532:fe11edbda85c 1120 LTDC_LAYER(hltdc, LayerIdx)->WVPCR &= ~(LTDC_LxWVPCR_WVSTPOS | LTDC_LxWVPCR_WVSPPOS);
mbed_official 532:fe11edbda85c 1121 LTDC_LAYER(hltdc, LayerIdx)->WVPCR = ((pLayerCfg->WindowY0 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP) + 1) | tmp);
mbed_official 87:085cde657901 1122
mbed_official 87:085cde657901 1123 /* Specifies the pixel format */
mbed_official 532:fe11edbda85c 1124 LTDC_LAYER(hltdc, LayerIdx)->PFCR &= ~(LTDC_LxPFCR_PF);
mbed_official 532:fe11edbda85c 1125 LTDC_LAYER(hltdc, LayerIdx)->PFCR = (pLayerCfg->PixelFormat);
mbed_official 87:085cde657901 1126
mbed_official 87:085cde657901 1127 /* Configures the default color values */
mbed_official 87:085cde657901 1128 tmp = ((uint32_t)(pLayerCfg->Backcolor.Green) << 8);
mbed_official 87:085cde657901 1129 tmp1 = ((uint32_t)(pLayerCfg->Backcolor.Red) << 16);
mbed_official 87:085cde657901 1130 tmp2 = (pLayerCfg->Alpha0 << 24);
mbed_official 532:fe11edbda85c 1131 LTDC_LAYER(hltdc, LayerIdx)->DCCR &= ~(LTDC_LxDCCR_DCBLUE | LTDC_LxDCCR_DCGREEN | LTDC_LxDCCR_DCRED | LTDC_LxDCCR_DCALPHA);
mbed_official 532:fe11edbda85c 1132 LTDC_LAYER(hltdc, LayerIdx)->DCCR = (pLayerCfg->Backcolor.Blue | tmp | tmp1 | tmp2);
mbed_official 87:085cde657901 1133
mbed_official 87:085cde657901 1134 /* Specifies the constant alpha value */
mbed_official 532:fe11edbda85c 1135 LTDC_LAYER(hltdc, LayerIdx)->CACR &= ~(LTDC_LxCACR_CONSTA);
mbed_official 532:fe11edbda85c 1136 LTDC_LAYER(hltdc, LayerIdx)->CACR = (pLayerCfg->Alpha);
mbed_official 87:085cde657901 1137
mbed_official 87:085cde657901 1138 /* Specifies the blending factors */
mbed_official 532:fe11edbda85c 1139 LTDC_LAYER(hltdc, LayerIdx)->BFCR &= ~(LTDC_LxBFCR_BF2 | LTDC_LxBFCR_BF1);
mbed_official 532:fe11edbda85c 1140 LTDC_LAYER(hltdc, LayerIdx)->BFCR = (pLayerCfg->BlendingFactor1 | pLayerCfg->BlendingFactor2);
mbed_official 87:085cde657901 1141
mbed_official 87:085cde657901 1142 /* Configures the color frame buffer start address */
mbed_official 532:fe11edbda85c 1143 LTDC_LAYER(hltdc, LayerIdx)->CFBAR &= ~(LTDC_LxCFBAR_CFBADD);
mbed_official 532:fe11edbda85c 1144 LTDC_LAYER(hltdc, LayerIdx)->CFBAR = (pLayerCfg->FBStartAdress);
mbed_official 87:085cde657901 1145
mbed_official 87:085cde657901 1146 if(pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
mbed_official 87:085cde657901 1147 {
mbed_official 87:085cde657901 1148 tmp = 4;
mbed_official 87:085cde657901 1149 }
mbed_official 87:085cde657901 1150 else if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB888)
mbed_official 87:085cde657901 1151 {
mbed_official 87:085cde657901 1152 tmp = 3;
mbed_official 87:085cde657901 1153 }
mbed_official 87:085cde657901 1154 else if((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
mbed_official 87:085cde657901 1155 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
mbed_official 87:085cde657901 1156 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \
mbed_official 87:085cde657901 1157 (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_AL88))
mbed_official 87:085cde657901 1158 {
mbed_official 87:085cde657901 1159 tmp = 2;
mbed_official 87:085cde657901 1160 }
mbed_official 87:085cde657901 1161 else
mbed_official 87:085cde657901 1162 {
mbed_official 87:085cde657901 1163 tmp = 1;
mbed_official 87:085cde657901 1164 }
mbed_official 87:085cde657901 1165
mbed_official 87:085cde657901 1166 /* Configures the color frame buffer pitch in byte */
mbed_official 532:fe11edbda85c 1167 LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~(LTDC_LxCFBLR_CFBLL | LTDC_LxCFBLR_CFBP);
mbed_official 532:fe11edbda85c 1168 LTDC_LAYER(hltdc, LayerIdx)->CFBLR = (((pLayerCfg->ImageWidth * tmp) << 16) | (((pLayerCfg->WindowX1 - pLayerCfg->WindowX0) * tmp) + 3));
mbed_official 87:085cde657901 1169
mbed_official 87:085cde657901 1170 /* Configures the frame buffer line number */
mbed_official 532:fe11edbda85c 1171 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR &= ~(LTDC_LxCFBLNR_CFBLNBR);
mbed_official 532:fe11edbda85c 1172 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR = (pLayerCfg->ImageHeight);
mbed_official 87:085cde657901 1173
mbed_official 87:085cde657901 1174 /* Enable LTDC_Layer by setting LEN bit */
mbed_official 532:fe11edbda85c 1175 LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_LEN;
mbed_official 87:085cde657901 1176 }
mbed_official 87:085cde657901 1177
mbed_official 87:085cde657901 1178 /**
mbed_official 87:085cde657901 1179 * @}
mbed_official 87:085cde657901 1180 */
mbed_official 87:085cde657901 1181 #endif /* STM32F429xx || STM32F439xx */
mbed_official 87:085cde657901 1182 #endif /* HAL_LTDC_MODULE_ENABLED */
mbed_official 87:085cde657901 1183 /**
mbed_official 87:085cde657901 1184 * @}
mbed_official 87:085cde657901 1185 */
mbed_official 87:085cde657901 1186
mbed_official 87:085cde657901 1187 /**
mbed_official 87:085cde657901 1188 * @}
mbed_official 87:085cde657901 1189 */
mbed_official 87:085cde657901 1190
mbed_official 87:085cde657901 1191 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/