131 lines
3.4 KiB
C
131 lines
3.4 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file ciu32l051_std_lcd.c
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief LCD STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* ʵ<EFBFBD><EFBFBD>LCD<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
* @attention
|
|||
|
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup CIU32L051_STD_Driver
|
|||
|
* @{
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @addtogroup LCD
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
|
|||
|
/*------------------------------------------includes--------------------------------------------*/
|
|||
|
#include "ciu32l051_std.h"
|
|||
|
|
|||
|
|
|||
|
#ifdef STD_LCD_PERIPHERAL_USED
|
|||
|
|
|||
|
/*------------------------------------------functions------------------------------------------*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup LCD_External_Functions
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief LCD<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @param lcd_init_param LCD <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void std_lcd_init(std_lcd_init_t *lcd_init_param)
|
|||
|
{
|
|||
|
/* <20><>ֹLCD */
|
|||
|
std_lcd_disable();
|
|||
|
/* <20>ж<EFBFBD>LCDΪ<44><CEAA>ֹ״̬ */
|
|||
|
while(std_lcd_get_flag(LCD_FLAG_ENS))
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>LCD<43><44><EFBFBD>ζ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCDռ<EFBFBD>ձ<EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCDƫ<EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
*/
|
|||
|
MODIFY_REG(LCD->CR,
|
|||
|
(LCD_CR_MUX_SEG | LCD_CR_DUTY | LCD_CR_BIAS | LCD_CR_MDSET),
|
|||
|
(lcd_init_param->mux_segment | lcd_init_param->duty | lcd_init_param->bias | lcd_init_param->driver_mode));
|
|||
|
|
|||
|
/* LCD<43><44>ʾ֡<CABE><D6A1><EFBFBD>ʣ<EFBFBD>PS<50><53>DIV
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>VLCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>λ
|
|||
|
*/
|
|||
|
MODIFY_REG(LCD->FCR,
|
|||
|
(LCD_FCR_PS | LCD_FCR_DIV | LCD_FCR_HD | LCD_FCR_PON | LCD_FCR_CC),
|
|||
|
(lcd_init_param->prescaler | lcd_init_param->divider | lcd_init_param->high_drive | lcd_init_param->pulse_on_duration | lcd_init_param->vlcd_voltage));
|
|||
|
|
|||
|
/* LCD<43><44><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
std_lcd_enable();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief LCDȥ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void std_lcd_deinit(void)
|
|||
|
{
|
|||
|
/* LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ */
|
|||
|
std_lcd_disable();
|
|||
|
/* <20>ж<EFBFBD>LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ״̬*/
|
|||
|
while(std_lcd_get_flag(LCD_FLAG_ENS))
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
/* <20><>λLCD */
|
|||
|
std_rcc_apb1_reset(RCC_PERIPH_RESET_LCD);
|
|||
|
|
|||
|
/* <20><>ֹLCD<43><44><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_LCD);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief LCD <EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @param lcd_init_struct LCD <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void std_lcd_struct_init(std_lcd_init_t *lcd_init_struct)
|
|||
|
{
|
|||
|
lcd_init_struct->duty = LCD_DUTY_1_6;
|
|||
|
lcd_init_struct->bias = LCD_BIAS_1_3;
|
|||
|
lcd_init_struct->prescaler = LCD_PRESCALER_4;
|
|||
|
lcd_init_struct->divider = LCD_FCR_DIV21;
|
|||
|
lcd_init_struct->driver_mode = LCD_DRIVER_MODE_CHARGE_PUMP;
|
|||
|
lcd_init_struct->vlcd_voltage = LCD_CHAGE_PUMP_1_3_BIAS_2_55V;
|
|||
|
lcd_init_struct->high_drive = LCD_LOW_DRIVE;
|
|||
|
lcd_init_struct->pulse_on_duration = LCD_PULSE_ON_DURATION_0;
|
|||
|
lcd_init_struct->mux_segment = LCD_MUX_SEGMENT_DISABLE;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#endif /* STD_LCD_PERIPHERAL_USED */
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|