BSP Drivers

Dependencies:   CMSIS_STM32L4xx CMSIS_DSP_401 STM32L4xx_HAL_Driver

Dependents:   DiscoAudioRecord

Revision:
4:a1219ef3537f
Parent:
2:a9f205b30d61
--- a/Disco/stm32l476g_discovery_glass_lcd.c	Thu Nov 12 20:53:23 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,989 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    stm32l476g_discovery_glass_lcd.c
-  * @author  MCD Application Team
-  * @version V1.0.1
-  * @date    16-September-2015
-  * @brief   This file provides a set of functions needed to manage the 
-  *          LCD Glass driver for the STM32L476G-Discovery board.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
-  *
-  * Redistribution and use in source and binary forms, with or without modification,
-  * are permitted provided that the following conditions are met:
-  *   1. Redistributions of source code must retain the above copyright notice,
-  *      this list of conditions and the following disclaimer.
-  *   2. Redistributions in binary form must reproduce the above copyright notice,
-  *      this list of conditions and the following disclaimer in the documentation
-  *      and/or other materials provided with the distribution.
-  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-  *      may be used to endorse or promote products derived from this software
-  *      without specific prior written permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32l476g_discovery_glass_lcd.h"
-
-
-/** @addtogroup BSP
-  * @{
-  */
-
-/** @addtogroup STM32L476G_DISCOVERY
-  * @{
-  */
-
-/** @defgroup STM32L476G_DISCOVERY_GLASS_LCD STM32L476G-DISCOVERY GLASS LCD
-  * @brief This file includes the LCD Glass driver for LCD Module of 
-  *        STM32L476G-DISCOVERY board.
-  * @{
-  */
-
-/* Private constants ---------------------------------------------------------*/
-
-/** @defgroup STM32L476G_DISCOVERY_GLASS_LCD_Private_Constants Private Constants
-  * @{
-  */
-#define ASCII_CHAR_0                  0x30  /* 0 */
-#define ASCII_CHAR_AT_SYMBOL          0x40  /* @ */
-#define ASCII_CHAR_LEFT_OPEN_BRACKET  0x5B  /* [ */
-#define ASCII_CHAR_APOSTROPHE         0x60  /* ` */
-#define ASCII_CHAR_LEFT_OPEN_BRACE    0x7B  /* ( */
-/**
-  * @}
-  */
-
-/* Private variables ---------------------------------------------------------*/
-
-/** @defgroup STM32L476G_DISCOVERY_GLASS_LCD_Private_Variables Private Variables
-  * @{
-  */
-
-/* this variable can be used for accelerate the scrolling exit when push user button */
-__IO uint8_t bLCDGlass_KeyPressed = 0; 
-
-/**
-  @verbatim
-================================================================================
-                              GLASS LCD MAPPING
-================================================================================
-LCD allows to display informations on six 14-segment digits and 4 bars:
-
-  1       2       3       4       5       6
------   -----   -----   -----   -----   -----   
-|\|/| o |\|/| o |\|/| o |\|/| o |\|/|   |\|/|   BAR3
--- --   -- --   -- --   -- --   -- --   -- --   BAR2
-|/|\| o |/|\| o |/|\| o |/|\| o |/|\|   |/|\|   BAR1
------ * ----- * ----- * ----- * -----   -----   BAR0
-
-LCD segment mapping:
---------------------
-  -----A-----        _ 
-  |\   |   /|   COL |_|
-  F H  J  K B          
-  |  \ | /  |        _ 
-  --G-- --M--   COL |_|
-  |  / | \  |          
-  E Q  P  N C          
-  |/   |   \|        _ 
-  -----D-----   DP  |_|
-
- An LCD character coding is based on the following matrix:
-COM           0   1   2     3
-SEG(n)      { E , D , P ,   N   }
-SEG(n+1)    { M , C , COL , DP  }
-SEG(23-n-1) { B , A , K ,   J   }
-SEG(23-n)   { G , F , Q ,   H   }
-with n positive odd number.
-
- The character 'A' for example is:
-  -------------------------------
-LSB   { 1 , 0 , 0 , 0   }
-      { 1 , 1 , 0 , 0   }
-      { 1 , 1 , 0 , 0   }
-MSB   { 1 , 1 , 0 , 0   }
-      -------------------
-  'A' =  F    E   0   0 hexa
-
-  @endverbatim
-*/
-
-LCD_HandleTypeDef LCDHandle;
-
-/* Constant table for cap characters 'A' --> 'Z' */
-const uint16_t CapLetterMap[26]=
-    {
-        /* A      B      C      D      E      F      G      H      I  */
-        0xFE00, 0x6714, 0x1D00, 0x4714, 0x9D00, 0x9C00, 0x3F00, 0xFA00, 0x0014,
-        /* J      K      L      M      N      O      P      Q      R  */
-        0x5300, 0x9841, 0x1900, 0x5A48, 0x5A09, 0x5F00, 0xFC00, 0x5F01, 0xFC01,
-        /* S      T      U      V      W      X      Y      Z  */
-        0xAF00, 0x0414, 0x5b00, 0x18C0, 0x5A81, 0x00C9, 0x0058, 0x05C0
-    };
-
-/* Constant table for number '0' --> '9' */
-const uint16_t NumberMap[10]=
-    {
-        /* 0      1      2      3      4      5      6      7      8      9  */
-        0x5F00,0x4200,0xF500,0x6700,0xEa00,0xAF00,0xBF00,0x04600,0xFF00,0xEF00
-    };
-
-uint32_t Digit[4];     /* Digit frame buffer */
-
-/* LCD BAR status: To save the bar setting after writing in LCD RAM memory */
-uint8_t LCDBar = BATTERYLEVEL_FULL;
-
-/**
-  * @}
-  */
-
-/** @defgroup STM32L476G_DISCOVERY_LCD_Private_Functions Private Functions
-  * @{
-  */
-static void Convert(uint8_t* Char, Point_Typedef Point, DoublePoint_Typedef Colon);
-static void WriteChar(uint8_t* ch, Point_Typedef Point, DoublePoint_Typedef Colon, DigitPosition_Typedef Position);
-static void LCD_MspInit(LCD_HandleTypeDef *hlcd);
-static void LCD_MspDeInit(LCD_HandleTypeDef *hlcd);
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32L476G_DISCOVERY_LCD_Exported_Functions
-  * @{
-  */
-
-/**
-  * @brief  Initialize the LCD GLASS relative GPIO port IOs and LCD peripheral.
-  * @retval None
-  */
-void BSP_LCD_GLASS_Init(void)
-{
-  LCDHandle.Instance              = LCD;
-  LCDHandle.Init.Prescaler        = LCD_PRESCALER_1;
-  LCDHandle.Init.Divider          = LCD_DIVIDER_31;
-#if defined (USE_STM32L476G_DISCO_REVC) || defined (USE_STM32L476G_DISCO_REVB)
-  LCDHandle.Init.Duty             = LCD_DUTY_1_4;
-#elif defined (USE_STM32L476G_DISCO_REVA)
-  LCDHandle.Init.Duty             = LCD_DUTY_1_8;
-#endif
-  LCDHandle.Init.Bias             = LCD_BIAS_1_3;
-  LCDHandle.Init.VoltageSource    = LCD_VOLTAGESOURCE_INTERNAL;
-  LCDHandle.Init.Contrast         = LCD_CONTRASTLEVEL_5;
-  LCDHandle.Init.DeadTime         = LCD_DEADTIME_0;
-  LCDHandle.Init.PulseOnDuration  = LCD_PULSEONDURATION_4;
-  LCDHandle.Init.HighDrive        = LCD_HIGHDRIVE_DISABLE;
-  LCDHandle.Init.BlinkMode        = LCD_BLINKMODE_OFF;
-  LCDHandle.Init.BlinkFrequency   = LCD_BLINKFREQUENCY_DIV32;
-  LCDHandle.Init.MuxSegment       = LCD_MUXSEGMENT_DISABLE;
-  
-  /* Initialize the LCD */
-  LCD_MspInit(&LCDHandle);
-  HAL_LCD_Init(&LCDHandle);
-
-  BSP_LCD_GLASS_Clear();
-}
-
-/**
-  * @brief  DeInitialize the LCD GLASS relative GPIO port IOs and LCD peripheral.
-  * @retval None
-  */
-void BSP_LCD_GLASS_DeInit(void)
-{
-  /* De-Initialize the LCD */
-  LCD_MspDeInit(&LCDHandle);
-  HAL_LCD_DeInit(&LCDHandle);
-}
-
-
-/**
-  * @brief  Configure the LCD Blink mode and Blink frequency.
-  * @param  BlinkMode: specifies the LCD blink mode.
-  *   This parameter can be one of the following values:
-  *     @arg LCD_BLINKMODE_OFF:           Blink disabled
-  *     @arg LCD_BLINKMODE_SEG0_COM0:     Blink enabled on SEG[0], COM[0] (1 pixel)
-  *     @arg LCD_BLINKMODE_SEG0_ALLCOM:   Blink enabled on SEG[0], all COM (up to 8 
-  *                                       pixels according to the programmed duty)
-  *     @arg LCD_BLINKMODE_ALLSEG_ALLCOM: Blink enabled on all SEG and all COM 
-  *                                       (all pixels)
-  * @param  BlinkFrequency: specifies the LCD blink frequency.
-  *     @arg LCD_BLINKFREQUENCY_DIV8:    The Blink frequency = fLcd/8
-  *     @arg LCD_BLINKFREQUENCY_DIV16:   The Blink frequency = fLcd/16
-  *     @arg LCD_BLINKFREQUENCY_DIV32:   The Blink frequency = fLcd/32
-  *     @arg LCD_BLINKFREQUENCY_DIV64:   The Blink frequency = fLcd/64 
-  *     @arg LCD_BLINKFREQUENCY_DIV128:  The Blink frequency = fLcd/128
-  *     @arg LCD_BLINKFREQUENCY_DIV256:  The Blink frequency = fLcd/256
-  *     @arg LCD_BLINKFREQUENCY_DIV512:  The Blink frequency = fLcd/512
-  *     @arg LCD_BLINKFREQUENCY_DIV1024: The Blink frequency = fLcd/1024
-  * @retval None
-  */
-void BSP_LCD_GLASS_BlinkConfig(uint32_t BlinkMode, uint32_t BlinkFrequency)
-{
-  __HAL_LCD_BLINK_CONFIG(&LCDHandle, BlinkMode, BlinkFrequency);
-}
-
-/**
-  * @brief  Configure the LCD contrast.
-  * @param  Contrast: specifies the LCD contrast value.
-  *   This parameter can be one of the following values:
-  *     @arg LCD_CONTRASTLEVEL_0: Maximum Voltage = 2.60V
-  *     @arg LCD_CONTRASTLEVEL_1: Maximum Voltage = 2.73V
-  *     @arg LCD_CONTRASTLEVEL_2: Maximum Voltage = 2.86V
-  *     @arg LCD_CONTRASTLEVEL_3: Maximum Voltage = 2.99V
-  *     @arg LCD_CONTRASTLEVEL_4: Maximum Voltage = 3.12V
-  *     @arg LCD_CONTRASTLEVEL_5: Maximum Voltage = 3.25V
-  *     @arg LCD_CONTRASTLEVEL_6: Maximum Voltage = 3.38V
-  *     @arg LCD_CONTRASTLEVEL_7: Maximum Voltage = 3.51V
-  * @retval None
-  */
-void BSP_LCD_GLASS_Contrast(uint32_t Contrast)
-{
-  __HAL_LCD_CONTRAST_CONFIG(&LCDHandle, Contrast);
-}
-
-/**
-  * @brief Display one or several bar in LCD frame buffer.
-  * @param BarId: specifies the LCD GLASS Bar to display
-  *     This parameter can be one of the following values:
-  *     @arg BAR0: LCD GLASS Bar 0
-  *     @arg BAR0: LCD GLASS Bar 1
-  *     @arg BAR0: LCD GLASS Bar 2
-  *     @arg BAR0: LCD GLASS Bar 3
-  * @retval None
-  */
-void BSP_LCD_GLASS_DisplayBar(uint32_t BarId)
-{
-  uint32_t position = 0;
-
-  /* Check which bar is selected */
-  while ((BarId) >> position)
-  {
-    /* Check if current bar is selected */
-    switch(BarId & (1 << position))
-    {
-      /* Bar 0 */
-      case LCD_BAR_0:
-        /* Set BAR0 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG), LCD_BAR0_SEG);
-        break;
-        
-      /* Bar 1 */
-      case LCD_BAR_1:
-        /* Set BAR1 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG), LCD_BAR1_SEG);
-        break;
-        
-      /* Bar 2 */
-      case LCD_BAR_2:
-        /* Set BAR2 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR2_SEG), LCD_BAR2_SEG);
-        break;
-        
-      /* Bar 3 */
-      case LCD_BAR_3:
-        /* Set BAR3 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR3_SEG), LCD_BAR3_SEG);
-        break;
-        
-      default:
-        break;
-    }
-    position++;
-  }
-  
-  /* Update the LCD display */
-  HAL_LCD_UpdateDisplayRequest(&LCDHandle);
-}
-
-/**
-  * @brief Clear one or several bar in LCD frame buffer. 
-  * @param BarId: specifies the LCD GLASS Bar to display
-  *     This parameter can be combination of one of the following values:
-  *     @arg LCD_BAR_0: LCD GLASS Bar 0
-  *     @arg LCD_BAR_1: LCD GLASS Bar 1
-  *     @arg LCD_BAR_2: LCD GLASS Bar 2
-  *     @arg LCD_BAR_3: LCD GLASS Bar 3
-  * @retval None
-  */
-void BSP_LCD_GLASS_ClearBar(uint32_t BarId)
-{
-  uint32_t position = 0;
-
-  /* Check which bar is selected */
-  while ((BarId) >> position)
-  {
-    /* Check if current bar is selected */
-    switch(BarId & (1 << position))
-    {
-      /* Bar 0 */
-      case LCD_BAR_0:
-        /* Set BAR0 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG) , 0);
-        break;
-        
-      /* Bar 1 */
-      case LCD_BAR_1:
-        /* Set BAR1 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG), 0);
-        break;
-        
-      /* Bar 2 */
-      case LCD_BAR_2:
-        /* Set BAR2 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR2_SEG), 0);
-        break;
-        
-      /* Bar 3 */
-      case LCD_BAR_3:
-        /* Set BAR3 */
-        HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR3_SEG), 0);
-        break;
-        
-      default:
-        break;
-    }
-    position++;
-  }
-  
-  /* Update the LCD display */
-  HAL_LCD_UpdateDisplayRequest(&LCDHandle);
-}
-
-/**
-  * @brief Configure the bar level on LCD by writing bar value in LCD frame buffer.
-  * @param BarLevel: specifies the LCD GLASS Battery Level.
-  *     This parameter can be one of the following values:
-  *     @arg BATTERYLEVEL_OFF: LCD GLASS Battery Empty
-  *     @arg BATTERYLEVEL_1_4: LCD GLASS Battery 1/4 Full
-  *     @arg BATTERYLEVEL_1_2: LCD GLASS Battery 1/2 Full
-  *     @arg BATTERYLEVEL_3_4: LCD GLASS Battery 3/4 Full
-  *     @arg BATTERYLEVEL_FULL: LCD GLASS Battery Full
-  * @retval None
-  */
-void BSP_LCD_GLASS_BarLevelConfig(uint8_t BarLevel)
-{
-  switch (BarLevel)
-  {
-  /* BATTERYLEVEL_OFF */
-  case BATTERYLEVEL_OFF:
-    /* Set BAR0 & BAR2 off */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG | LCD_BAR2_SEG), 0);
-    /* Set BAR1 & BAR3 off */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG | LCD_BAR3_SEG), 0);
-    LCDBar = BATTERYLEVEL_OFF;
-    break;
-    
-  /* BARLEVEL 1/4 */
-  case BATTERYLEVEL_1_4:
-    /* Set BAR0 on & BAR2 off */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG | LCD_BAR2_SEG), LCD_BAR0_SEG);
-    /* Set BAR1 & BAR3 off */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG | LCD_BAR3_SEG), 0);
-    LCDBar = BATTERYLEVEL_1_4;
-    break;
-    
-  /* BARLEVEL 1/2 */
-  case BATTERYLEVEL_1_2:
-    /* Set BAR0 on & BAR2 off */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG | LCD_BAR2_SEG), LCD_BAR0_SEG);
-    /* Set BAR1 on & BAR3 off */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG | LCD_BAR3_SEG), LCD_BAR1_SEG);
-    LCDBar = BATTERYLEVEL_1_2;
-    break;
-    
-  /* Battery Level 3/4 */
-  case BATTERYLEVEL_3_4:
-    /* Set BAR0 & BAR2 on */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG | LCD_BAR2_SEG), (LCD_BAR0_SEG | LCD_BAR2_SEG));
-    /* Set BAR1 on & BAR3 off */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG | LCD_BAR3_SEG), LCD_BAR1_SEG);
-    LCDBar = BATTERYLEVEL_3_4;
-    break;
-    
-  /* BATTERYLEVEL_FULL */
-  case BATTERYLEVEL_FULL:
-    /* Set BAR0 & BAR2 on */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG | LCD_BAR2_SEG), (LCD_BAR0_SEG | LCD_BAR2_SEG));
-    /* Set BAR1 on & BAR3 on */
-    HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG | LCD_BAR3_SEG), (LCD_BAR1_SEG | LCD_BAR3_SEG));
-    LCDBar = BATTERYLEVEL_FULL;
-    break;
-    
-  default:
-    break;
-  }
-  
-  /* Update the LCD display */
-  HAL_LCD_UpdateDisplayRequest(&LCDHandle);
-}
-
-/**
-  * @brief  Write a character in the LCD RAM buffer.
-  * @param  ch: The character to display.
-  * @param  Point: A point to add in front of char.
-  *          This parameter can be one of the following values:  
-  *              @arg POINT_OFF: No point to add in front of char.
-  *              @arg POINT_ON: Add a point in front of char.
-  * @param  Colon: Flag indicating if a colon character has to be added in front 
-  *                     of displayed character.
-  *          This parameter can be one of the following values:
-  *              @arg DOUBLEPOINT_OFF: No colon to add in back of char.
-  *              @arg DOUBLEPOINT_ON: Add an colon in back of char.
-  * @param  Position: Position in the LCD of the character to write.
-  *                   This parameter can be any value in range [1:6].
-  * @retval None
-  * @note   Required preconditions: The LCD should be cleared before to start the
-  *         write operation.
-  */
-void BSP_LCD_GLASS_DisplayChar(uint8_t* ch, Point_Typedef Point, DoublePoint_Typedef Colon, DigitPosition_Typedef Position)
-{
-  WriteChar(ch, Point, Colon, Position);
-  
-  /* Update the LCD display */
-  HAL_LCD_UpdateDisplayRequest(&LCDHandle);
-}
-
-/**
-  * @brief  Write a character string in the LCD RAM buffer.
-  * @param  ptr: Pointer to string to display on the LCD Glass.
-  * @retval None
-  */
-void BSP_LCD_GLASS_DisplayString(uint8_t* ptr)
-{
-  DigitPosition_Typedef position = LCD_DIGIT_POSITION_1;
-
-  /* Send the string character by character on lCD */
-  while ((*ptr != 0) & (position <= LCD_DIGIT_POSITION_6))
-  {
-    /* Write one character on LCD */
-    WriteChar(ptr, POINT_OFF, DOUBLEPOINT_OFF, position);
-
-    /* Point on the next character */
-    ptr++;
-
-    /* Increment the character counter */
-    position++;
-  }
-  /* Update the LCD display */
-  HAL_LCD_UpdateDisplayRequest(&LCDHandle);
-}
-
-/**
-  * @brief  Write a character string with decimal point in the LCD RAM buffer.
-  * @param  ptr: Pointer to string to display on the LCD Glass.
-  * @retval None
-  * @note Required preconditions: Char is ASCCI value "ORed" with decimal point or Colon flag
-  */
-void BSP_LCD_GLASS_DisplayStrDeci(uint16_t* ptr)
-{
-  DigitPosition_Typedef index = LCD_DIGIT_POSITION_1;
-  uint8_t tmpchar = 0;
-  
-  /* Send the string character by character on lCD */
-  while((*ptr != 0) & (index <= LCD_DIGIT_POSITION_6))
-  {      
-    tmpchar = (*ptr) & 0x00FF;
-    
-    switch((*ptr) & 0xF000)
-    {
-    case DOT:
-      /* Write one character on LCD with decimal point */
-      WriteChar(&tmpchar, POINT_ON, DOUBLEPOINT_OFF, index);
-      break;
-    case DOUBLE_DOT:
-      /* Write one character on LCD with decimal point */
-      WriteChar(&tmpchar, POINT_OFF, DOUBLEPOINT_ON, index);
-      break;
-    default:
-      WriteChar(&tmpchar, POINT_OFF, DOUBLEPOINT_OFF, index);    
-      break;
-    }/* Point on the next character */
-    ptr++;
-    
-    /* Increment the character counter */
-    index++;
-  }
-  /* Update the LCD display */
-  HAL_LCD_UpdateDisplayRequest(&LCDHandle);
-}
-
-/**
-  * @brief  Clear the whole LCD RAM buffer.
-  * @retval None
-  */
-void BSP_LCD_GLASS_Clear(void)
-{
-  HAL_LCD_Clear(&LCDHandle); 
-}
-
-/**
-  * @brief  Display a string in scrolling mode
-  * @param  ptr: Pointer to string to display on the LCD Glass.
-  * @param  nScroll: Specifies how many time the message will be scrolled
-  * @param  ScrollSpeed : Specifies the speed of the scroll, low value gives
-  *         higher speed 
-  * @retval None
-  * @note   Required preconditions: The LCD should be cleared before to start the
-  *         write operation.
-  */
-void BSP_LCD_GLASS_ScrollSentence(uint8_t* ptr, uint16_t nScroll, uint16_t ScrollSpeed)
-{
-  uint8_t repetition = 0, nbrchar = 0, sizestr = 0;
-  uint8_t* ptr1;
-  uint8_t str[6] = "";
-
-  /* Reset interrupt variable in case key was press before entering function */
-  bLCDGlass_KeyPressed = 0;
-  
-  if(ptr == 0)
-  {
-    return;
-  }
-  
-  /* To calculate end of string */
-  for(ptr1 = ptr, sizestr = 0; *ptr1 != 0; sizestr++, ptr1++);
-  
-  ptr1 = ptr;
-  
-  BSP_LCD_GLASS_DisplayString(str);
-  HAL_Delay(ScrollSpeed);
-  
-  /* To shift the string for scrolling display*/
-  for (repetition = 0; repetition < nScroll; repetition++)
-  {
-    for(nbrchar = 0; nbrchar < sizestr; nbrchar++)
-    {
-      *(str) =* (ptr1+((nbrchar+1)%sizestr));
-      *(str+1) =* (ptr1+((nbrchar+2)%sizestr));
-      *(str+2) =* (ptr1+((nbrchar+3)%sizestr));
-      *(str+3) =* (ptr1+((nbrchar+4)%sizestr));
-      *(str+4) =* (ptr1+((nbrchar+5)%sizestr));
-      *(str+5) =* (ptr1+((nbrchar+6)%sizestr));
-      BSP_LCD_GLASS_Clear();
-      BSP_LCD_GLASS_DisplayString(str);
-      
-      /* user button pressed stop the scrolling sentence */
-      if(bLCDGlass_KeyPressed)
-      {
-        bLCDGlass_KeyPressed = 0;
-        return;
-      }
-       HAL_Delay(ScrollSpeed);
-    }  
-  }
-}
-
-/**
-  * @}
-  */
-
-/** @addtogroup STM32L476G_DISCOVERY_LCD_Private_Functions
-  * @{
-  */
-
-/**
-  * @brief  Initialize the LCD MSP.
-  * @param  hlcd: LCD handle
-  * @retval None
-  */
-static void LCD_MspInit(LCD_HandleTypeDef *hlcd)
-{
-  GPIO_InitTypeDef  gpioinitstruct = {0};
-  RCC_OscInitTypeDef oscinitstruct = {0};
-  RCC_PeriphCLKInitTypeDef periphclkstruct = {0};
-  
-  /*##-1- Enable PWR  peripheral Clock #######################################*/
-  __HAL_RCC_PWR_CLK_ENABLE();
-  
-  /*##-2- Configure LSE as RTC clock soucre ###################################*/ 
-  oscinitstruct.OscillatorType  = RCC_OSCILLATORTYPE_LSE;
-  oscinitstruct.PLL.PLLState    = RCC_PLL_NONE;
-  oscinitstruct.LSEState        = RCC_LSE_ON;
-  if(HAL_RCC_OscConfig(&oscinitstruct) != HAL_OK)
-  { 
-    while(1);
-  }
-  
-  /*##-3- Select LSE as RTC clock source.##########################*/
-  /* Backup domain management is done in RCC function */
-  periphclkstruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
-  periphclkstruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
-  HAL_RCCEx_PeriphCLKConfig(&periphclkstruct);
-
-  /*##-4- Enable LCD GPIO Clocks #############################################*/
-  __HAL_RCC_GPIOA_CLK_ENABLE();
-  __HAL_RCC_GPIOB_CLK_ENABLE();
-  __HAL_RCC_GPIOC_CLK_ENABLE();
-  __HAL_RCC_GPIOD_CLK_ENABLE();
-
-  
-  /*##-5- Configure peripheral GPIO ##########################################*/
-  /* Configure Output for LCD */
-  /* Port A */
-  gpioinitstruct.Pin        = LCD_GPIO_BANKA_PINS;
-  gpioinitstruct.Mode       = GPIO_MODE_AF_PP;
-  gpioinitstruct.Pull       = GPIO_NOPULL;
-  gpioinitstruct.Speed      = GPIO_SPEED_FREQ_VERY_HIGH;
-  gpioinitstruct.Alternate  = GPIO_AF11_LCD;
-  HAL_GPIO_Init(GPIOA, &gpioinitstruct);
-
-  /* Port B */
-  gpioinitstruct.Pin        = LCD_GPIO_BANKB_PINS;
-  HAL_GPIO_Init(GPIOB, &gpioinitstruct);
-  
-  /* Port C*/
-  gpioinitstruct.Pin        = LCD_GPIO_BANKC_PINS;
-  HAL_GPIO_Init(GPIOC, &gpioinitstruct);
-
-  /* Port D */
-  gpioinitstruct.Pin        = LCD_GPIO_BANKD_PINS;
-  HAL_GPIO_Init(GPIOD, &gpioinitstruct);
-
-  /* Wait for the external capacitor Cext which is connected to the VLCD pin is charged
-  (approximately 2ms for Cext=1uF) */
-  HAL_Delay(2);
-
-  /*##-6- Enable LCD peripheral Clock ########################################*/
-  __HAL_RCC_LCD_CLK_ENABLE();
-}
-
-/**
-  * @brief  DeInitialize the LCD MSP.
-  * @param  hlcd: LCD handle
-  * @retval None
-  */
-static void LCD_MspDeInit(LCD_HandleTypeDef *hlcd)
-{
-  uint32_t gpiopin = 0;
-  
-  /*##-1- Enable LCD GPIO Clocks #############################################*/
-  __HAL_RCC_GPIOA_CLK_ENABLE();
-  __HAL_RCC_GPIOB_CLK_ENABLE();
-  __HAL_RCC_GPIOC_CLK_ENABLE();
-  __HAL_RCC_GPIOD_CLK_ENABLE();
-
-  /*##-1- Configure peripheral GPIO ##########################################*/
-  /* Configure Output for LCD */
-  /* Port A */
-  gpiopin = LCD_GPIO_BANKA_PINS;
-  HAL_GPIO_DeInit(GPIOA, gpiopin);
-
-  /* Port B */
-  gpiopin = LCD_GPIO_BANKB_PINS;
-  HAL_GPIO_DeInit(GPIOB, gpiopin);
-
-  /* Port C*/
-  gpiopin = LCD_GPIO_BANKC_PINS;
-  HAL_GPIO_DeInit(GPIOC, gpiopin);
-
-  /* Port D */
-  gpiopin = LCD_GPIO_BANKD_PINS;
-  HAL_GPIO_DeInit(GPIOD, gpiopin);
-
-  /*##-5- Enable LCD peripheral Clock ########################################*/
-  __HAL_RCC_LCD_CLK_DISABLE();
-}
-
-/**
-  * @brief  Convert an ascii char to the a LCD digit.
-  * @param  Char: a char to display.
-  * @param  Point: a point to add in front of char
-  *         This parameter can be: POINT_OFF or POINT_ON
-  * @param  Colon : flag indicating if a colon character has to be added in front
-  *         of displayed character.
-  *         This parameter can be: DOUBLEPOINT_OFF or DOUBLEPOINT_ON.
-  * @retval None
-  */
-static void Convert(uint8_t* Char, Point_Typedef Point, DoublePoint_Typedef Colon)
-{
-  uint16_t ch = 0 ;
-  uint8_t loop = 0, index = 0;
-  
-  switch (*Char)
-    {
-    case ' ' :
-      ch = 0x00;
-      break;
-
-    case '*':
-      ch = C_STAR;
-      break;
-
-    case '(' :
-      ch = C_OPENPARMAP;
-      break;
-
-    case ')' :
-      ch = C_CLOSEPARMAP;
-      break;
-      
-    case 'd' :
-      ch = C_DMAP;
-      break;
-    
-    case 'm' :
-      ch = C_MMAP;
-      break;
-    
-    case 'n' :
-      ch = C_NMAP;
-      break;
-
-    case 'u' :
-      ch = C_UMAP;
-      break;
-
-    case '-' :
-      ch = C_MINUS;
-      break;
-
-    case '+' :
-      ch = C_PLUS;
-      break;
-
-    case '/' :
-      ch = C_SLATCH;
-      break;  
-      
-    case '�' :
-      ch = C_PERCENT_1;
-      break;  
-    case '%' :
-      ch = C_PERCENT_2; 
-      break;
-    case 255 :
-      ch = C_FULL;
-      break ;
-    
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':      
-      ch = NumberMap[*Char - ASCII_CHAR_0];    
-      break;
-          
-    default:
-      /* The character Char is one letter in upper case*/
-      if ( (*Char < ASCII_CHAR_LEFT_OPEN_BRACKET) && (*Char > ASCII_CHAR_AT_SYMBOL) )
-      {
-        ch = CapLetterMap[*Char - 'A'];
-      }
-      /* The character Char is one letter in lower case*/
-      if ( (*Char < ASCII_CHAR_LEFT_OPEN_BRACE) && ( *Char > ASCII_CHAR_APOSTROPHE) )
-      {
-        ch = CapLetterMap[*Char - 'a'];
-      }
-      break;
-  }
-       
-  /* Set the digital point can be displayed if the point is on */
-  if (Point == POINT_ON)
-  {
-    ch |= 0x0002;
-  }
-
-  /* Set the "COL" segment in the character that can be displayed if the colon is on */
-  if (Colon == DOUBLEPOINT_ON)
-  {
-    ch |= 0x0020;
-  }    
-
-  for (loop = 12,index=0 ;index < 4; loop -= 4,index++)
-  {
-    Digit[index] = (ch >> loop) & 0x0f; /*To isolate the less significant digit */
-  }
-}
-
-/**
-  * @brief  Write a character in the LCD frame buffer.
-  * @param  ch: the character to display.
-  * @param  Point: a point to add in front of char
-  *         This parameter can be: POINT_OFF or POINT_ON
-  * @param  Colon: flag indicating if a colon character has to be added in front
-  *         of displayed character.
-  *         This parameter can be: DOUBLEPOINT_OFF or DOUBLEPOINT_ON.           
-  * @param  Position: position in the LCD of the character to write [1:6]
-  * @retval None
-  */
-static void WriteChar(uint8_t* ch, Point_Typedef Point, DoublePoint_Typedef Colon, DigitPosition_Typedef Position)
-{
-  uint32_t data =0x00;
-  /* To convert displayed character in segment in array digit */
-  Convert(ch, (Point_Typedef)Point, (DoublePoint_Typedef)Colon);
-
-  switch (Position)
-  {
-    /* Position 1 on LCD (Digit1)*/
-    case LCD_DIGIT_POSITION_1:
-      data = ((Digit[0] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG1_SHIFT)
-          | (((Digit[0] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG23_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM0, LCD_DIGIT1_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = ((Digit[1] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG1_SHIFT)
-          | (((Digit[1] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG23_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM1, LCD_DIGIT1_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-      data = ((Digit[2] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG1_SHIFT)
-          | (((Digit[2] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG23_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM2, LCD_DIGIT1_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = ((Digit[3] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG1_SHIFT)
-          | (((Digit[3] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG23_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM3, LCD_DIGIT1_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      break;
-
-    /* Position 2 on LCD (Digit2)*/
-    case LCD_DIGIT_POSITION_2:
-      data = ((Digit[0] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG3_SHIFT)
-          | (((Digit[0] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG21_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM0, LCD_DIGIT2_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = ((Digit[1] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG3_SHIFT)
-          | (((Digit[1] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG21_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM1, LCD_DIGIT2_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-      data = ((Digit[2] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG3_SHIFT)
-          | (((Digit[2] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG21_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM2, LCD_DIGIT2_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = ((Digit[3] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG3_SHIFT)
-          | (((Digit[3] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG21_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM3, LCD_DIGIT2_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      break;
-    
-    /* Position 3 on LCD (Digit3)*/
-    case LCD_DIGIT_POSITION_3:
-      data = ((Digit[0] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG5_SHIFT)
-          | (((Digit[0] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG19_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM0, LCD_DIGIT3_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = ((Digit[1] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG5_SHIFT)
-          | (((Digit[1] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG19_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM1, LCD_DIGIT3_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-      data = ((Digit[2] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG5_SHIFT)
-          | (((Digit[2] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG19_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM2, LCD_DIGIT3_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = ((Digit[3] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG5_SHIFT)
-          | (((Digit[3] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG19_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM3, LCD_DIGIT3_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      break;
-    
-    /* Position 4 on LCD (Digit4)*/
-    case LCD_DIGIT_POSITION_4:
-      data = ((Digit[0] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG17_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM0, LCD_DIGIT4_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = (((Digit[0] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[0] & 0x4) >> 2) << LCD_SEG16_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM0_1, LCD_DIGIT4_COM0_1_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = ((Digit[1] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG17_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM1, LCD_DIGIT4_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-      data = (((Digit[1] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[1] & 0x4) >> 2) << LCD_SEG16_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM1_1, LCD_DIGIT4_COM1_1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-      data = ((Digit[2] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG17_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM2, LCD_DIGIT4_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = (((Digit[2] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[2] & 0x4) >> 2) << LCD_SEG16_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM2_1, LCD_DIGIT4_COM2_1_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = ((Digit[3] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG17_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM3, LCD_DIGIT4_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      
-      data = (((Digit[3] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[3] & 0x4) >> 2) << LCD_SEG16_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM3_1, LCD_DIGIT4_COM3_1_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      break;
-    
-    /* Position 5 on LCD (Digit5)*/
-    case LCD_DIGIT_POSITION_5:
-       data = (((Digit[0] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[0] & 0x4) >> 2) << LCD_SEG14_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM0, LCD_DIGIT5_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = ((Digit[0] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG15_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM0_1, LCD_DIGIT5_COM0_1_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = (((Digit[1] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[1] & 0x4) >> 2) << LCD_SEG14_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM1, LCD_DIGIT5_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-       data = ((Digit[1] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG15_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM1_1, LCD_DIGIT5_COM1_1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-      data = (((Digit[2] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[2] & 0x4) >> 2) << LCD_SEG14_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM2, LCD_DIGIT5_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = ((Digit[2] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG15_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM2_1, LCD_DIGIT5_COM2_1_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = (((Digit[3] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[3] & 0x4) >> 2) << LCD_SEG14_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM3, LCD_DIGIT5_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      
-      data = ((Digit[3] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG15_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM3_1, LCD_DIGIT5_COM3_1_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      break;
-    
-    /* Position 6 on LCD (Digit6)*/
-    case LCD_DIGIT_POSITION_6:
-      data = ((Digit[0] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG11_SHIFT)
-          | (((Digit[0] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG13_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM0, LCD_DIGIT6_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
-      
-      data = ((Digit[1] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG11_SHIFT)
-          | (((Digit[1] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG13_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM1, LCD_DIGIT6_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D  */
-      
-      data = ((Digit[2] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG11_SHIFT)
-          | (((Digit[2] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG13_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM2, LCD_DIGIT6_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P  */
-      
-      data = ((Digit[3] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG11_SHIFT)
-          | (((Digit[3] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG13_SHIFT);
-      HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM3, LCD_DIGIT6_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N  */
-      break;
-    
-     default:
-      break;
-  }
-}
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-