HAL_LCD.h 20.9 KB
Newer Older
Z
ze9hyr 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
/*
  ******************************************************************************
  * @file    HAL_LCD.h
  * @version V1.0.0
  * @date    2020
  * @brief   Header file of lcd HAL module.
  ******************************************************************************
*/
#ifndef __HAL_LCD_H__
#define __HAL_LCD_H__

#include "ACM32Fxx_HAL.h"

/******************************************************************************/
/*                                                                            */
/*                          LCD Controller (LCD)                              */
/*                                                                            */
/******************************************************************************/


/******************************************************************************/
/*                    Peripheral Registers Bits Definition                    */
/******************************************************************************/

/*******************  Bit definition for LCD_CR0 register  *********************/
#define LCD_CR0_LCDEN_Pos              (0U)
#define LCD_CR0_LCDEN_Msk             (0x1UL << LCD_CR0_LCDEN_Pos)
#define LCD_CR0_LCDEN                 LCD_CR0_LCDEN_Msk

#define LCD_CR0_LCDCLK_Pos             (1U)
#define LCD_CR0_LCDCLK_Msk             (0x7UL << LCD_CR0_LCDCLK_Pos)
#define LCD_CR0_LCDCLK                  LCD_CR0_LCDCLK_Msk
#define LCD_CR0_LCDCLK_0               (0x1UL << LCD_CR0_LCDCLK_Pos)
#define LCD_CR0_LCDCLK_1               (0x2UL << LCD_CR0_LCDCLK_Pos)

#define LCD_CR0_STATIC_Pos            (4U)
#define LCD_CR0_STATIC_Msk            (0x1UL << LCD_CR0_STATIC_Pos)
#define LCD_CR0_STATIC                LCD_CR0_STATIC_Msk

#define LCD_CR0_BIAS_Pos             (5U)
#define LCD_CR0_BIAS_Msk             (0x3UL << LCD_CR0_BIAS_Pos)
#define LCD_CR0_BIAS                 LCD_CR0_BIAS_Msk
#define LCD_CR0_BIAS_0               (0x1UL << LCD_CR0_BIAS_Pos)
#define LCD_CR0_BIAS_1               (0x2UL << LCD_CR0_BIAS_Pos)

#define LCD_CR0_DUTY_Pos             (7U)
#define LCD_CR0_DUTY_Msk             (0x7UL << LCD_CR0_DUTY_Pos)
#define LCD_CR0_DUTY                 LCD_CR0_DUTY_Msk
#define LCD_CR0_DUTY_0               (0x1UL << LCD_CR0_DUTY_Pos)
#define LCD_CR0_DUTY_1               (0x2UL << LCD_CR0_DUTY_Pos)
#define LCD_CR0_DUTY_2               (0x4UL << LCD_CR0_DUTY_Pos)

#define LCD_CR0_MOD_Pos             (11U)
#define LCD_CR0_MOD_Msk             (0x3UL << LCD_CR0_MOD_Pos)
#define LCD_CR0_MOD                 LCD_CR0_MOD_Msk
#define LCD_CR0_MOD_0               (0x1UL << LCD_CR0_MOD_Pos)
#define LCD_CR0_MOD_1               (0x2UL << LCD_CR0_MOD_Pos)

#define LCD_CR0_CONTRAST_Pos             (13U)
#define LCD_CR0_CONTRAST_Msk             (0xfUL << LCD_CR0_CONTRAST_Pos)
#define LCD_CR0_CONTRAST                 LCD_CR0_CONTRAST_Msk
#define LCD_CR0_CONTRAST_0               (0x1UL << LCD_CR0_CONTRAST_Pos)
#define LCD_CR0_CONTRAST_1               (0x2UL << LCD_CR0_CONTRAST_Pos)
#define LCD_CR0_CONTRAST_2               (0x4UL << LCD_CR0_CONTRAST_Pos)
#define LCD_CR0_CONTRAST_3               (0x8UL << LCD_CR0_CONTRAST_Pos)

#define LCD_CR0_WSEL_Pos                (17U)
#define LCD_CR0_WSEL_Msk                (0x1UL << LCD_CR0_WSEL_Pos)
#define LCD_CR0_WSEL                     LCD_CR0_WSEL_Msk

/*******************  Bit definition for LCD_CR1 register  *********************/
#define LCD_CR1_BLINKCNT_Pos             (0U)
#define LCD_CR1_BLINKCNT_Msk             (0x3FUL << LCD_CR1_BLINKCNT_Pos)
#define LCD_CR1_BLINKCNT                  LCD_CR1_BLINKCNT_Msk


#define LCD_CR1_BLINKEN_Pos             (6U)
#define LCD_CR1_BLINKEN_Msk             (0x1UL << LCD_CR1_BLINKEN_Pos)
#define LCD_CR1_BLINKEN                  LCD_CR1_BLINKEN_Msk

#define LCD_CR1_MODE_Pos             (8U)
#define LCD_CR1_MODE_Msk             (0x1UL << LCD_CR1_MODE_Pos)
#define LCD_CR1_MODE                  LCD_CR1_MODE_Msk

#define LCD_CR1_IE_Pos             (9U)
#define LCD_CR1_IE_Msk             (0x1UL << LCD_CR1_IE_Pos)
#define LCD_CR1_IE                  LCD_CR1_IE_Msk

#define LCD_CR1_DMAEN_Pos             (10U)
#define LCD_CR1_DMAEN_Msk             (0x1UL << LCD_CR1_DMAEN_Pos)
#define LCD_CR1_DMAEN                  LCD_CR1_DMAEN_Msk

#define LCD_CR1_INTF_Pos             (11U)
#define LCD_CR1_INTF_Msk             (0x1UL << LCD_CR1_INTF_Pos)
#define LCD_CR1_INTF                  LCD_CR1_INTF_Msk

#define LCD_CR1_FCC_Pos             (12U)
#define LCD_CR1_FCC_Msk             (0x1UL << LCD_CR1_FCC_Pos)
#define LCD_CR1_FCC                  LCD_CR1_FCC_Msk

#define LCD_CR1_MODSEL_Pos             (13U)
#define LCD_CR1_MODSEL_Msk             (0x3UL << LCD_CR1_MODSEL_Pos)
#define LCD_CR1_MODSEL                  LCD_CR1_MODSEL_Msk
#define LCD_CR1_MODSEL_0               (0x1UL << LCD_CR1_MODSEL_Pos)
#define LCD_CR1_MODSEL_1               (0x2UL << LCD_CR1_MODSEL_Pos)

#define LCD_CR1_RSEL_Pos             (15U)
#define LCD_CR1_RSEL_Msk             (0x1UL << LCD_CR1_RSEL_Pos)
#define LCD_CR1_RSEL                  LCD_CR1_RSEL_Msk

#define LCD_CR1_PON_Pos              (13U)
#define LCD_CR1_PON_Msk              (0x3fUL << LCD_CR1_PON_Pos)
#define LCD_CR1_PON                  LCD_CR1_PON_Msk

/*******************  Bit definition for LCD_CR1 register  *********************/
#define LCD_INTCLR_INTF_Pos             (10U)
#define LCD_INTCLR_INTF_Msk             (0x1UL << LCD_INTCLR_INTF_Pos)
#define LCD_INTCLR_INTFT                  LCD_INTCLR_INTF_Msk



/**
  * @brief LCD SegCom Init structure definition
  */
typedef struct
{
    uint32_t SEG0_31;      /*!< Configures the SEG0 to SEG31 Enable or Disable.
                            This parameter can be a value between 0x0 and 0xFFFFFFFF */
    union{
            uint32_t SEG32_39_COM0_8;   /*!< Configures the SEG32-35 and COM0-8 Enable or Disable.
                                        This parameter can be a value between 0x0 and 0xFFF */
            struct
            {
                uint32_t SEG32_35      :4;  /*!< Configures the SEG32-35 Enable or Disable.
                                            This parameter can be a value between 0x0 and 0xF */
                uint32_t SEG36_COM7    :1;  /*!< Configures the SEG36/COM7 Enable or Disable.  */
                uint32_t SEG37_COM6    :1;  /*!< Configures the SEG37/COM6 Enable or Disable.  */
                uint32_t SEG38_COM5    :1;  /*!< Configures the SEG38/COM5 Enable or Disable.  */
                uint32_t SEG39_COM4    :1;  /*!< Configures the SEG39/COM4 Enable or Disable.  */
                uint32_t COM0_3        :4;  /*!< Configures the COM0-3 Enable or Disable.
                                            This parameter can be a value between 0x0 and 0xF */
            }SEGCOM_bit;
    }Stc_SEG32_39_COM0_8;
}LCD_SegComInitTypeDef;


/**
  * @brief LCD Init structure definition
  */

typedef struct
{
  uint32_t PONTime;         /*!< Configures the Pulse ON duration time.
                            This parameter can be a value between 0x00 and 0x3F */
  uint32_t BiasRes;        /*!< Configures the LCD BiasRes.
                                 This parameter can be one value of @ref BiasRes */
  uint32_t DriveMod;    /*!< Configures the LCD DriveMod.
                                 This parameter can be one value of @ref DriveMod */
  uint32_t FastCharge;     /*!< Configures the LCD FastCharge.
                                 This parameter can be one value of @ref FastCharge */
  uint32_t Contrast;        /*!< Configures the LCD Contrast.
                                 This parameter can be one value of @ref LCD_Contrast */

}LCD_InResInitTypeDef;
/**
  * @brief LCD Init structure definition
  */

typedef struct
{
  uint32_t Duty;            /*!< Configures the LCD Duty.
                                 This parameter can be one value of @ref LCD_Duty */
  uint32_t Bias;            /*!< Configures the LCD Bias.
                                 This parameter can be one value of @ref LCD_Bias */
  uint32_t Driving_Waveform; /*!< Configures the LCD Drive Waveform.
                                 This parameter can be one value of @ref Driving_Waveform */

  uint32_t BiasSrc;                  /*!< Configures the LCD Bias Src.
                                 This parameter can be one value of @ref BiasSrc*/

  uint32_t DisplayMode;      /*!< Configures the LCD DisplayMode.
                                 This parameter can be one value of @ref DisplayMode*/

  uint32_t StaticPower;   /*!< Configures the LCD StaticPower.
                                 This parameter can be one value of @ref StaticPower*/

  uint32_t LCDFrequency;  /*!< Configures the LCD LCDFrequency.
                                 This parameter can be one value of @ref LCDFrequency*/

  uint32_t BlinkEN;           /*!< Configures the LCD BlinkEN.
                                 This parameter can be one value of @ref BlinkEN */

  uint32_t BlinkFrequency;  /*!< Configures the LCD Blink frequency.
                            This parameter can be a value between 0x00 and 0x3F */
}LCD_InitTypeDef;


/**
  * @brief  LCD handle Structure definition
  */
typedef struct
{
  LCD_TypeDef                   *Instance;  /* LCD registers base address */

  LCD_InitTypeDef               Init;       /* LCD communication parameters */

  DMA_HandleTypeDef           *DMA_Handle;                 /*!< UART Rx DMA handle parameters */
}LCD_HandleTypeDef;


#define IS_LCD_PERIPH(PERIPH) (((PERIPH) == LCD))

/** @defgroup LCD_Duty LCD Duty
  * @{
  */

#define LCD_DUTY_STATIC                 ((uint32_t)0x00000000U)                                     /*!< Static duty */
#define LCD_DUTY_1_2                    LCD_CR0_DUTY_0                                            /*!< 1/2 duty    */
#define LCD_DUTY_1_3                    LCD_CR0_DUTY_1                                            /*!< 1/3 duty    */
#define LCD_DUTY_1_4                    ((LCD_CR0_DUTY_1 | LCD_CR0_DUTY_0))                         /*!< 1/4 duty    */
#define LCD_DUTY_1_6                    ((LCD_CR0_DUTY_2 | LCD_CR0_DUTY_0))                         /*!< 1/6 duty    */
#define LCD_DUTY_1_8                    ((LCD_CR0_DUTY_2 | LCD_CR0_DUTY_1 | LCD_CR0_DUTY_0))      /*!< 1/8 duty    */

#define IS_LCD_DUTY(DUTY)      (((DUTY) == LCD_DUTY_STATIC)  || \
                               ((DUTY) == LCD_DUTY_1_2)     || \
                               ((DUTY) == LCD_DUTY_1_3)     || \
                               ((DUTY) == LCD_DUTY_1_4)     || \
                               ((DUTY) == LCD_DUTY_1_6)     || \
                               ((DUTY) == LCD_DUTY_1_8))

/**
  * @}
  */

 /**
  * @}
  */


/** @defgroup LCD_Bias LCD Bias
  * @{
  */

#define LCD_BIAS_1_4                    ((uint32_t)0x00000000U) /*!< 1/4 Bias */
#define LCD_BIAS_1_2                    LCD_CR0_BIAS_0           /*!< 1/2 Bias */
#define LCD_BIAS_1_3                    LCD_CR0_BIAS_1           /*!< 1/3 Bias */

#define IS_LCD_BIAS(__BIAS__) (((__BIAS__) == LCD_BIAS_1_4) || \
                               ((__BIAS__) == LCD_BIAS_1_2) || \
                               ((__BIAS__) == LCD_BIAS_1_3))
/**
  * @}
  */

 /** @defgroup Driving_Waveform  Driving_Waveform
  * @{
  */

#define LCD_Driving_Waveform_A                    ((uint32_t)0x00000000U) /*!< A类波形*/
#define LCD_Driving_Waveform_B                     LCD_CR0_WSEL           /*!< B类波形 */
#define IS_LCD_Driving_Waveform(__Driving_Waveform__)         (((__Driving_Waveform__) == LCD_Driving_Waveform_A) || \
                                                                ((__Driving_Waveform__) == LCD_Driving_Waveform_B))
/**
  * @}
  */

  /** @defgroup BiasSrc
  * @{
  */

#define LCD_BiasSrc_InRes_Seg31_35_Normal                   ((uint32_t)0x00000000U) /*!< LCD Bias来源:内部电阻分压,且SEG31-35可以作为SEG/IO*/
#define LCD_BiasSrc_InRes_Seg31_35_Cap                      LCD_CR0_MOD_0           /*!< LCD Bias来源:内部电阻分压,且SEG31-35用于外接电容滤波,SEG/IO功能关闭 */
#define LCD_BiasSrc_ExRes_Seg31_35_Cap                      LCD_CR0_MOD_1           /*!< LCD Bias来源:外部电阻分压,且SEG31-35用于外接分压电阻和滤波电容,SEG/IO功能关闭 */
#define IS_LCD_BiasSrc(__BiasSrc__)                         (((__BiasSrc__) == LCD_BiasSrc_InRes_Seg31_35_Normal) || \
                                                          ((__BiasSrc__) == LCD_BiasSrc_InRes_Seg31_35_Cap)||\
                                                          ((__BiasSrc__) == LCD_BiasSrc_ExRes_Seg31_35_Cap))
/**
  * @}
  */

  /** @defgroup DisplayMode
  * @{
  */

#define LCD_DisplayMode_0                        ((uint32_t)0x00000000U) /*!< LCD RAM显示模式0*/
#define LCD_DisplayMode_1                          LCD_CR1_MODE           /*!< LCD RAM显示模式1 */
#define IS_LCD_DisplayMode(__DisplayMode__)                         (((__DisplayMode__) == LCD_DisplayMode_0)||\
                                                                    ((__DisplayMode__) == LCD_DisplayMode_1))
/**
  * @}
  */


    /** @defgroup StaticPower
  * @{
  */

#define LCD_StaticPower_NormalPower                                 ((uint32_t)0x00000000U) /*!< LCD RAM显示模式0*/
#define LCD_StaticPower_LowPower                                     LCD_CR0_STATIC           /*!< LCD RAM显示模式1 */
#define IS_LCD_StaticPower(__StaticPower__)                         (((__StaticPower__) == LCD_StaticPower_NormalPower) || \
                                                                    ((__StaticPower__) == LCD_StaticPower_LowPower))
/**
  * @}
  */


/** @defgroup LCDFrequency
  * @{
  */

#define LCD_LCDFrequency_64HZ                                    ((uint32_t)0x00000000U)           /*!< LCD扫描频率选择*/
#define LCD_LCDFrequency_128HZ                                     LCD_CR0_LCDCLK_0           /*!< LCD扫描频率选择 */
#define LCD_LCDFrequency_256HZ                                     LCD_CR0_LCDCLK_1           /*!< LCD扫描频率选择 */
#define LCD_LCDFrequency_512HZ                                     ((LCD_CR0_LCDCLK_0 | LCD_CR0_LCDCLK_1))           /*!< LCD扫描频率选择*/
#define IS_LCD_LCDFrequency(__LCDFrequency__)                      (((__LCDFrequency__) == LCD_LCDFrequency_64HZ) || \
                                                                    ((__LCDFrequency__) == LCD_LCDFrequency_128HZ)||\
                                                                    ((__LCDFrequency__) == LCD_LCDFrequency_256HZ)||\
                                                                    ((__LCDFrequency__) == LCD_LCDFrequency_512HZ))
/**
  * @}
  */

 /** @defgroup BlinkEN
  * @{
  */
#define LCD_BlinkEN_Disable                                 ((uint32_t)0x00000000U)     /*!<LCD闪屏配置使能*/
#define LCD_BlinkEN_Enable                                     LCD_CR1_BLINKEN           /*!< LCD闪屏配置使能 */
#define IS_LCD_BlinkEN(__BlinkEN__)                         (((__BlinkEN__) == LCD_BlinkEN_Disable) || \
                                                             ((__BlinkEN__) == LCD_BlinkEN_Enable))
/**
  * @}
  */
#define IS_LCD_BlinkFrequency(__BlinkFrequency__)           ((__BlinkFrequency__)<= ((uint8_t)0x3F)) /*!<LCD闪屏配置*/

 /** @defgroup BiasRes
  * @{
  */
#define LCD_BiasRes_240k                                    ((uint32_t)0x00000000U)     /*!<LCD闪屏配置使能*/
#define LCD_BiasRes_4M                                       LCD_CR1_RSEL           /*!< LCD闪屏配置使能 */
#define IS_LCD_BiasRes(__BiasRes__)                         (((__BiasRes__) == LCD_BiasRes_240k) || \
                                                             ((__BiasRes__) == LCD_BiasRes_4M))
/**
  * @}
  */

  /** @defgroup DriveMod
  * @{
  */
#define LCD_DriveMod_Res240k4M                                    ((uint32_t)0x00000000U)     /*!<LCD闪屏配置使能*/
#define LCD_DriveMod_Res60k                                       LCD_CR1_MODSEL_0           /*!< LCD闪屏配置使能 */
#define LCD_DriveMod_FC                                        LCD_CR1_MODSEL_1           /*!< LCD闪屏配置使能 */
#define IS_LCD_DriveMod(__DriveMod__)                         (((__DriveMod__) == LCD_DriveMod_Res240k4M) || \
                                                             ((__DriveMod__) == LCD_DriveMod_Res60k)|| \
                                                             ((__DriveMod__) == LCD_DriveMod_FC))
/**
  * @}
  */


 /** @defgroup FastCharge
  * @{
  */
#define LCD_FastCharge_Disable                                 ((uint32_t)0x00000000U)     /*!<LCD闪屏配置使能*/
#define LCD_FastCharge_Enable                                     LCD_CR1_FCC           /*!< LCD闪屏配置使能 */
#define IS_LCD_FastCharge(__FastCharge__)                         (((__FastCharge__) == LCD_FastCharge_Disable) || \
                                                                    ((__FastCharge__) == LCD_FastCharge_Enable))
/**
  * @}
  */

 /** @defgroup LCD_Contrast
  * @{
  */
#define LCD_Contrast_531VDD                                     ((uint32_t)0x00000000U)    /*!<LCD对比度调整*/
#define LCD_Contrast_562VDD                                       (LCD_CR0_CONTRAST_0)
#define LCD_Contrast_593VDD                                       (LCD_CR0_CONTRAST_1)
#define LCD_Contrast_623VDD                                       (LCD_CR0_CONTRAST_1|LCD_CR0_CONTRAST_0)
#define LCD_Contrast_654VDD                                        (LCD_CR0_CONTRAST_2)
#define LCD_Contrast_686VDD                                        (LCD_CR0_CONTRAST_2|LCD_CR0_CONTRAST_0)
#define LCD_Contrast_717VDD                                        (LCD_CR0_CONTRAST_2|LCD_CR0_CONTRAST_1)
#define LCD_Contrast_748VDD                                        (LCD_CR0_CONTRAST_2|LCD_CR0_CONTRAST_1|LCD_CR0_CONTRAST_0)
#define LCD_Contrast_778VDD                                        (LCD_CR0_CONTRAST_3)
#define LCD_Contrast_810VDD                                        (LCD_CR0_CONTRAST_3|LCD_CR0_CONTRAST_0)
#define LCD_Contrast_840VDD                                        (LCD_CR0_CONTRAST_3|LCD_CR0_CONTRAST_1)
#define LCD_Contrast_871VDD                                        (LCD_CR0_CONTRAST_3|LCD_CR0_CONTRAST_1|LCD_CR0_CONTRAST_0)
#define LCD_Contrast_903VDD                                        (LCD_CR0_CONTRAST_3|LCD_CR0_CONTRAST_2)
#define LCD_Contrast_939VDD                                        (LCD_CR0_CONTRAST_3|LCD_CR0_CONTRAST_2|LCD_CR0_CONTRAST_0)
#define LCD_Contrast_969VDD                                        (LCD_CR0_CONTRAST_3|LCD_CR0_CONTRAST_2|LCD_CR0_CONTRAST_1)
#define LCD_Contrast_1000VDD                                       (LCD_CR0_CONTRAST_3|LCD_CR0_CONTRAST_2|LCD_CR0_CONTRAST_1|LCD_CR0_CONTRAST_0)

#define IS_LCD_Contrast(__Contrast__)                         (((__Contrast__) == LCD_Contrast_531VDD) || \
                                                             ((__Contrast__) == LCD_Contrast_562VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_593VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_623VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_654VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_686VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_717VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_748VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_778VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_810VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_840VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_871VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_903VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_939VDD)|| \
                                                             ((__Contrast__) == LCD_Contrast_969VDD)| \
                                                             ((__Contrast__) == LCD_Contrast_1000VDD))


/**
  * @}
  */

#define IS_LCD_PONTime(__PONTime__)                         ((__PONTime__) <= ((uint32_t)0x3F))

/**
  * @}
  */


void HAL_LCD_MspInit(LCD_HandleTypeDef *hlcd);

void HAL_LCD_MspDeInit(LCD_HandleTypeDef *hlcd);

HAL_StatusTypeDef HAL_LCD_Init(LCD_HandleTypeDef *hlcd);

HAL_StatusTypeDef HAL_LCD_DeInit(LCD_HandleTypeDef *hlcd);

HAL_StatusTypeDef HAL_LCD_InResConfig(LCD_HandleTypeDef *hlcd,LCD_InResInitTypeDef* LCD_InResInitStruct);

HAL_StatusTypeDef HAL_LCD_SegComConfig(LCD_HandleTypeDef *hlcd,LCD_SegComInitTypeDef *SegCom);

HAL_StatusTypeDef HAL_LCD_Write(LCD_HandleTypeDef *hlcd, uint32_t LCDRAMIndex, uint32_t Data);

HAL_StatusTypeDef HAL_LCD_Clear(LCD_HandleTypeDef *hlcd);

HAL_StatusTypeDef HAL_LCD_Start_DMA(LCD_HandleTypeDef *hlcd, uint32_t *pData, uint32_t Length);

HAL_StatusTypeDef HAL_LCD_Stop_DMA(LCD_HandleTypeDef *hlcd);

void HAL_LCD_IRQHandler(LCD_HandleTypeDef *hlcd);

#endif