AudioRecord
Dependencies: STM32L4xx_HAL_Driver CMSIS_DSP_401
Diff: stm32l476g_discovery_glass_lcd.h
- Revision:
- 0:d4e5ad7ad71c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stm32l476g_discovery_glass_lcd.h Mon Nov 23 19:37:13 2015 +0000 @@ -0,0 +1,547 @@ + /** + ****************************************************************************** + * @file stm32l476g_discovery_glass_lcd.h + * @author MCD Application Team + * @version V1.0.1 + * @date 16-September-2015 + * @brief Header file for stm32l476g_discovery_glass_lcd.c module. + ****************************************************************************** + * @attention + * + * <h2><center>© 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. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L476G_DISCOVERY_GLASS_LCD_H +#define __STM32L476G_DISCOVERY_GLASS_LCD_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l476g_discovery.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32L476G_DISCOVERY + * @{ + */ + +/** @addtogroup STM32L476G_DISCOVERY_GLASS_LCD + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup STM32L476G_DISCOVERY_GLASS_LCD_Exported_Types Exported Types + * @{ + */ +/** + * @brief LCD Glass digit position + */ +typedef enum +{ + LCD_DIGIT_POSITION_1 = 0, + LCD_DIGIT_POSITION_2 = 1, + LCD_DIGIT_POSITION_3 = 2, + LCD_DIGIT_POSITION_4 = 3, + LCD_DIGIT_POSITION_5 = 4, + LCD_DIGIT_POSITION_6 = 5, + LCD_DIGIT_MAX_NUMBER = 6, +}DigitPosition_Typedef; +/** + * @brief LCD Glass point + * Warning: element values correspond to LCD Glass point. + */ + +typedef enum +{ + POINT_OFF = 0, + POINT_ON = 1 +}Point_Typedef; + +/** + * @brief LCD Glass Double point + * Warning: element values correspond to LCD Glass Double point. + */ +typedef enum +{ + DOUBLEPOINT_OFF = 0, + DOUBLEPOINT_ON = 1 +}DoublePoint_Typedef; + +/** + * @brief LCD Glass Battery Level + * element values correspond to different LCD Glass battery levels + */ +typedef enum +{ + BATTERYLEVEL_OFF = 0, + BATTERYLEVEL_1_4 = 1, + BATTERYLEVEL_1_2 = 2, + BATTERYLEVEL_3_4 = 3, + BATTERYLEVEL_FULL = 4 +}BatteryLevel_Typedef; + +/** + * @brief LCD Glass Bar Id + */ +typedef enum +{ + LCD_BAR_NONE = 0, + LCD_BAR_0 = (1 << 0), + LCD_BAR_1 = (1 << 1), + LCD_BAR_2 = (1 << 2), + LCD_BAR_3 = (1 << 3) +}BarId_Typedef; +/** + * @} + */ + +/** @defgroup STM32L476G_DISCOVERY_GLASS_LCD_Exported_Constants Exported Constants + * @{ +*/ +/** + * @brief LCD digit defintion + */ +#define COM_PER_DIGIT_NB 4/*!< Specifies number of COM to address a digit */ +#define SEG_PER_DIGIT_NB 4/*!< Specifies number of SEG to address a digit */ + +#define LCD_MAP_CHAR_COM0_SEG_1ST_POS (1 << LCD_MAP_CHAR_COM0_SEG_1ST_SHIFT) +#define LCD_MAP_CHAR_COM0_SEG_2ND_POS (1 << LCD_MAP_CHAR_COM0_SEG_2ND_SHIFT) +#define LCD_MAP_CHAR_COM0_SEG_3RD_POS (1 << LCD_MAP_CHAR_COM0_SEG_3RD_SHIFT) +#define LCD_MAP_CHAR_COM0_SEG_4TH_POS (1 << LCD_MAP_CHAR_COM0_SEG_4TH_SHIFT) +#define LCD_MAP_CHAR_COM1_SEG_1ST_POS (1 << LCD_MAP_CHAR_COM1_SEG_1ST_SHIFT) +#define LCD_MAP_CHAR_COM1_SEG_2ND_POS (1 << LCD_MAP_CHAR_COM1_SEG_2ND_SHIFT) +#define LCD_MAP_CHAR_COM1_SEG_3RD_POS (1 << LCD_MAP_CHAR_COM1_SEG_3RD_SHIFT) +#define LCD_MAP_CHAR_COM1_SEG_4TH_POS (1 << LCD_MAP_CHAR_COM1_SEG_4TH_SHIFT) +#define LCD_MAP_CHAR_COM2_SEG_1ST_POS (1 << LCD_MAP_CHAR_COM2_SEG_1ST_SHIFT) +#define LCD_MAP_CHAR_COM2_SEG_2ND_POS (1 << LCD_MAP_CHAR_COM2_SEG_2ND_SHIFT) +#define LCD_MAP_CHAR_COM2_SEG_3RD_POS (1 << LCD_MAP_CHAR_COM2_SEG_3RD_SHIFT) +#define LCD_MAP_CHAR_COM2_SEG_4TH_POS (1 << LCD_MAP_CHAR_COM2_SEG_4TH_SHIFT) +#define LCD_MAP_CHAR_COM3_SEG_1ST_POS (1 << LCD_MAP_CHAR_COM3_SEG_1ST_SHIFT) +#define LCD_MAP_CHAR_COM3_SEG_2ND_POS (1 << LCD_MAP_CHAR_COM3_SEG_2ND_SHIFT) +#define LCD_MAP_CHAR_COM3_SEG_3RD_POS (1 << LCD_MAP_CHAR_COM3_SEG_3RD_SHIFT) +#define LCD_MAP_CHAR_COM3_SEG_4TH_POS (1 << LCD_MAP_CHAR_COM3_SEG_4TH_SHIFT) +#define LCD_MAP_CHAR_COM0_SEG_1ST_SHIFT 0x00000000 +#define LCD_MAP_CHAR_COM0_SEG_2ND_SHIFT 0x00000001 +#define LCD_MAP_CHAR_COM0_SEG_3RD_SHIFT 0x00000002 +#define LCD_MAP_CHAR_COM0_SEG_4TH_SHIFT 0x00000003 +#define LCD_MAP_CHAR_COM1_SEG_1ST_SHIFT 0x00000004 +#define LCD_MAP_CHAR_COM1_SEG_2ND_SHIFT 0x00000005 +#define LCD_MAP_CHAR_COM1_SEG_3RD_SHIFT 0x00000006 +#define LCD_MAP_CHAR_COM1_SEG_4TH_SHIFT 0x00000007 +#define LCD_MAP_CHAR_COM2_SEG_1ST_SHIFT 0x00000008 +#define LCD_MAP_CHAR_COM2_SEG_2ND_SHIFT 0x00000009 +#define LCD_MAP_CHAR_COM2_SEG_3RD_SHIFT 0x00000010 +#define LCD_MAP_CHAR_COM2_SEG_4TH_SHIFT 0x00000011 +#define LCD_MAP_CHAR_COM3_SEG_1ST_SHIFT 0x00000012 +#define LCD_MAP_CHAR_COM3_SEG_2ND_SHIFT 0x00000013 +#define LCD_MAP_CHAR_COM3_SEG_3RD_SHIFT 0x00000014 +#define LCD_MAP_CHAR_COM3_SEG_4TH_SHIFT 0x00000015 + +/** + * @brief LCD Digit defines + */ +#define LCD_DIGIT1_COM0 LCD_COM0 +#define LCD_DIGIT1_COM0_SEG_MASK ~(LCD_SEG0 | LCD_SEG1 | LCD_SEG22 | LCD_SEG23) +#define LCD_DIGIT1_COM1 LCD_COM1 +#define LCD_DIGIT1_COM1_SEG_MASK ~(LCD_SEG0 | LCD_SEG1 | LCD_SEG22 | LCD_SEG23) +#define LCD_DIGIT1_COM2 LCD_COM2 +#define LCD_DIGIT1_COM2_SEG_MASK ~(LCD_SEG0 | LCD_SEG1 | LCD_SEG22 | LCD_SEG23) +#define LCD_DIGIT1_COM3 LCD_COM3 +#define LCD_DIGIT1_COM3_SEG_MASK ~(LCD_SEG0 | LCD_SEG1 | LCD_SEG22 | LCD_SEG23) + +#define LCD_DIGIT2_COM0 LCD_COM0 +#define LCD_DIGIT2_COM0_SEG_MASK ~(LCD_SEG2 | LCD_SEG3 | LCD_SEG20 | LCD_SEG21) +#define LCD_DIGIT2_COM1 LCD_COM1 +#define LCD_DIGIT2_COM1_SEG_MASK ~(LCD_SEG2 | LCD_SEG3 | LCD_SEG20 | LCD_SEG21) +#define LCD_DIGIT2_COM2 LCD_COM2 +#define LCD_DIGIT2_COM2_SEG_MASK ~(LCD_SEG2 | LCD_SEG3 | LCD_SEG20 | LCD_SEG21) +#define LCD_DIGIT2_COM3 LCD_COM3 +#define LCD_DIGIT2_COM3_SEG_MASK ~(LCD_SEG2 | LCD_SEG3 | LCD_SEG20 | LCD_SEG21) + +#define LCD_DIGIT3_COM0 LCD_COM0 +#define LCD_DIGIT3_COM0_SEG_MASK ~(LCD_SEG4 | LCD_SEG5 | LCD_SEG18 | LCD_SEG19) +#define LCD_DIGIT3_COM1 LCD_COM1 +#define LCD_DIGIT3_COM1_SEG_MASK ~(LCD_SEG4 | LCD_SEG5 | LCD_SEG18 | LCD_SEG19) +#define LCD_DIGIT3_COM2 LCD_COM2 +#define LCD_DIGIT3_COM2_SEG_MASK ~(LCD_SEG4 | LCD_SEG5 | LCD_SEG18 | LCD_SEG19) +#define LCD_DIGIT3_COM3 LCD_COM3 +#define LCD_DIGIT3_COM3_SEG_MASK ~(LCD_SEG4 | LCD_SEG5 | LCD_SEG18 | LCD_SEG19) + +#define LCD_DIGIT4_COM0 LCD_COM0 +#define LCD_DIGIT4_COM0_SEG_MASK ~(LCD_SEG6 | LCD_SEG17) +#define LCD_DIGIT4_COM0_1 LCD_COM0_1 +#define LCD_DIGIT4_COM0_1_SEG_MASK ~(LCD_SEG7 | LCD_SEG16) +#define LCD_DIGIT4_COM1 LCD_COM1 +#define LCD_DIGIT4_COM1_SEG_MASK ~(LCD_SEG6 | LCD_SEG17) +#define LCD_DIGIT4_COM1_1 LCD_COM1_1 +#define LCD_DIGIT4_COM1_1_SEG_MASK ~(LCD_SEG7 | LCD_SEG16) +#define LCD_DIGIT4_COM2 LCD_COM2 +#define LCD_DIGIT4_COM2_SEG_MASK ~(LCD_SEG6 | LCD_SEG17) +#define LCD_DIGIT4_COM2_1 LCD_COM2_1 +#define LCD_DIGIT4_COM2_1_SEG_MASK ~(LCD_SEG7 | LCD_SEG16) +#define LCD_DIGIT4_COM3 LCD_COM3 +#define LCD_DIGIT4_COM3_SEG_MASK ~(LCD_SEG6 | LCD_SEG17) +#define LCD_DIGIT4_COM3_1 LCD_COM3_1 +#define LCD_DIGIT4_COM3_1_SEG_MASK ~(LCD_SEG7 | LCD_SEG16) + +#define LCD_DIGIT5_COM0 LCD_COM0 +#define LCD_DIGIT5_COM0_SEG_MASK ~(LCD_SEG9 | LCD_SEG14) +#define LCD_DIGIT5_COM0_1 LCD_COM0_1 +#define LCD_DIGIT5_COM0_1_SEG_MASK ~(LCD_SEG8 | LCD_SEG15) +#define LCD_DIGIT5_COM1 LCD_COM1 +#define LCD_DIGIT5_COM1_SEG_MASK ~(LCD_SEG9 | LCD_SEG14) +#define LCD_DIGIT5_COM1_1 LCD_COM1_1 +#define LCD_DIGIT5_COM1_1_SEG_MASK ~(LCD_SEG8 | LCD_SEG15) +#define LCD_DIGIT5_COM2 LCD_COM2 +#define LCD_DIGIT5_COM2_SEG_MASK ~(LCD_SEG9 | LCD_SEG14) +#define LCD_DIGIT5_COM2_1 LCD_COM2_1 +#define LCD_DIGIT5_COM2_1_SEG_MASK ~(LCD_SEG8 | LCD_SEG15) +#define LCD_DIGIT5_COM3 LCD_COM3 +#define LCD_DIGIT5_COM3_SEG_MASK ~(LCD_SEG9 | LCD_SEG14) +#define LCD_DIGIT5_COM3_1 LCD_COM3_1 +#define LCD_DIGIT5_COM3_1_SEG_MASK ~(LCD_SEG8 | LCD_SEG15) + +#define LCD_DIGIT6_COM0 LCD_COM0 +#define LCD_DIGIT6_COM0_SEG_MASK ~(LCD_SEG10 | LCD_SEG11 | LCD_SEG12 | LCD_SEG13) +#define LCD_DIGIT6_COM1 LCD_COM1 +#define LCD_DIGIT6_COM1_SEG_MASK ~(LCD_SEG10 | LCD_SEG11 | LCD_SEG12 | LCD_SEG13) +#define LCD_DIGIT6_COM2 LCD_COM2 +#define LCD_DIGIT6_COM2_SEG_MASK ~(LCD_SEG10 | LCD_SEG11 | LCD_SEG12 | LCD_SEG13) +#define LCD_DIGIT6_COM3 LCD_COM3 +#define LCD_DIGIT6_COM3_SEG_MASK ~(LCD_SEG10 | LCD_SEG11 | LCD_SEG12 | LCD_SEG13) + +/** + * @brief LCD Bar location + */ +#define LCD_BAR0_2_COM LCD_COM3 +#define LCD_BAR1_3_COM LCD_COM2 +#define LCD_BAR0_SEG LCD_SEG11 +#define LCD_BAR1_SEG LCD_SEG11 +#define LCD_BAR2_SEG LCD_SEG9 +#define LCD_BAR3_SEG LCD_SEG9 +#define LCD_BAR0_2_SEG_MASK ~(LCD_BAR0_SEG | LCD_BAR2_SEG) +#define LCD_BAR1_3_SEG_MASK ~(LCD_BAR1_SEG | LCD_BAR3_SEG) + +/** + * @brief LCD segments & coms redefinition. + * LCD component segments & coms are not necessarily link to MCU segmnents & coms output. + */ +#if defined (USE_STM32L476G_DISCO_REVC) || defined (USE_STM32L476G_DISCO_REVB) +#define LCD_COM0 MCU_LCD_COM0 +#define LCD_COM0_1 MCU_LCD_COM0_1 +#define LCD_COM1 MCU_LCD_COM1 +#define LCD_COM1_1 MCU_LCD_COM1_1 +#define LCD_COM2 MCU_LCD_COM2 +#define LCD_COM2_1 MCU_LCD_COM2_1 +#define LCD_COM3 MCU_LCD_COM3 +#define LCD_COM3_1 MCU_LCD_COM3_1 +#elif defined (USE_STM32L476G_DISCO_REVA) +#define LCD_COM0 MCU_LCD_COM5 +#define LCD_COM0_1 MCU_LCD_COM5_1 +#define LCD_COM1 MCU_LCD_COM7 +#define LCD_COM1_1 MCU_LCD_COM7_1 +#define LCD_COM2 MCU_LCD_COM6 +#define LCD_COM2_1 MCU_LCD_COM6_1 +#define LCD_COM3 MCU_LCD_COM4 +#define LCD_COM3_1 MCU_LCD_COM4_1 +#endif +#define LCD_SEG0 MCU_LCD_SEG4 +#define LCD_SEG1 MCU_LCD_SEG23 +#define LCD_SEG2 MCU_LCD_SEG6 +#define LCD_SEG3 MCU_LCD_SEG13 +#define LCD_SEG4 MCU_LCD_SEG15 +#define LCD_SEG5 MCU_LCD_SEG29 +#define LCD_SEG6 MCU_LCD_SEG31 +#define LCD_SEG7 MCU_LCD_SEG33 +#define LCD_SEG8 MCU_LCD_SEG35 +#define LCD_SEG9 MCU_LCD_SEG25 +#define LCD_SEG10 MCU_LCD_SEG17 +#define LCD_SEG11 MCU_LCD_SEG8 +#define LCD_SEG12 MCU_LCD_SEG9 +#define LCD_SEG13 MCU_LCD_SEG26 +#define LCD_SEG14 MCU_LCD_SEG24 +#define LCD_SEG15 MCU_LCD_SEG34 +#define LCD_SEG16 MCU_LCD_SEG32 +#define LCD_SEG17 MCU_LCD_SEG30 +#define LCD_SEG18 MCU_LCD_SEG28 +#define LCD_SEG19 MCU_LCD_SEG14 +#define LCD_SEG20 MCU_LCD_SEG12 +#define LCD_SEG21 MCU_LCD_SEG5 +#define LCD_SEG22 MCU_LCD_SEG22 +#define LCD_SEG23 MCU_LCD_SEG3 +#define LCD_SEG0_SHIFT MCU_LCD_SEG4_SHIFT +#define LCD_SEG1_SHIFT MCU_LCD_SEG23_SHIFT +#define LCD_SEG2_SHIFT MCU_LCD_SEG6_SHIFT +#define LCD_SEG3_SHIFT MCU_LCD_SEG13_SHIFT +#define LCD_SEG4_SHIFT MCU_LCD_SEG15_SHIFT +#define LCD_SEG5_SHIFT MCU_LCD_SEG29_SHIFT +#define LCD_SEG6_SHIFT MCU_LCD_SEG31_SHIFT +#define LCD_SEG7_SHIFT MCU_LCD_SEG33_SHIFT +#define LCD_SEG8_SHIFT MCU_LCD_SEG35_SHIFT +#define LCD_SEG9_SHIFT MCU_LCD_SEG25_SHIFT +#define LCD_SEG10_SHIFT MCU_LCD_SEG17_SHIFT +#define LCD_SEG11_SHIFT MCU_LCD_SEG8_SHIFT +#define LCD_SEG12_SHIFT MCU_LCD_SEG9_SHIFT +#define LCD_SEG13_SHIFT MCU_LCD_SEG26_SHIFT +#define LCD_SEG14_SHIFT MCU_LCD_SEG24_SHIFT +#define LCD_SEG15_SHIFT MCU_LCD_SEG34_SHIFT +#define LCD_SEG16_SHIFT MCU_LCD_SEG32_SHIFT +#define LCD_SEG17_SHIFT MCU_LCD_SEG30_SHIFT +#define LCD_SEG18_SHIFT MCU_LCD_SEG28_SHIFT +#define LCD_SEG19_SHIFT MCU_LCD_SEG14_SHIFT +#define LCD_SEG20_SHIFT MCU_LCD_SEG12_SHIFT +#define LCD_SEG21_SHIFT MCU_LCD_SEG5_SHIFT +#define LCD_SEG22_SHIFT MCU_LCD_SEG22_SHIFT +#define LCD_SEG23_SHIFT MCU_LCD_SEG3_SHIFT + +/** + * @brief STM32 LCD segments & coms definitions. + */ +#define MCU_LCD_COM0 LCD_RAM_REGISTER0 +#define MCU_LCD_COM0_1 LCD_RAM_REGISTER1 +#define MCU_LCD_COM1 LCD_RAM_REGISTER2 +#define MCU_LCD_COM1_1 LCD_RAM_REGISTER3 +#define MCU_LCD_COM2 LCD_RAM_REGISTER4 +#define MCU_LCD_COM2_1 LCD_RAM_REGISTER5 +#define MCU_LCD_COM3 LCD_RAM_REGISTER6 +#define MCU_LCD_COM3_1 LCD_RAM_REGISTER7 +#define MCU_LCD_COM4 LCD_RAM_REGISTER8 +#define MCU_LCD_COM4_1 LCD_RAM_REGISTER9 +#define MCU_LCD_COM5 LCD_RAM_REGISTER10 +#define MCU_LCD_COM5_1 LCD_RAM_REGISTER11 +#define MCU_LCD_COM6 LCD_RAM_REGISTER12 +#define MCU_LCD_COM6_1 LCD_RAM_REGISTER13 +#define MCU_LCD_COM7 LCD_RAM_REGISTER14 +#define MCU_LCD_COM7_1 LCD_RAM_REGISTER15 +#define MCU_LCD_SEG0 (1U << MCU_LCD_SEG0_SHIFT) +#define MCU_LCD_SEG1 (1U << MCU_LCD_SEG1_SHIFT) +#define MCU_LCD_SEG2 (1U << MCU_LCD_SEG2_SHIFT) +#define MCU_LCD_SEG3 (1U << MCU_LCD_SEG3_SHIFT) +#define MCU_LCD_SEG4 (1U << MCU_LCD_SEG4_SHIFT) +#define MCU_LCD_SEG5 (1U << MCU_LCD_SEG5_SHIFT) +#define MCU_LCD_SEG6 (1U << MCU_LCD_SEG6_SHIFT) +#define MCU_LCD_SEG7 (1U << MCU_LCD_SEG7_SHIFT) +#define MCU_LCD_SEG8 (1U << MCU_LCD_SEG8_SHIFT) +#define MCU_LCD_SEG9 (1U << MCU_LCD_SEG9_SHIFT) +#define MCU_LCD_SEG10 (1U << MCU_LCD_SEG10_SHIFT) +#define MCU_LCD_SEG11 (1U << MCU_LCD_SEG11_SHIFT) +#define MCU_LCD_SEG12 (1U << MCU_LCD_SEG12_SHIFT) +#define MCU_LCD_SEG13 (1U << MCU_LCD_SEG13_SHIFT) +#define MCU_LCD_SEG14 (1U << MCU_LCD_SEG14_SHIFT) +#define MCU_LCD_SEG15 (1U << MCU_LCD_SEG15_SHIFT) +#define MCU_LCD_SEG16 (1U << MCU_LCD_SEG16_SHIFT) +#define MCU_LCD_SEG17 (1U << MCU_LCD_SEG17_SHIFT) +#define MCU_LCD_SEG18 (1U << MCU_LCD_SEG18_SHIFT) +#define MCU_LCD_SEG19 (1U << MCU_LCD_SEG19_SHIFT) +#define MCU_LCD_SEG20 (1U << MCU_LCD_SEG20_SHIFT) +#define MCU_LCD_SEG21 (1U << MCU_LCD_SEG21_SHIFT) +#define MCU_LCD_SEG22 (1U << MCU_LCD_SEG22_SHIFT) +#define MCU_LCD_SEG23 (1U << MCU_LCD_SEG23_SHIFT) +#define MCU_LCD_SEG24 (1U << MCU_LCD_SEG24_SHIFT) +#define MCU_LCD_SEG25 (1U << MCU_LCD_SEG25_SHIFT) +#define MCU_LCD_SEG26 (1U << MCU_LCD_SEG26_SHIFT) +#define MCU_LCD_SEG27 (1U << MCU_LCD_SEG27_SHIFT) +#define MCU_LCD_SEG28 (1U << MCU_LCD_SEG28_SHIFT) +#define MCU_LCD_SEG29 (1U << MCU_LCD_SEG29_SHIFT) +#define MCU_LCD_SEG30 (1U << MCU_LCD_SEG30_SHIFT) +#define MCU_LCD_SEG31 (1U << MCU_LCD_SEG31_SHIFT) +#define MCU_LCD_SEG32 (1U << MCU_LCD_SEG32_SHIFT) +#define MCU_LCD_SEG33 (1U << MCU_LCD_SEG33_SHIFT) +#define MCU_LCD_SEG34 (1U << MCU_LCD_SEG34_SHIFT) +#define MCU_LCD_SEG35 (1U << MCU_LCD_SEG35_SHIFT) +#define MCU_LCD_SEG36 (1U << MCU_LCD_SEG36_SHIFT) +#define MCU_LCD_SEG37 (1U << MCU_LCD_SEG37_SHIFT) +#define MCU_LCD_SEG38 (1U << MCU_LCD_SEG38_SHIFT) +#define MCU_LCD_SEG0_SHIFT 0 +#define MCU_LCD_SEG1_SHIFT 1 +#define MCU_LCD_SEG2_SHIFT 2 +#define MCU_LCD_SEG3_SHIFT 3 +#define MCU_LCD_SEG4_SHIFT 4 +#define MCU_LCD_SEG5_SHIFT 5 +#define MCU_LCD_SEG6_SHIFT 6 +#define MCU_LCD_SEG7_SHIFT 7 +#define MCU_LCD_SEG8_SHIFT 8 +#define MCU_LCD_SEG9_SHIFT 9 +#define MCU_LCD_SEG10_SHIFT 10 +#define MCU_LCD_SEG11_SHIFT 11 +#define MCU_LCD_SEG12_SHIFT 12 +#define MCU_LCD_SEG13_SHIFT 13 +#define MCU_LCD_SEG14_SHIFT 14 +#define MCU_LCD_SEG15_SHIFT 15 +#define MCU_LCD_SEG16_SHIFT 16 +#define MCU_LCD_SEG17_SHIFT 17 +#define MCU_LCD_SEG18_SHIFT 18 +#define MCU_LCD_SEG19_SHIFT 19 +#define MCU_LCD_SEG20_SHIFT 20 +#define MCU_LCD_SEG21_SHIFT 21 +#define MCU_LCD_SEG22_SHIFT 22 +#define MCU_LCD_SEG23_SHIFT 23 +#define MCU_LCD_SEG24_SHIFT 24 +#define MCU_LCD_SEG25_SHIFT 25 +#define MCU_LCD_SEG26_SHIFT 26 +#define MCU_LCD_SEG27_SHIFT 27 +#define MCU_LCD_SEG28_SHIFT 28 +#define MCU_LCD_SEG29_SHIFT 29 +#define MCU_LCD_SEG30_SHIFT 30 +#define MCU_LCD_SEG31_SHIFT 31 +#define MCU_LCD_SEG32_SHIFT 0 +#define MCU_LCD_SEG33_SHIFT 1 +#define MCU_LCD_SEG34_SHIFT 2 +#define MCU_LCD_SEG35_SHIFT 3 +#define MCU_LCD_SEG36_SHIFT 4 +#define MCU_LCD_SEG37_SHIFT 5 +#define MCU_LCD_SEG38_SHIFT 6 +#define MCU_LCD_SEG39_SHIFT 7 +#define MCU_LCD_SEG40_SHIFT 8 +#define MCU_LCD_SEG41_SHIFT 9 +#define MCU_LCD_SEG42_SHIFT 10 +#define MCU_LCD_SEG43_SHIFT 11 + +/** + * @brief LCD Pins definition. + */ +#if defined (USE_STM32L476G_DISCO_REVC) || defined (USE_STM32L476G_DISCO_REVB) +#define LCD_GPIO_BANKA_PINS (GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | \ + GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_15) +#define LCD_GPIO_BANKB_PINS (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | \ + GPIO_PIN_5 | GPIO_PIN_9 | GPIO_PIN_12 | \ + GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15) +#define LCD_GPIO_BANKC_PINS (GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | \ + GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8) +#define LCD_GPIO_BANKD_PINS (GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | \ + GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | \ + GPIO_PIN_14 | GPIO_PIN_15) +#elif defined (USE_STM32L476G_DISCO_REVA) +#define LCD_GPIO_BANKA_PINS (GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_15) +#define LCD_GPIO_BANKB_PINS (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | \ + GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | \ + GPIO_PIN_14 | GPIO_PIN_15) +#define LCD_GPIO_BANKC_PINS (GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | \ + GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | \ + GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12) +#define LCD_GPIO_BANKD_PINS (GPIO_PIN_2 | GPIO_PIN_8 | GPIO_PIN_9 | \ + GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | \ + GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15) +#endif + +/* Define for scrolling sentences*/ +#define SCROLL_SPEED_HIGH 150 +#define SCROLL_SPEED_MEDIUM 300 +#define SCROLL_SPEED_LOW 450 + +#define DOT ((uint16_t) 0x8000 ) /* for add decimal point in string */ +#define DOUBLE_DOT ((uint16_t) 0x4000) /* for add decimal point in string */ + +/* code for '(' character */ +#define C_OPENPARMAP ((uint16_t) 0x0028) + +/* code for ')' character */ +#define C_CLOSEPARMAP ((uint16_t) 0x0011) + +/* code for 'd' character */ +#define C_DMAP ((uint16_t) 0xf300) + +/* code for 'm' character */ +#define C_MMAP ((uint16_t) 0xb210) + +/* code for 'n' character */ +#define C_NMAP ((uint16_t) 0x2210) + +/* code for 'µ' character */ +#define C_UMAP ((uint16_t) 0x6084) + +/* constant code for '*' character */ +#define C_STAR ((uint16_t) 0xA0DD) + +/* constant code for '-' character */ +#define C_MINUS ((uint16_t) 0xA000) + +/* constant code for '+' character */ +#define C_PLUS ((uint16_t) 0xA014) + +/* constant code for '/' */ +#define C_SLATCH ((uint16_t) 0x00c0) + +/* constant code for ° */ +#define C_PERCENT_1 ((uint16_t) 0xec00) + +/* constant code for small o */ +#define C_PERCENT_2 ((uint16_t) 0xb300) + +#define C_FULL ((uint16_t) 0xffdd) + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup STM32L476G_DISCOVERY_LCD_Exported_Functions Exported Functions + * @{ + */ +void BSP_LCD_GLASS_Init(void); +void BSP_LCD_GLASS_DeInit(void); +void BSP_LCD_GLASS_BlinkConfig(uint32_t BlinkMode, uint32_t BlinkFrequency); +void BSP_LCD_GLASS_Contrast(uint32_t Contrast); +void BSP_LCD_GLASS_DisplayChar(uint8_t* ch, Point_Typedef Point, DoublePoint_Typedef Column, DigitPosition_Typedef Position); +void BSP_LCD_GLASS_DisplayString(uint8_t* ptr); +void BSP_LCD_GLASS_DisplayStrDeci(uint16_t* ptr); +void BSP_LCD_GLASS_ScrollSentence(uint8_t* ptr, uint16_t nScroll, uint16_t ScrollSpeed); +void BSP_LCD_GLASS_DisplayBar(uint32_t BarId); +void BSP_LCD_GLASS_ClearBar(uint32_t BarId); +void BSP_LCD_GLASS_BarLevelConfig(uint8_t BarLevel); +void BSP_LCD_GLASS_Clear(void); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L476G_DISCOVERY_GLASS_LCD_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ +