CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Source/ciu32l051_std_lcd.c

131 lines
3.4 KiB
C
Raw Normal View History

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