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 Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 610:813dcc80987e 1 /**
mbed_official 610:813dcc80987e 2 ******************************************************************************
mbed_official 610:813dcc80987e 3 * @file stm32l4xx_hal_lcd.c
mbed_official 610:813dcc80987e 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.0
mbed_official 610:813dcc80987e 6 * @date 26-June-2015
mbed_official 610:813dcc80987e 7 * @brief LCD Controller HAL module driver.
mbed_official 610:813dcc80987e 8 * This file provides firmware functions to manage the following
mbed_official 610:813dcc80987e 9 * functionalities of the LCD Controller (LCD) peripheral:
mbed_official 610:813dcc80987e 10 * + Initialization/de-initialization methods
mbed_official 610:813dcc80987e 11 * + I/O operation methods
mbed_official 610:813dcc80987e 12 * + Peripheral State methods
mbed_official 610:813dcc80987e 13 *
mbed_official 610:813dcc80987e 14 @verbatim
mbed_official 610:813dcc80987e 15 ==============================================================================
mbed_official 610:813dcc80987e 16 ##### How to use this driver #####
mbed_official 610:813dcc80987e 17 ==============================================================================
mbed_official 610:813dcc80987e 18 [..] The LCD HAL driver can be used as follows:
mbed_official 610:813dcc80987e 19
mbed_official 610:813dcc80987e 20 (#) Declare a LCD_HandleTypeDef handle structure.
mbed_official 610:813dcc80987e 21
mbed_official 610:813dcc80987e 22 -@- The frequency generator allows you to achieve various LCD frame rates
mbed_official 610:813dcc80987e 23 starting from an LCD input clock frequency (LCDCLK) which can vary
mbed_official 610:813dcc80987e 24 from 32 kHz up to 1 MHz.
mbed_official 610:813dcc80987e 25
mbed_official 610:813dcc80987e 26 (#) Initialize the LCD low level resources by implementing the HAL_LCD_MspInit() API:
mbed_official 610:813dcc80987e 27
mbed_official 610:813dcc80987e 28 (++) Enable the LCDCLK (same as RTCCLK): to configure the RTCCLK/LCDCLK, proceed as follows:
mbed_official 610:813dcc80987e 29 (+++) Use RCC function HAL_RCCEx_PeriphCLKConfig in indicating RCC_PERIPHCLK_LCD and
mbed_official 610:813dcc80987e 30 selected clock source (HSE, LSI or LSE)
mbed_official 610:813dcc80987e 31
mbed_official 610:813dcc80987e 32 (++) LCD pins configuration:
mbed_official 610:813dcc80987e 33 (+++) Enable the clock for the LCD GPIOs.
mbed_official 610:813dcc80987e 34 (+++) Configure these LCD pins as alternate function no-pull.
mbed_official 610:813dcc80987e 35 (++) Enable the LCD interface clock.
mbed_official 610:813dcc80987e 36
mbed_official 610:813dcc80987e 37
mbed_official 610:813dcc80987e 38 (#) Program the Prescaler, Divider, Blink mode, Blink Frequency Duty, Bias,
mbed_official 610:813dcc80987e 39 Voltage Source, Dead Time, Pulse On Duration, Contrast, High drive and Multiplexer
mbed_official 610:813dcc80987e 40 Segment in the Init structure of the LCD handle.
mbed_official 610:813dcc80987e 41
mbed_official 610:813dcc80987e 42 (#) Initialize the LCD registers by calling the HAL_LCD_Init() API.
mbed_official 610:813dcc80987e 43
mbed_official 610:813dcc80987e 44 -@- The HAL_LCD_Init() API configures also the low level Hardware GPIO, CLOCK, ...etc)
mbed_official 610:813dcc80987e 45 by calling the customized HAL_LCD_MspInit() API.
mbed_official 610:813dcc80987e 46 -@- After calling the HAL_LCD_Init() the LCD RAM memory is cleared
mbed_official 610:813dcc80987e 47
mbed_official 610:813dcc80987e 48 (#) Optionally you can update the LCD configuration using these macros:
mbed_official 610:813dcc80987e 49 (++) LCD High Drive using the __HAL_LCD_HIGHDRIVER_ENABLE() and __HAL_LCD_HIGHDRIVER_DISABLE() macros
mbed_official 610:813dcc80987e 50 (++) Voltage output buffer using __HAL_LCD_VOLTAGE_BUFFER_ENABLE() and __HAL_LCD_VOLTAGE_BUFFER_DISABLE() macros
mbed_official 610:813dcc80987e 51 (++) LCD Pulse ON Duration using the __HAL_LCD_PULSEONDURATION_CONFIG() macro
mbed_official 610:813dcc80987e 52 (++) LCD Dead Time using the __HAL_LCD_DEADTIME_CONFIG() macro
mbed_official 610:813dcc80987e 53 (++) The LCD Blink mode and frequency using the __HAL_LCD_BLINK_CONFIG() macro
mbed_official 610:813dcc80987e 54 (++) The LCD Contrast using the __HAL_LCD_CONTRAST_CONFIG() macro
mbed_official 610:813dcc80987e 55
mbed_official 610:813dcc80987e 56 (#) Write to the LCD RAM memory using the HAL_LCD_Write() API, this API can be called
mbed_official 610:813dcc80987e 57 more time to update the different LCD RAM registers before calling
mbed_official 610:813dcc80987e 58 HAL_LCD_UpdateDisplayRequest() API.
mbed_official 610:813dcc80987e 59
mbed_official 610:813dcc80987e 60 (#) The HAL_LCD_Clear() API can be used to clear the LCD RAM memory.
mbed_official 610:813dcc80987e 61
mbed_official 610:813dcc80987e 62 (#) When LCD RAM memory is updated enable the update display request using
mbed_official 610:813dcc80987e 63 the HAL_LCD_UpdateDisplayRequest() API.
mbed_official 610:813dcc80987e 64
mbed_official 610:813dcc80987e 65 [..] LCD and low power modes:
mbed_official 610:813dcc80987e 66 (#) The LCD remain active during Sleep, Low Power run, Low Power Sleep and
mbed_official 610:813dcc80987e 67 STOP modes.
mbed_official 610:813dcc80987e 68
mbed_official 610:813dcc80987e 69 @endverbatim
mbed_official 610:813dcc80987e 70 ******************************************************************************
mbed_official 610:813dcc80987e 71 * @attention
mbed_official 610:813dcc80987e 72 *
mbed_official 610:813dcc80987e 73 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 610:813dcc80987e 74 *
mbed_official 610:813dcc80987e 75 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 610:813dcc80987e 76 * are permitted provided that the following conditions are met:
mbed_official 610:813dcc80987e 77 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 610:813dcc80987e 78 * this list of conditions and the following disclaimer.
mbed_official 610:813dcc80987e 79 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 610:813dcc80987e 80 * this list of conditions and the following disclaimer in the documentation
mbed_official 610:813dcc80987e 81 * and/or other materials provided with the distribution.
mbed_official 610:813dcc80987e 82 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 610:813dcc80987e 83 * may be used to endorse or promote products derived from this software
mbed_official 610:813dcc80987e 84 * without specific prior written permission.
mbed_official 610:813dcc80987e 85 *
mbed_official 610:813dcc80987e 86 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 610:813dcc80987e 87 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 610:813dcc80987e 88 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 610:813dcc80987e 89 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 610:813dcc80987e 90 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 610:813dcc80987e 91 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 610:813dcc80987e 92 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 610:813dcc80987e 93 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 610:813dcc80987e 94 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 610:813dcc80987e 95 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 610:813dcc80987e 96 *
mbed_official 610:813dcc80987e 97 ******************************************************************************
mbed_official 610:813dcc80987e 98 */
mbed_official 610:813dcc80987e 99
mbed_official 610:813dcc80987e 100 /* Includes ------------------------------------------------------------------*/
mbed_official 610:813dcc80987e 101 #include "stm32l4xx_hal.h"
mbed_official 610:813dcc80987e 102
mbed_official 610:813dcc80987e 103 #if defined(STM32L476xx) || defined(STM32L486xx)
mbed_official 610:813dcc80987e 104
mbed_official 610:813dcc80987e 105 /** @addtogroup STM32L4xx_HAL_Driver
mbed_official 610:813dcc80987e 106 * @{
mbed_official 610:813dcc80987e 107 */
mbed_official 610:813dcc80987e 108
mbed_official 610:813dcc80987e 109 #ifdef HAL_LCD_MODULE_ENABLED
mbed_official 610:813dcc80987e 110
mbed_official 610:813dcc80987e 111 /** @defgroup LCD LCD
mbed_official 610:813dcc80987e 112 * @brief LCD HAL module driver
mbed_official 610:813dcc80987e 113 * @{
mbed_official 610:813dcc80987e 114 */
mbed_official 610:813dcc80987e 115
mbed_official 610:813dcc80987e 116 /* Private typedef -----------------------------------------------------------*/
mbed_official 610:813dcc80987e 117 /* Private define ------------------------------------------------------------*/
mbed_official 610:813dcc80987e 118 /** @defgroup LCD_Private_Defines LCD Private Defines
mbed_official 610:813dcc80987e 119 * @{
mbed_official 610:813dcc80987e 120 */
mbed_official 610:813dcc80987e 121
mbed_official 610:813dcc80987e 122 #define LCD_TIMEOUT_VALUE 1000
mbed_official 610:813dcc80987e 123
mbed_official 610:813dcc80987e 124 /**
mbed_official 610:813dcc80987e 125 * @}
mbed_official 610:813dcc80987e 126 */
mbed_official 610:813dcc80987e 127
mbed_official 610:813dcc80987e 128 /* Private macro -------------------------------------------------------------*/
mbed_official 610:813dcc80987e 129 /* Private variables ---------------------------------------------------------*/
mbed_official 610:813dcc80987e 130 /* Private function prototypes -----------------------------------------------*/
mbed_official 610:813dcc80987e 131 /* Exported functions --------------------------------------------------------*/
mbed_official 610:813dcc80987e 132
mbed_official 610:813dcc80987e 133 /** @defgroup LCD_Exported_Functions LCD Exported Functions
mbed_official 610:813dcc80987e 134 * @{
mbed_official 610:813dcc80987e 135 */
mbed_official 610:813dcc80987e 136
mbed_official 610:813dcc80987e 137 /** @defgroup LCD_Exported_Functions_Group1 Initialization/de-initialization methods
mbed_official 610:813dcc80987e 138 * @brief Initialization and Configuration functions
mbed_official 610:813dcc80987e 139 *
mbed_official 610:813dcc80987e 140 @verbatim
mbed_official 610:813dcc80987e 141 ===============================================================================
mbed_official 610:813dcc80987e 142 ##### Initialization and Configuration functions #####
mbed_official 610:813dcc80987e 143 ===============================================================================
mbed_official 610:813dcc80987e 144 [..]
mbed_official 610:813dcc80987e 145
mbed_official 610:813dcc80987e 146 @endverbatim
mbed_official 610:813dcc80987e 147 * @{
mbed_official 610:813dcc80987e 148 */
mbed_official 610:813dcc80987e 149
mbed_official 610:813dcc80987e 150 /**
mbed_official 610:813dcc80987e 151 * @brief Initialize the LCD peripheral according to the specified parameters
mbed_official 610:813dcc80987e 152 * in the LCD_InitStruct and initialize the associated handle.
mbed_official 610:813dcc80987e 153 * @note This function can be used only when the LCD is disabled.
mbed_official 610:813dcc80987e 154 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 155 * @retval None
mbed_official 610:813dcc80987e 156 */
mbed_official 610:813dcc80987e 157 HAL_StatusTypeDef HAL_LCD_Init(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 158 {
mbed_official 610:813dcc80987e 159 uint32_t tickstart = 0x00;
mbed_official 610:813dcc80987e 160 uint32_t counter = 0;
mbed_official 610:813dcc80987e 161
mbed_official 610:813dcc80987e 162 /* Check the LCD handle allocation */
mbed_official 610:813dcc80987e 163 if(hlcd == NULL)
mbed_official 610:813dcc80987e 164 {
mbed_official 610:813dcc80987e 165 return HAL_ERROR;
mbed_official 610:813dcc80987e 166 }
mbed_official 610:813dcc80987e 167
mbed_official 610:813dcc80987e 168 /* Check function parameters */
mbed_official 610:813dcc80987e 169 assert_param(IS_LCD_ALL_INSTANCE(hlcd->Instance));
mbed_official 610:813dcc80987e 170 assert_param(IS_LCD_PRESCALER(hlcd->Init.Prescaler));
mbed_official 610:813dcc80987e 171 assert_param(IS_LCD_DIVIDER(hlcd->Init.Divider));
mbed_official 610:813dcc80987e 172 assert_param(IS_LCD_DUTY(hlcd->Init.Duty));
mbed_official 610:813dcc80987e 173 assert_param(IS_LCD_BIAS(hlcd->Init.Bias));
mbed_official 610:813dcc80987e 174 assert_param(IS_LCD_VOLTAGE_SOURCE(hlcd->Init.VoltageSource));
mbed_official 610:813dcc80987e 175 assert_param(IS_LCD_PULSE_ON_DURATION(hlcd->Init.PulseOnDuration));
mbed_official 610:813dcc80987e 176 assert_param(IS_LCD_HIGH_DRIVE(hlcd->Init.HighDrive));
mbed_official 610:813dcc80987e 177 assert_param(IS_LCD_DEAD_TIME(hlcd->Init.DeadTime));
mbed_official 610:813dcc80987e 178 assert_param(IS_LCD_CONTRAST(hlcd->Init.Contrast));
mbed_official 610:813dcc80987e 179 assert_param(IS_LCD_BLINK_FREQUENCY(hlcd->Init.BlinkFrequency));
mbed_official 610:813dcc80987e 180 assert_param(IS_LCD_BLINK_MODE(hlcd->Init.BlinkMode));
mbed_official 610:813dcc80987e 181 assert_param(IS_LCD_MUX_SEGMENT(hlcd->Init.MuxSegment));
mbed_official 610:813dcc80987e 182
mbed_official 610:813dcc80987e 183 if(hlcd->State == HAL_LCD_STATE_RESET)
mbed_official 610:813dcc80987e 184 {
mbed_official 610:813dcc80987e 185 /* Allocate lock resource and initialize it */
mbed_official 610:813dcc80987e 186 hlcd->Lock = HAL_UNLOCKED;
mbed_official 610:813dcc80987e 187
mbed_official 610:813dcc80987e 188 /* Initialize the low level hardware (MSP) */
mbed_official 610:813dcc80987e 189 HAL_LCD_MspInit(hlcd);
mbed_official 610:813dcc80987e 190 }
mbed_official 610:813dcc80987e 191
mbed_official 610:813dcc80987e 192 hlcd->State = HAL_LCD_STATE_BUSY;
mbed_official 610:813dcc80987e 193
mbed_official 610:813dcc80987e 194 /* Disable the peripheral */
mbed_official 610:813dcc80987e 195 __HAL_LCD_DISABLE(hlcd);
mbed_official 610:813dcc80987e 196
mbed_official 610:813dcc80987e 197 /* Clear the LCD_RAM registers and enable the display request by setting the UDR bit
mbed_official 610:813dcc80987e 198 in the LCD_SR register */
mbed_official 610:813dcc80987e 199 for(counter = LCD_RAM_REGISTER0; counter <= LCD_RAM_REGISTER15; counter++)
mbed_official 610:813dcc80987e 200 {
mbed_official 610:813dcc80987e 201 hlcd->Instance->RAM[counter] = 0;
mbed_official 610:813dcc80987e 202 }
mbed_official 610:813dcc80987e 203 /* Enable the display request */
mbed_official 610:813dcc80987e 204 hlcd->Instance->SR |= LCD_SR_UDR;
mbed_official 610:813dcc80987e 205
mbed_official 610:813dcc80987e 206 /* Configure the LCD Prescaler, Divider, Blink mode and Blink Frequency:
mbed_official 610:813dcc80987e 207 Set PS[3:0] bits according to hlcd->Init.Prescaler value
mbed_official 610:813dcc80987e 208 Set DIV[3:0] bits according to hlcd->Init.Divider value
mbed_official 610:813dcc80987e 209 Set BLINK[1:0] bits according to hlcd->Init.BlinkMode value
mbed_official 610:813dcc80987e 210 Set BLINKF[2:0] bits according to hlcd->Init.BlinkFrequency value
mbed_official 610:813dcc80987e 211 Set DEAD[2:0] bits according to hlcd->Init.DeadTime value
mbed_official 610:813dcc80987e 212 Set PON[2:0] bits according to hlcd->Init.PulseOnDuration value
mbed_official 610:813dcc80987e 213 Set CC[2:0] bits according to hlcd->Init.Contrast value
mbed_official 610:813dcc80987e 214 Set HD bit according to hlcd->Init.HighDrive value */
mbed_official 610:813dcc80987e 215 MODIFY_REG(hlcd->Instance->FCR, \
mbed_official 610:813dcc80987e 216 (LCD_FCR_PS | LCD_FCR_DIV | LCD_FCR_BLINK| LCD_FCR_BLINKF | \
mbed_official 610:813dcc80987e 217 LCD_FCR_DEAD | LCD_FCR_PON | LCD_FCR_CC | LCD_FCR_HD), \
mbed_official 610:813dcc80987e 218 (hlcd->Init.Prescaler | hlcd->Init.Divider | hlcd->Init.BlinkMode | hlcd->Init.BlinkFrequency | \
mbed_official 610:813dcc80987e 219 hlcd->Init.DeadTime | hlcd->Init.PulseOnDuration | hlcd->Init.Contrast | hlcd->Init.HighDrive));
mbed_official 610:813dcc80987e 220
mbed_official 610:813dcc80987e 221 /* Wait until LCD Frame Control Register Synchronization flag (FCRSF) is set in the LCD_SR register
mbed_official 610:813dcc80987e 222 This bit is set by hardware each time the LCD_FCR register is updated in the LCDCLK
mbed_official 610:813dcc80987e 223 domain. It is cleared by hardware when writing to the LCD_FCR register.*/
mbed_official 610:813dcc80987e 224 LCD_WaitForSynchro(hlcd);
mbed_official 610:813dcc80987e 225
mbed_official 610:813dcc80987e 226 /* Configure the LCD Duty, Bias, Voltage Source, Dead Time, Pulse On Duration and Contrast:
mbed_official 610:813dcc80987e 227 Set DUTY[2:0] bits according to hlcd->Init.Duty value
mbed_official 610:813dcc80987e 228 Set BIAS[1:0] bits according to hlcd->Init.Bias value
mbed_official 610:813dcc80987e 229 Set VSEL bit according to hlcd->Init.VoltageSource value
mbed_official 610:813dcc80987e 230 Set MUX_SEG bit according to hlcd->Init.MuxSegment value */
mbed_official 610:813dcc80987e 231 MODIFY_REG(hlcd->Instance->CR, \
mbed_official 610:813dcc80987e 232 (LCD_CR_DUTY | LCD_CR_BIAS | LCD_CR_VSEL | LCD_CR_MUX_SEG), \
mbed_official 610:813dcc80987e 233 (hlcd->Init.Duty | hlcd->Init.Bias | hlcd->Init.VoltageSource | hlcd->Init.MuxSegment));
mbed_official 610:813dcc80987e 234
mbed_official 610:813dcc80987e 235 /* Enable the peripheral */
mbed_official 610:813dcc80987e 236 __HAL_LCD_ENABLE(hlcd);
mbed_official 610:813dcc80987e 237
mbed_official 610:813dcc80987e 238 /* Get timeout */
mbed_official 610:813dcc80987e 239 tickstart = HAL_GetTick();
mbed_official 610:813dcc80987e 240
mbed_official 610:813dcc80987e 241 /* Wait Until the LCD is enabled */
mbed_official 610:813dcc80987e 242 while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_ENS) == RESET)
mbed_official 610:813dcc80987e 243 {
mbed_official 610:813dcc80987e 244 if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE)
mbed_official 610:813dcc80987e 245 {
mbed_official 610:813dcc80987e 246 hlcd->ErrorCode = HAL_LCD_ERROR_ENS;
mbed_official 610:813dcc80987e 247 return HAL_TIMEOUT;
mbed_official 610:813dcc80987e 248 }
mbed_official 610:813dcc80987e 249 }
mbed_official 610:813dcc80987e 250
mbed_official 610:813dcc80987e 251 /* Get timeout */
mbed_official 610:813dcc80987e 252 tickstart = HAL_GetTick();
mbed_official 610:813dcc80987e 253
mbed_official 610:813dcc80987e 254 /*!< Wait Until the LCD Booster is ready */
mbed_official 610:813dcc80987e 255 while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_RDY) == RESET)
mbed_official 610:813dcc80987e 256 {
mbed_official 610:813dcc80987e 257 if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE)
mbed_official 610:813dcc80987e 258 {
mbed_official 610:813dcc80987e 259 hlcd->ErrorCode = HAL_LCD_ERROR_RDY;
mbed_official 610:813dcc80987e 260 return HAL_TIMEOUT;
mbed_official 610:813dcc80987e 261 }
mbed_official 610:813dcc80987e 262 }
mbed_official 610:813dcc80987e 263
mbed_official 610:813dcc80987e 264 /* Initialize the LCD state */
mbed_official 610:813dcc80987e 265 hlcd->ErrorCode = HAL_LCD_ERROR_NONE;
mbed_official 610:813dcc80987e 266 hlcd->State= HAL_LCD_STATE_READY;
mbed_official 610:813dcc80987e 267
mbed_official 610:813dcc80987e 268 return HAL_OK;
mbed_official 610:813dcc80987e 269 }
mbed_official 610:813dcc80987e 270
mbed_official 610:813dcc80987e 271 /**
mbed_official 610:813dcc80987e 272 * @brief DeInitialize the LCD peripheral.
mbed_official 610:813dcc80987e 273 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 274 * @retval HAL status
mbed_official 610:813dcc80987e 275 */
mbed_official 610:813dcc80987e 276 HAL_StatusTypeDef HAL_LCD_DeInit(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 277 {
mbed_official 610:813dcc80987e 278 /* Check the LCD handle allocation */
mbed_official 610:813dcc80987e 279 if(hlcd == NULL)
mbed_official 610:813dcc80987e 280 {
mbed_official 610:813dcc80987e 281 return HAL_ERROR;
mbed_official 610:813dcc80987e 282 }
mbed_official 610:813dcc80987e 283
mbed_official 610:813dcc80987e 284 /* Check the parameters */
mbed_official 610:813dcc80987e 285 assert_param(IS_LCD_ALL_INSTANCE(hlcd->Instance));
mbed_official 610:813dcc80987e 286
mbed_official 610:813dcc80987e 287 hlcd->State = HAL_LCD_STATE_BUSY;
mbed_official 610:813dcc80987e 288
mbed_official 610:813dcc80987e 289 /* DeInit the low level hardware */
mbed_official 610:813dcc80987e 290 HAL_LCD_MspDeInit(hlcd);
mbed_official 610:813dcc80987e 291
mbed_official 610:813dcc80987e 292 hlcd->ErrorCode = HAL_LCD_ERROR_NONE;
mbed_official 610:813dcc80987e 293 hlcd->State = HAL_LCD_STATE_RESET;
mbed_official 610:813dcc80987e 294
mbed_official 610:813dcc80987e 295 /* Release Lock */
mbed_official 610:813dcc80987e 296 __HAL_UNLOCK(hlcd);
mbed_official 610:813dcc80987e 297
mbed_official 610:813dcc80987e 298 return HAL_OK;
mbed_official 610:813dcc80987e 299 }
mbed_official 610:813dcc80987e 300
mbed_official 610:813dcc80987e 301 /**
mbed_official 610:813dcc80987e 302 * @brief DeInitialize the LCD MSP.
mbed_official 610:813dcc80987e 303 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 304 * @retval None
mbed_official 610:813dcc80987e 305 */
mbed_official 610:813dcc80987e 306 __weak void HAL_LCD_MspDeInit(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 307 {
mbed_official 610:813dcc80987e 308 /* NOTE: This function should not be modified, when the callback is needed,
mbed_official 610:813dcc80987e 309 the HAL_LCD_MspDeInit it to be implemented in the user file
mbed_official 610:813dcc80987e 310 */
mbed_official 610:813dcc80987e 311 }
mbed_official 610:813dcc80987e 312
mbed_official 610:813dcc80987e 313 /**
mbed_official 610:813dcc80987e 314 * @brief Initialize the LCD MSP.
mbed_official 610:813dcc80987e 315 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 316 * @retval None
mbed_official 610:813dcc80987e 317 */
mbed_official 610:813dcc80987e 318 __weak void HAL_LCD_MspInit(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 319 {
mbed_official 610:813dcc80987e 320 /* NOTE: This function should not be modified, when the callback is needed,
mbed_official 610:813dcc80987e 321 the HAL_LCD_MspInit is to be implemented in the user file
mbed_official 610:813dcc80987e 322 */
mbed_official 610:813dcc80987e 323 }
mbed_official 610:813dcc80987e 324
mbed_official 610:813dcc80987e 325 /**
mbed_official 610:813dcc80987e 326 * @}
mbed_official 610:813dcc80987e 327 */
mbed_official 610:813dcc80987e 328
mbed_official 610:813dcc80987e 329 /** @defgroup LCD_Exported_Functions_Group2 IO operation methods
mbed_official 610:813dcc80987e 330 * @brief LCD RAM functions
mbed_official 610:813dcc80987e 331 *
mbed_official 610:813dcc80987e 332 @verbatim
mbed_official 610:813dcc80987e 333 ===============================================================================
mbed_official 610:813dcc80987e 334 ##### IO operation functions #####
mbed_official 610:813dcc80987e 335 ===============================================================================
mbed_official 610:813dcc80987e 336 [..] Using its double buffer memory the LCD controller ensures the coherency of the
mbed_official 610:813dcc80987e 337 displayed information without having to use interrupts to control LCD_RAM
mbed_official 610:813dcc80987e 338 modification.
mbed_official 610:813dcc80987e 339 The application software can access the first buffer level (LCD_RAM) through
mbed_official 610:813dcc80987e 340 the APB interface. Once it has modified the LCD_RAM using the HAL_LCD_Write() API,
mbed_official 610:813dcc80987e 341 it sets the UDR flag in the LCD_SR register using the HAL_LCD_UpdateDisplayRequest() API.
mbed_official 610:813dcc80987e 342 This UDR flag (update display request) requests the updated information to be
mbed_official 610:813dcc80987e 343 moved into the second buffer level (LCD_DISPLAY).
mbed_official 610:813dcc80987e 344 This operation is done synchronously with the frame (at the beginning of the
mbed_official 610:813dcc80987e 345 next frame), until the update is completed, the LCD_RAM is write protected and
mbed_official 610:813dcc80987e 346 the UDR flag stays high.
mbed_official 610:813dcc80987e 347 Once the update is completed another flag (UDD - Update Display Done) is set and
mbed_official 610:813dcc80987e 348 generates an interrupt if the UDDIE bit in the LCD_FCR register is set.
mbed_official 610:813dcc80987e 349 The time it takes to update LCD_DISPLAY is, in the worst case, one odd and one
mbed_official 610:813dcc80987e 350 even frame.
mbed_official 610:813dcc80987e 351 The update will not occur (UDR = 1 and UDD = 0) until the display is
mbed_official 610:813dcc80987e 352 enabled (LCDEN = 1).
mbed_official 610:813dcc80987e 353
mbed_official 610:813dcc80987e 354 @endverbatim
mbed_official 610:813dcc80987e 355 * @{
mbed_official 610:813dcc80987e 356 */
mbed_official 610:813dcc80987e 357
mbed_official 610:813dcc80987e 358 /**
mbed_official 610:813dcc80987e 359 * @brief Write a word in the specific LCD RAM.
mbed_official 610:813dcc80987e 360 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 361 * @param RAMRegisterIndex: specifies the LCD RAM Register.
mbed_official 610:813dcc80987e 362 * This parameter can be one of the following values:
mbed_official 610:813dcc80987e 363 * @arg LCD_RAM_REGISTER0: LCD RAM Register 0
mbed_official 610:813dcc80987e 364 * @arg LCD_RAM_REGISTER1: LCD RAM Register 1
mbed_official 610:813dcc80987e 365 * @arg LCD_RAM_REGISTER2: LCD RAM Register 2
mbed_official 610:813dcc80987e 366 * @arg LCD_RAM_REGISTER3: LCD RAM Register 3
mbed_official 610:813dcc80987e 367 * @arg LCD_RAM_REGISTER4: LCD RAM Register 4
mbed_official 610:813dcc80987e 368 * @arg LCD_RAM_REGISTER5: LCD RAM Register 5
mbed_official 610:813dcc80987e 369 * @arg LCD_RAM_REGISTER6: LCD RAM Register 6
mbed_official 610:813dcc80987e 370 * @arg LCD_RAM_REGISTER7: LCD RAM Register 7
mbed_official 610:813dcc80987e 371 * @arg LCD_RAM_REGISTER8: LCD RAM Register 8
mbed_official 610:813dcc80987e 372 * @arg LCD_RAM_REGISTER9: LCD RAM Register 9
mbed_official 610:813dcc80987e 373 * @arg LCD_RAM_REGISTER10: LCD RAM Register 10
mbed_official 610:813dcc80987e 374 * @arg LCD_RAM_REGISTER11: LCD RAM Register 11
mbed_official 610:813dcc80987e 375 * @arg LCD_RAM_REGISTER12: LCD RAM Register 12
mbed_official 610:813dcc80987e 376 * @arg LCD_RAM_REGISTER13: LCD RAM Register 13
mbed_official 610:813dcc80987e 377 * @arg LCD_RAM_REGISTER14: LCD RAM Register 14
mbed_official 610:813dcc80987e 378 * @arg LCD_RAM_REGISTER15: LCD RAM Register 15
mbed_official 610:813dcc80987e 379 * @param RAMRegisterMask: specifies the LCD RAM Register Data Mask.
mbed_official 610:813dcc80987e 380 * @param Data: specifies LCD Data Value to be written.
mbed_official 610:813dcc80987e 381 * @retval None
mbed_official 610:813dcc80987e 382 */
mbed_official 610:813dcc80987e 383 HAL_StatusTypeDef HAL_LCD_Write(LCD_HandleTypeDef *hlcd, uint32_t RAMRegisterIndex, uint32_t RAMRegisterMask, uint32_t Data)
mbed_official 610:813dcc80987e 384 {
mbed_official 610:813dcc80987e 385 uint32_t tickstart = 0x00;
mbed_official 610:813dcc80987e 386
mbed_official 610:813dcc80987e 387 if((hlcd->State == HAL_LCD_STATE_READY) || (hlcd->State == HAL_LCD_STATE_BUSY))
mbed_official 610:813dcc80987e 388 {
mbed_official 610:813dcc80987e 389 /* Check the parameters */
mbed_official 610:813dcc80987e 390 assert_param(IS_LCD_RAM_REGISTER(RAMRegisterIndex));
mbed_official 610:813dcc80987e 391
mbed_official 610:813dcc80987e 392 if(hlcd->State == HAL_LCD_STATE_READY)
mbed_official 610:813dcc80987e 393 {
mbed_official 610:813dcc80987e 394 /* Process Locked */
mbed_official 610:813dcc80987e 395 __HAL_LOCK(hlcd);
mbed_official 610:813dcc80987e 396 hlcd->State = HAL_LCD_STATE_BUSY;
mbed_official 610:813dcc80987e 397
mbed_official 610:813dcc80987e 398 /* Get timeout */
mbed_official 610:813dcc80987e 399 tickstart = HAL_GetTick();
mbed_official 610:813dcc80987e 400
mbed_official 610:813dcc80987e 401 /*!< Wait Until the LCD is ready */
mbed_official 610:813dcc80987e 402 while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_UDR) != RESET)
mbed_official 610:813dcc80987e 403 {
mbed_official 610:813dcc80987e 404 if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE)
mbed_official 610:813dcc80987e 405 {
mbed_official 610:813dcc80987e 406 hlcd->ErrorCode = HAL_LCD_ERROR_UDR;
mbed_official 610:813dcc80987e 407
mbed_official 610:813dcc80987e 408 /* Process Unlocked */
mbed_official 610:813dcc80987e 409 __HAL_UNLOCK(hlcd);
mbed_official 610:813dcc80987e 410
mbed_official 610:813dcc80987e 411 return HAL_TIMEOUT;
mbed_official 610:813dcc80987e 412 }
mbed_official 610:813dcc80987e 413 }
mbed_official 610:813dcc80987e 414 }
mbed_official 610:813dcc80987e 415
mbed_official 610:813dcc80987e 416 /* Copy the new Data bytes to LCD RAM register */
mbed_official 610:813dcc80987e 417 MODIFY_REG(hlcd->Instance->RAM[RAMRegisterIndex], ~(RAMRegisterMask), Data);
mbed_official 610:813dcc80987e 418
mbed_official 610:813dcc80987e 419 return HAL_OK;
mbed_official 610:813dcc80987e 420 }
mbed_official 610:813dcc80987e 421 else
mbed_official 610:813dcc80987e 422 {
mbed_official 610:813dcc80987e 423 return HAL_ERROR;
mbed_official 610:813dcc80987e 424 }
mbed_official 610:813dcc80987e 425 }
mbed_official 610:813dcc80987e 426
mbed_official 610:813dcc80987e 427 /**
mbed_official 610:813dcc80987e 428 * @brief Clear the LCD RAM registers.
mbed_official 610:813dcc80987e 429 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 430 * @retval None
mbed_official 610:813dcc80987e 431 */
mbed_official 610:813dcc80987e 432 HAL_StatusTypeDef HAL_LCD_Clear(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 433 {
mbed_official 610:813dcc80987e 434 uint32_t tickstart = 0x00;
mbed_official 610:813dcc80987e 435 uint32_t counter = 0;
mbed_official 610:813dcc80987e 436
mbed_official 610:813dcc80987e 437 if((hlcd->State == HAL_LCD_STATE_READY) || (hlcd->State == HAL_LCD_STATE_BUSY))
mbed_official 610:813dcc80987e 438 {
mbed_official 610:813dcc80987e 439 /* Process Locked */
mbed_official 610:813dcc80987e 440 __HAL_LOCK(hlcd);
mbed_official 610:813dcc80987e 441
mbed_official 610:813dcc80987e 442 hlcd->State = HAL_LCD_STATE_BUSY;
mbed_official 610:813dcc80987e 443
mbed_official 610:813dcc80987e 444 /* Get timeout */
mbed_official 610:813dcc80987e 445 tickstart = HAL_GetTick();
mbed_official 610:813dcc80987e 446
mbed_official 610:813dcc80987e 447 /*!< Wait Until the LCD is ready */
mbed_official 610:813dcc80987e 448 while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_UDR) != RESET)
mbed_official 610:813dcc80987e 449 {
mbed_official 610:813dcc80987e 450 if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE)
mbed_official 610:813dcc80987e 451 {
mbed_official 610:813dcc80987e 452 hlcd->ErrorCode = HAL_LCD_ERROR_UDR;
mbed_official 610:813dcc80987e 453
mbed_official 610:813dcc80987e 454 /* Process Unlocked */
mbed_official 610:813dcc80987e 455 __HAL_UNLOCK(hlcd);
mbed_official 610:813dcc80987e 456
mbed_official 610:813dcc80987e 457 return HAL_TIMEOUT;
mbed_official 610:813dcc80987e 458 }
mbed_official 610:813dcc80987e 459 }
mbed_official 610:813dcc80987e 460 /* Clear the LCD_RAM registers */
mbed_official 610:813dcc80987e 461 for(counter = LCD_RAM_REGISTER0; counter <= LCD_RAM_REGISTER15; counter++)
mbed_official 610:813dcc80987e 462 {
mbed_official 610:813dcc80987e 463 hlcd->Instance->RAM[counter] = 0;
mbed_official 610:813dcc80987e 464 }
mbed_official 610:813dcc80987e 465
mbed_official 610:813dcc80987e 466 /* Update the LCD display */
mbed_official 610:813dcc80987e 467 HAL_LCD_UpdateDisplayRequest(hlcd);
mbed_official 610:813dcc80987e 468
mbed_official 610:813dcc80987e 469 return HAL_OK;
mbed_official 610:813dcc80987e 470 }
mbed_official 610:813dcc80987e 471 else
mbed_official 610:813dcc80987e 472 {
mbed_official 610:813dcc80987e 473 return HAL_ERROR;
mbed_official 610:813dcc80987e 474 }
mbed_official 610:813dcc80987e 475 }
mbed_official 610:813dcc80987e 476
mbed_official 610:813dcc80987e 477 /**
mbed_official 610:813dcc80987e 478 * @brief Enable the Update Display Request.
mbed_official 610:813dcc80987e 479 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 480 * @note Each time software modifies the LCD_RAM it must set the UDR bit to
mbed_official 610:813dcc80987e 481 * transfer the updated data to the second level buffer.
mbed_official 610:813dcc80987e 482 * The UDR bit stays set until the end of the update and during this
mbed_official 610:813dcc80987e 483 * time the LCD_RAM is write protected.
mbed_official 610:813dcc80987e 484 * @note When the display is disabled, the update is performed for all
mbed_official 610:813dcc80987e 485 * LCD_DISPLAY locations.
mbed_official 610:813dcc80987e 486 * When the display is enabled, the update is performed only for locations
mbed_official 610:813dcc80987e 487 * for which commons are active (depending on DUTY). For example if
mbed_official 610:813dcc80987e 488 * DUTY = 1/2, only the LCD_DISPLAY of COM0 and COM1 will be updated.
mbed_official 610:813dcc80987e 489 * @retval None
mbed_official 610:813dcc80987e 490 */
mbed_official 610:813dcc80987e 491 HAL_StatusTypeDef HAL_LCD_UpdateDisplayRequest(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 492 {
mbed_official 610:813dcc80987e 493 uint32_t tickstart = 0x00;
mbed_official 610:813dcc80987e 494
mbed_official 610:813dcc80987e 495 /* Clear the Update Display Done flag before starting the update display request */
mbed_official 610:813dcc80987e 496 __HAL_LCD_CLEAR_FLAG(hlcd, LCD_FLAG_UDD);
mbed_official 610:813dcc80987e 497
mbed_official 610:813dcc80987e 498 /* Enable the display request */
mbed_official 610:813dcc80987e 499 hlcd->Instance->SR |= LCD_SR_UDR;
mbed_official 610:813dcc80987e 500
mbed_official 610:813dcc80987e 501 /* Get timeout */
mbed_official 610:813dcc80987e 502 tickstart = HAL_GetTick();
mbed_official 610:813dcc80987e 503
mbed_official 610:813dcc80987e 504 /*!< Wait Until the LCD display is done */
mbed_official 610:813dcc80987e 505 while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_UDD) == RESET)
mbed_official 610:813dcc80987e 506 {
mbed_official 610:813dcc80987e 507 if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE)
mbed_official 610:813dcc80987e 508 {
mbed_official 610:813dcc80987e 509 hlcd->ErrorCode = HAL_LCD_ERROR_UDD;
mbed_official 610:813dcc80987e 510
mbed_official 610:813dcc80987e 511 /* Process Unlocked */
mbed_official 610:813dcc80987e 512 __HAL_UNLOCK(hlcd);
mbed_official 610:813dcc80987e 513
mbed_official 610:813dcc80987e 514 return HAL_TIMEOUT;
mbed_official 610:813dcc80987e 515 }
mbed_official 610:813dcc80987e 516 }
mbed_official 610:813dcc80987e 517
mbed_official 610:813dcc80987e 518 hlcd->State = HAL_LCD_STATE_READY;
mbed_official 610:813dcc80987e 519
mbed_official 610:813dcc80987e 520 /* Process Unlocked */
mbed_official 610:813dcc80987e 521 __HAL_UNLOCK(hlcd);
mbed_official 610:813dcc80987e 522
mbed_official 610:813dcc80987e 523 return HAL_OK;
mbed_official 610:813dcc80987e 524 }
mbed_official 610:813dcc80987e 525
mbed_official 610:813dcc80987e 526 /**
mbed_official 610:813dcc80987e 527 * @}
mbed_official 610:813dcc80987e 528 */
mbed_official 610:813dcc80987e 529
mbed_official 610:813dcc80987e 530 /** @defgroup LCD_Exported_Functions_Group3 Peripheral State methods
mbed_official 610:813dcc80987e 531 * @brief LCD State functions
mbed_official 610:813dcc80987e 532 *
mbed_official 610:813dcc80987e 533 @verbatim
mbed_official 610:813dcc80987e 534 ===============================================================================
mbed_official 610:813dcc80987e 535 ##### Peripheral State functions #####
mbed_official 610:813dcc80987e 536 ===============================================================================
mbed_official 610:813dcc80987e 537 [..]
mbed_official 610:813dcc80987e 538 This subsection provides a set of functions allowing to control the LCD:
mbed_official 610:813dcc80987e 539 (+) HAL_LCD_GetState() API can be helpful to check in run-time the state of the LCD peripheral State.
mbed_official 610:813dcc80987e 540 (+) HAL_LCD_GetError() API to return the LCD error code.
mbed_official 610:813dcc80987e 541 @endverbatim
mbed_official 610:813dcc80987e 542 * @{
mbed_official 610:813dcc80987e 543 */
mbed_official 610:813dcc80987e 544
mbed_official 610:813dcc80987e 545 /**
mbed_official 610:813dcc80987e 546 * @brief Return the LCD handle state.
mbed_official 610:813dcc80987e 547 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 548 * @retval HAL state
mbed_official 610:813dcc80987e 549 */
mbed_official 610:813dcc80987e 550 HAL_LCD_StateTypeDef HAL_LCD_GetState(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 551 {
mbed_official 610:813dcc80987e 552 /* Return LCD handle state */
mbed_official 610:813dcc80987e 553 return hlcd->State;
mbed_official 610:813dcc80987e 554 }
mbed_official 610:813dcc80987e 555
mbed_official 610:813dcc80987e 556 /**
mbed_official 610:813dcc80987e 557 * @brief Return the LCD error code.
mbed_official 610:813dcc80987e 558 * @param hlcd: LCD handle
mbed_official 610:813dcc80987e 559 * @retval LCD Error Code
mbed_official 610:813dcc80987e 560 */
mbed_official 610:813dcc80987e 561 uint32_t HAL_LCD_GetError(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 562 {
mbed_official 610:813dcc80987e 563 return hlcd->ErrorCode;
mbed_official 610:813dcc80987e 564 }
mbed_official 610:813dcc80987e 565
mbed_official 610:813dcc80987e 566 /**
mbed_official 610:813dcc80987e 567 * @}
mbed_official 610:813dcc80987e 568 */
mbed_official 610:813dcc80987e 569
mbed_official 610:813dcc80987e 570 /**
mbed_official 610:813dcc80987e 571 * @}
mbed_official 610:813dcc80987e 572 */
mbed_official 610:813dcc80987e 573
mbed_official 610:813dcc80987e 574 /** @defgroup LCD_Private_Functions LCD Private Functions
mbed_official 610:813dcc80987e 575 * @{
mbed_official 610:813dcc80987e 576 */
mbed_official 610:813dcc80987e 577
mbed_official 610:813dcc80987e 578 /**
mbed_official 610:813dcc80987e 579 * @brief Wait until the LCD FCR register is synchronized in the LCDCLK domain.
mbed_official 610:813dcc80987e 580 * This function must be called after any write operation to LCD_FCR register.
mbed_official 610:813dcc80987e 581 * @retval None
mbed_official 610:813dcc80987e 582 */
mbed_official 610:813dcc80987e 583 HAL_StatusTypeDef LCD_WaitForSynchro(LCD_HandleTypeDef *hlcd)
mbed_official 610:813dcc80987e 584 {
mbed_official 610:813dcc80987e 585 uint32_t tickstart = 0x00;
mbed_official 610:813dcc80987e 586
mbed_official 610:813dcc80987e 587 /* Get timeout */
mbed_official 610:813dcc80987e 588 tickstart = HAL_GetTick();
mbed_official 610:813dcc80987e 589
mbed_official 610:813dcc80987e 590 /* Loop until FCRSF flag is set */
mbed_official 610:813dcc80987e 591 while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_FCRSF) == RESET)
mbed_official 610:813dcc80987e 592 {
mbed_official 610:813dcc80987e 593 if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE)
mbed_official 610:813dcc80987e 594 {
mbed_official 610:813dcc80987e 595 hlcd->ErrorCode = HAL_LCD_ERROR_FCRSF;
mbed_official 610:813dcc80987e 596 return HAL_TIMEOUT;
mbed_official 610:813dcc80987e 597 }
mbed_official 610:813dcc80987e 598 }
mbed_official 610:813dcc80987e 599
mbed_official 610:813dcc80987e 600 return HAL_OK;
mbed_official 610:813dcc80987e 601 }
mbed_official 610:813dcc80987e 602
mbed_official 610:813dcc80987e 603 /**
mbed_official 610:813dcc80987e 604 * @}
mbed_official 610:813dcc80987e 605 */
mbed_official 610:813dcc80987e 606
mbed_official 610:813dcc80987e 607 /**
mbed_official 610:813dcc80987e 608 * @}
mbed_official 610:813dcc80987e 609 */
mbed_official 610:813dcc80987e 610
mbed_official 610:813dcc80987e 611 #endif /* STM32L476xx || STM32L486xx */
mbed_official 610:813dcc80987e 612
mbed_official 610:813dcc80987e 613 #endif /* HAL_LCD_MODULE_ENABLED */
mbed_official 610:813dcc80987e 614
mbed_official 610:813dcc80987e 615 /**
mbed_official 610:813dcc80987e 616 * @}
mbed_official 610:813dcc80987e 617 */
mbed_official 610:813dcc80987e 618
mbed_official 610:813dcc80987e 619 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 610:813dcc80987e 620