mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Mon Oct 02 15:33:19 2017 +0100
Revision:
174:b96e65c34a4d
This updates the lib to the mbed lib v 152

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 174:b96e65c34a4d 1 /****************************************************************************//**
AnnaBridge 174:b96e65c34a4d 2 * @file lcd.h
AnnaBridge 174:b96e65c34a4d 3 * @version V1.00
AnnaBridge 174:b96e65c34a4d 4 * $Revision: 5 $
AnnaBridge 174:b96e65c34a4d 5 * $Date: 15/06/26 1:30p $
AnnaBridge 174:b96e65c34a4d 6 * @brief Nano100 series I2C driver header file
AnnaBridge 174:b96e65c34a4d 7 *
AnnaBridge 174:b96e65c34a4d 8 * @note
AnnaBridge 174:b96e65c34a4d 9 * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
AnnaBridge 174:b96e65c34a4d 10 *****************************************************************************/
AnnaBridge 174:b96e65c34a4d 11 #ifndef __LCD_H__
AnnaBridge 174:b96e65c34a4d 12 #define __LCD_H__
AnnaBridge 174:b96e65c34a4d 13
AnnaBridge 174:b96e65c34a4d 14 #ifdef __cplusplus
AnnaBridge 174:b96e65c34a4d 15 extern "C"
AnnaBridge 174:b96e65c34a4d 16 {
AnnaBridge 174:b96e65c34a4d 17 #endif
AnnaBridge 174:b96e65c34a4d 18
AnnaBridge 174:b96e65c34a4d 19 #include <stdint.h>
AnnaBridge 174:b96e65c34a4d 20 //#include <stdbool.h>
AnnaBridge 174:b96e65c34a4d 21
AnnaBridge 174:b96e65c34a4d 22
AnnaBridge 174:b96e65c34a4d 23 /** @addtogroup NANO100_Device_Driver NANO100 Device Driver
AnnaBridge 174:b96e65c34a4d 24 @{
AnnaBridge 174:b96e65c34a4d 25 */
AnnaBridge 174:b96e65c34a4d 26
AnnaBridge 174:b96e65c34a4d 27 /** @addtogroup NANO100_LCD_Driver LCD Driver
AnnaBridge 174:b96e65c34a4d 28 @{
AnnaBridge 174:b96e65c34a4d 29 */
AnnaBridge 174:b96e65c34a4d 30
AnnaBridge 174:b96e65c34a4d 31
AnnaBridge 174:b96e65c34a4d 32 /** @addtogroup NANO100_LCD_EXPORTED_CONSTANTS LCD Exported Constants
AnnaBridge 174:b96e65c34a4d 33 @{
AnnaBridge 174:b96e65c34a4d 34 */
AnnaBridge 174:b96e65c34a4d 35
AnnaBridge 174:b96e65c34a4d 36 /// @cond
AnnaBridge 174:b96e65c34a4d 37 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 174:b96e65c34a4d 38 /* Macro, type and constant definitions */
AnnaBridge 174:b96e65c34a4d 39 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 174:b96e65c34a4d 40
AnnaBridge 174:b96e65c34a4d 41 /// @endcond
AnnaBridge 174:b96e65c34a4d 42
AnnaBridge 174:b96e65c34a4d 43 #define LCD_FREQ_DIV32 ((uint32_t) 0x00000000) /*!< Clock source (32 or 10KHz) divide by 32 */
AnnaBridge 174:b96e65c34a4d 44 #define LCD_FREQ_DIV64 ((uint32_t) 0x00000010) /*!< Clock source (32 or 10KHz) divide by 64 */
AnnaBridge 174:b96e65c34a4d 45 #define LCD_FREQ_DIV96 ((uint32_t) 0x00000020) /*!< Clock source (32 or 10KHz) divide by 96 */
AnnaBridge 174:b96e65c34a4d 46 #define LCD_FREQ_DIV128 ((uint32_t) 0x00000030) /*!< Clock source (32 or 10KHz) divide by 128 */
AnnaBridge 174:b96e65c34a4d 47 #define LCD_FREQ_DIV192 ((uint32_t) 0x00000040) /*!< Clock source (32 or 10KHz) divide by 192 */
AnnaBridge 174:b96e65c34a4d 48 #define LCD_FREQ_DIV256 ((uint32_t) 0x00000050) /*!< Clock source (32 or 10KHz) divide by 256 */
AnnaBridge 174:b96e65c34a4d 49 #define LCD_FREQ_DIV384 ((uint32_t) 0x00000060) /*!< Clock source (32 or 10KHz) divide by 384 */
AnnaBridge 174:b96e65c34a4d 50 #define LCD_FREQ_DIV512 ((uint32_t) 0x00000070) /*!< Clock source (32 or 10KHz) divide by 512 */
AnnaBridge 174:b96e65c34a4d 51
AnnaBridge 174:b96e65c34a4d 52 #define LCD_MUX_STATIC ((uint32_t) 0x00000000) /*!< Static multiplexing */
AnnaBridge 174:b96e65c34a4d 53 #define LCD_MUX_ONE_SECOND ((uint32_t) 0x00000002) /*!< Duplex multiplexing */
AnnaBridge 174:b96e65c34a4d 54 #define LCD_MUX_ONE_THIRD ((uint32_t) 0x00000004) /*!< Triplex multiplexing */
AnnaBridge 174:b96e65c34a4d 55 #define LCD_MUX_ONE_FOURTH ((uint32_t) 0x00000006) /*!< Quadruplex multiplexing */
AnnaBridge 174:b96e65c34a4d 56 #define LCD_MUX_ONE_FIFTH ((uint32_t) 0x00000008) /*!< 1/5 duty */
AnnaBridge 174:b96e65c34a4d 57 #define LCD_MUX_ONE_SIXTH ((uint32_t) 0x0000000A) /*!< 1/6 duty */
AnnaBridge 174:b96e65c34a4d 58
AnnaBridge 174:b96e65c34a4d 59 #define LCD_BIAS_STATIC ((uint32_t) 0x00000000) /*!< Static bias */
AnnaBridge 174:b96e65c34a4d 60 #define LCD_BIAS_HALF ((uint32_t) 0x00000002) /*!< 1/2 bias */
AnnaBridge 174:b96e65c34a4d 61 #define LCD_BIAS_THIRD ((uint32_t) 0x00000004) /*!< 1/3 bias */
AnnaBridge 174:b96e65c34a4d 62
AnnaBridge 174:b96e65c34a4d 63 #define LCD_CPUMP_DIV1 ((uint32_t) 0x00000000) /*!< Clock source (32 or 10KHz) divide by 1 and is used by analog component */
AnnaBridge 174:b96e65c34a4d 64 #define LCD_CPUMP_DIV2 ((uint32_t) 0x00000800) /*!< Clock source (32 or 10KHz) divide by 2 */
AnnaBridge 174:b96e65c34a4d 65 #define LCD_CPUMP_DIV4 ((uint32_t) 0x00001000) /*!< Clock source (32 or 10KHz) divide by 4 */
AnnaBridge 174:b96e65c34a4d 66 #define LCD_CPUMP_DIV8 ((uint32_t) 0x00001800) /*!< Clock source (32 or 10KHz) divide by 8 */
AnnaBridge 174:b96e65c34a4d 67 #define LCD_CPUMP_DIV16 ((uint32_t) 0x00002000) /*!< Clock source (32 or 10KHz) divide by 16 */
AnnaBridge 174:b96e65c34a4d 68 #define LCD_CPUMP_DIV32 ((uint32_t) 0x00002800) /*!< Clock source (32 or 10KHz) divide by 32 */
AnnaBridge 174:b96e65c34a4d 69 #define LCD_CPUMP_DIV64 ((uint32_t) 0x00003000) /*!< Clock source (32 or 10KHz) divide by 64 */
AnnaBridge 174:b96e65c34a4d 70 #define LCD_CPUMP_DIV128 ((uint32_t) 0x00003800) /*!< Clock source (32 or 10KHz) divide by 128 */
AnnaBridge 174:b96e65c34a4d 71
AnnaBridge 174:b96e65c34a4d 72 #define LCD_CPVOl_2_6V ((uint32_t) 0x00000000) /*!< Set charge pump voltage to 2.6 V */
AnnaBridge 174:b96e65c34a4d 73 #define LCD_CPVOl_2_7V ((uint32_t) 0x00000100) /*!< Set charge pump voltage to 2.7 V */
AnnaBridge 174:b96e65c34a4d 74 #define LCD_CPVOl_2_8V ((uint32_t) 0x00000200) /*!< Set charge pump voltage to 2.8 V */
AnnaBridge 174:b96e65c34a4d 75 #define LCD_CPVOl_2_9V ((uint32_t) 0x00000300) /*!< Set charge pump voltage to 2.9 V */
AnnaBridge 174:b96e65c34a4d 76 #define LCD_CPVOl_3V ((uint32_t) 0x00000400) /*!< Set charge pump voltage to 3 V */
AnnaBridge 174:b96e65c34a4d 77 #define LCD_CPVOl_3_1V ((uint32_t) 0x00000500) /*!< Set charge pump voltage to 3.1 V */
AnnaBridge 174:b96e65c34a4d 78 #define LCD_CPVOl_3_2V ((uint32_t) 0x00000600) /*!< Set charge pump voltage to 3.2 V */
AnnaBridge 174:b96e65c34a4d 79 #define LCD_CPVOl_3_3V ((uint32_t) 0x00000700) /*!< Set charge pump voltage to 3.3 V */
AnnaBridge 174:b96e65c34a4d 80
AnnaBridge 174:b96e65c34a4d 81 #define LCD_FCPRESC_DIV1 ((uint32_t) 0x00000000) /*!< Set pre-scale divider value to 1 */
AnnaBridge 174:b96e65c34a4d 82 #define LCD_FCPRESC_DIV2 ((uint32_t) 0x00000004) /*!< Set pre-scale divider value to 2 */
AnnaBridge 174:b96e65c34a4d 83 #define LCD_FCPRESC_DIV4 ((uint32_t) 0x00000008) /*!< Set pre-scale divider value to 4 */
AnnaBridge 174:b96e65c34a4d 84 #define LCD_FCPRESC_DIV8 ((uint32_t) 0x0000000C) /*!< Set pre-scale divider value to 8 */
AnnaBridge 174:b96e65c34a4d 85
AnnaBridge 174:b96e65c34a4d 86 #define LCD_FRAMECOUNT_INT ((uint32_t) 0x00000001) /*!< Indicate frame count interrupt */
AnnaBridge 174:b96e65c34a4d 87 #define LCD_POWERDOWN_INT ((uint32_t) 0x00000002) /*!< Indicate power down interrupt */
AnnaBridge 174:b96e65c34a4d 88 #define LCD_ALL_INT ((uint32_t) 0x00000003) /*!< Indicate frame count & power down interrupt */
AnnaBridge 174:b96e65c34a4d 89
AnnaBridge 174:b96e65c34a4d 90 #define ERR_LCD_CAL_BLINK_FAIL 0xFFFF0000 /*!< Specifies that overflow to calculate the blinking frequency */
AnnaBridge 174:b96e65c34a4d 91
AnnaBridge 174:b96e65c34a4d 92 /*@}*/ /* end of group NANO100_LCD_EXPORTED_CONSTANTS */
AnnaBridge 174:b96e65c34a4d 93
AnnaBridge 174:b96e65c34a4d 94
AnnaBridge 174:b96e65c34a4d 95 /** @addtogroup NANO100_LCD_EXPORTED_STRUCTS LCD Exported Structs
AnnaBridge 174:b96e65c34a4d 96 @{
AnnaBridge 174:b96e65c34a4d 97 */
AnnaBridge 174:b96e65c34a4d 98 typedef enum {
AnnaBridge 174:b96e65c34a4d 99 LCD_C_TYPE = 0, /*!< Select LCD C-Type */
AnnaBridge 174:b96e65c34a4d 100 LCD_EXTERNAL_R_TYPE = 1, /*!< Select LCD External R-Type */
AnnaBridge 174:b96e65c34a4d 101 LCD_INTERNAL_R_TYPE = 2, /*!< Select LCD Internal R-Type */
AnnaBridge 174:b96e65c34a4d 102 LCD_EXTERNAL_C_TYPE = 3 /*!< Select LCD External C-Type */
AnnaBridge 174:b96e65c34a4d 103 } LCD_PanelType;
AnnaBridge 174:b96e65c34a4d 104
AnnaBridge 174:b96e65c34a4d 105 /*@}*/ /* end of group NANO100_LCD_EXPORTED_STRUCTS */
AnnaBridge 174:b96e65c34a4d 106
AnnaBridge 174:b96e65c34a4d 107
AnnaBridge 174:b96e65c34a4d 108 /** @addtogroup NANO100_LCD_EXPORTED_FUNCTIONS LCD Exported Functions
AnnaBridge 174:b96e65c34a4d 109 @{
AnnaBridge 174:b96e65c34a4d 110 */
AnnaBridge 174:b96e65c34a4d 111
AnnaBridge 174:b96e65c34a4d 112 /**
AnnaBridge 174:b96e65c34a4d 113 * @brief Get LCD Power Down interrupt flag.
AnnaBridge 174:b96e65c34a4d 114 *
AnnaBridge 174:b96e65c34a4d 115 * @param None
AnnaBridge 174:b96e65c34a4d 116 *
AnnaBridge 174:b96e65c34a4d 117 * @return LCD Power Down interrupt Flag.
AnnaBridge 174:b96e65c34a4d 118 */
AnnaBridge 174:b96e65c34a4d 119 #define LCD_GET_PD_INT_FLAG() ((LCD->FCSTS & LCD_FCSTS_PDSTS_Msk) >> LCD_FCSTS_PDSTS_Pos)
AnnaBridge 174:b96e65c34a4d 120
AnnaBridge 174:b96e65c34a4d 121 /**
AnnaBridge 174:b96e65c34a4d 122 * @brief Clear LCD Power Down interrupt flag.
AnnaBridge 174:b96e65c34a4d 123 *
AnnaBridge 174:b96e65c34a4d 124 * @param None
AnnaBridge 174:b96e65c34a4d 125 *
AnnaBridge 174:b96e65c34a4d 126 * @return None.
AnnaBridge 174:b96e65c34a4d 127 */
AnnaBridge 174:b96e65c34a4d 128 #define LCD_CLR_PD_INT_FLAG() (LCD->FCSTS = LCD_FCSTS_PDSTS_Msk)
AnnaBridge 174:b96e65c34a4d 129
AnnaBridge 174:b96e65c34a4d 130 /**
AnnaBridge 174:b96e65c34a4d 131 * @brief Get LCD Frame Count interrupt flag.
AnnaBridge 174:b96e65c34a4d 132 *
AnnaBridge 174:b96e65c34a4d 133 * @param None
AnnaBridge 174:b96e65c34a4d 134 *
AnnaBridge 174:b96e65c34a4d 135 * @return LCD Frame Count interrupt Flag.
AnnaBridge 174:b96e65c34a4d 136 */
AnnaBridge 174:b96e65c34a4d 137 #define LCD_GET_FRAME_CNT_INT_FLAG() ((LCD->FCSTS & LCD_FCSTS_FCSTS_Msk) >> LCD_FCSTS_FCSTS_Pos)
AnnaBridge 174:b96e65c34a4d 138
AnnaBridge 174:b96e65c34a4d 139 /**
AnnaBridge 174:b96e65c34a4d 140 * @brief Clear LCD Frame Count interrupt flag.
AnnaBridge 174:b96e65c34a4d 141 *
AnnaBridge 174:b96e65c34a4d 142 * @param None
AnnaBridge 174:b96e65c34a4d 143 *
AnnaBridge 174:b96e65c34a4d 144 * @return None.
AnnaBridge 174:b96e65c34a4d 145 */
AnnaBridge 174:b96e65c34a4d 146 #define LCD_CLR_FRAME_CNT_INT_FLAG() (LCD->FCSTS = LCD_FCSTS_FCSTS_Msk)
AnnaBridge 174:b96e65c34a4d 147
AnnaBridge 174:b96e65c34a4d 148 /**
AnnaBridge 174:b96e65c34a4d 149 * @brief Enable LCD Power Down Display function.
AnnaBridge 174:b96e65c34a4d 150 *
AnnaBridge 174:b96e65c34a4d 151 * @param None
AnnaBridge 174:b96e65c34a4d 152 *
AnnaBridge 174:b96e65c34a4d 153 * @return None.
AnnaBridge 174:b96e65c34a4d 154 */
AnnaBridge 174:b96e65c34a4d 155 #define LCD_ENABLE_PD_DISPLAY() (LCD->CTL |= LCD_CTL_PDDISP_EN_Msk)
AnnaBridge 174:b96e65c34a4d 156
AnnaBridge 174:b96e65c34a4d 157 /**
AnnaBridge 174:b96e65c34a4d 158 * @brief Disable LCD Power Down Display function.
AnnaBridge 174:b96e65c34a4d 159 *
AnnaBridge 174:b96e65c34a4d 160 * @param None
AnnaBridge 174:b96e65c34a4d 161 *
AnnaBridge 174:b96e65c34a4d 162 * @return None.
AnnaBridge 174:b96e65c34a4d 163 */
AnnaBridge 174:b96e65c34a4d 164 #define LCD_DISABLE_PD_DISPLAY() (LCD->CTL &= ~LCD_CTL_PDDISP_EN_Msk)
AnnaBridge 174:b96e65c34a4d 165
AnnaBridge 174:b96e65c34a4d 166 uint32_t LCD_EnableFrameCounter(uint32_t u32Count);
AnnaBridge 174:b96e65c34a4d 167 void LCD_DisableFrameCounter(void);
AnnaBridge 174:b96e65c34a4d 168 uint32_t LCD_EnableBlink(uint32_t u32ms);
AnnaBridge 174:b96e65c34a4d 169 void LCD_DisableBlink(void);
AnnaBridge 174:b96e65c34a4d 170 void LCD_EnableInt(uint32_t IntSrc);
AnnaBridge 174:b96e65c34a4d 171 void LCD_DisableInt(uint32_t IntSrc);
AnnaBridge 174:b96e65c34a4d 172 uint32_t LCD_Open(uint32_t u32DrivingType, uint32_t u32ComNum, uint32_t u32BiasLevel, uint32_t u32FramerateDiv, uint32_t u32DrivingVol);
AnnaBridge 174:b96e65c34a4d 173 void LCD_SetPixel(uint32_t u32Com, uint32_t u32Seg, uint32_t u32OnFlag);
AnnaBridge 174:b96e65c34a4d 174 void LCD_SetAllPixels(uint32_t u32OnOff);
AnnaBridge 174:b96e65c34a4d 175 void LCD_Close(void);
AnnaBridge 174:b96e65c34a4d 176
AnnaBridge 174:b96e65c34a4d 177 /**
AnnaBridge 174:b96e65c34a4d 178 * @brief Enable LCD controller
AnnaBridge 174:b96e65c34a4d 179 *
AnnaBridge 174:b96e65c34a4d 180 * @param None
AnnaBridge 174:b96e65c34a4d 181 *
AnnaBridge 174:b96e65c34a4d 182 * @return None
AnnaBridge 174:b96e65c34a4d 183 *
AnnaBridge 174:b96e65c34a4d 184 */
AnnaBridge 174:b96e65c34a4d 185 static __INLINE void LCD_EnableDisplay(void)
AnnaBridge 174:b96e65c34a4d 186 {
AnnaBridge 174:b96e65c34a4d 187 /* Enable LCD */
AnnaBridge 174:b96e65c34a4d 188 LCD->CTL |= LCD_CTL_EN_Msk;
AnnaBridge 174:b96e65c34a4d 189 }
AnnaBridge 174:b96e65c34a4d 190
AnnaBridge 174:b96e65c34a4d 191 /**
AnnaBridge 174:b96e65c34a4d 192 * @brief Disable LCD controller
AnnaBridge 174:b96e65c34a4d 193 *
AnnaBridge 174:b96e65c34a4d 194 * @param None
AnnaBridge 174:b96e65c34a4d 195 *
AnnaBridge 174:b96e65c34a4d 196 * @return None
AnnaBridge 174:b96e65c34a4d 197 *
AnnaBridge 174:b96e65c34a4d 198 */
AnnaBridge 174:b96e65c34a4d 199 static __INLINE void LCD_DisableDisplay(void)
AnnaBridge 174:b96e65c34a4d 200 {
AnnaBridge 174:b96e65c34a4d 201 /* Enable LCD */
AnnaBridge 174:b96e65c34a4d 202 LCD->CTL &= ~LCD_CTL_EN_Msk;
AnnaBridge 174:b96e65c34a4d 203 }
AnnaBridge 174:b96e65c34a4d 204
AnnaBridge 174:b96e65c34a4d 205
AnnaBridge 174:b96e65c34a4d 206
AnnaBridge 174:b96e65c34a4d 207 /*@}*/ /* end of group NANO100_LCD_EXPORTED_FUNCTIONS */
AnnaBridge 174:b96e65c34a4d 208
AnnaBridge 174:b96e65c34a4d 209
AnnaBridge 174:b96e65c34a4d 210 /*@}*/ /* end of group NANO100_LCD_Driver */
AnnaBridge 174:b96e65c34a4d 211
AnnaBridge 174:b96e65c34a4d 212 /*@}*/ /* end of group NANO100_Device_Driver */
AnnaBridge 174:b96e65c34a4d 213
AnnaBridge 174:b96e65c34a4d 214
AnnaBridge 174:b96e65c34a4d 215 #ifdef __cplusplus
AnnaBridge 174:b96e65c34a4d 216 }
AnnaBridge 174:b96e65c34a4d 217 #endif
AnnaBridge 174:b96e65c34a4d 218
AnnaBridge 174:b96e65c34a4d 219 #endif /* __LCD_H__ */
AnnaBridge 174:b96e65c34a4d 220
AnnaBridge 174:b96e65c34a4d 221
AnnaBridge 174:b96e65c34a4d 222
AnnaBridge 174:b96e65c34a4d 223 /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/
AnnaBridge 174:b96e65c34a4d 224
AnnaBridge 174:b96e65c34a4d 225