123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442 |
- /*
- ******************************************************************************
- * @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
|