CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Source/ciu32l051_std_lcd.c

131 lines
3.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/************************************************************************************************/
/**
* @file ciu32l051_std_lcd.c
* @author MCU Ecosystem Development Team
* @brief LCD STD库驱动。
* 实现LCD初始化等API。
*
*
**************************************************************************************************
* @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初始化
* @param lcd_init_param LCD 初始化结构体
* @retval 无
*/
void std_lcd_init(std_lcd_init_t *lcd_init_param)
{
/* 禁止LCD */
std_lcd_disable();
/* 判断LCD为禁止状态 */
while(std_lcd_get_flag(LCD_FLAG_ENS))
{
}
/* 配置LCD区段多路复用
配置LCD占空比
配置LCD偏置
配置LCD驱动模式
*/
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显示帧速率PS和DIV
配置LCD驱动能力
配置LCD脉冲持续时间
配置VLCD输出电压档位
*/
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外设使能 */
std_lcd_enable();
}
/**
* @brief LCD去初始化
* @retval 无
*/
void std_lcd_deinit(void)
{
/* LCD外设禁止 */
std_lcd_disable();
/* 判断LCD外设禁止状态*/
while(std_lcd_get_flag(LCD_FLAG_ENS))
{
}
/* 复位LCD */
std_rcc_apb1_reset(RCC_PERIPH_RESET_LCD);
/* 禁止LCD外设时钟 */
std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_LCD);
}
/**
* @brief LCD 结构体初始化
* @param lcd_init_struct LCD 初始化结构体
* @retval 无
*/
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 */
/**
* @}
*/
/**
* @}
*/