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:
Fri Jun 19 09:15:11 2015 +0100
Revision:
573:ad23fe03a082
Child:
610:813dcc80987e
Synchronized with git revision d47834cd4d729e5b36b4c1ad4650f8b8f6a9ab86

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

DISCO_F746NG - Add new target

Who changed what in which revision?

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