1,初始化GPIO
2.LTDC初始化
void BSP_LTDC_Init(void)
{
/*LTDC 像素时钟域 通过PLLSAI进行配置*/
RCC_PLLSAIConfig(200, 20, 2);
RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);
RCC_PLLSAICmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC, ENABLE);
LTDC_InitTypeDef LTDC_InitStruct;
/*同步信号极性*/
LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL;//行同步信号 HSYNC 极性
LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL;//列同步极性
LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;//数据使能极性
LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC;//时钟采样边沿
/*LTDC同步时序*/
LTDC_InitStruct.LTDC_HorizontalSync = HSW-1;//行同步信号宽度
LTDC_InitStruct.LTDC_VerticalSync = VSW-1;//垂直同步信号宽度
LTDC_InitStruct.LTDC_AccumulatedHBP = HSW + HBP - 1;
LTDC_InitStruct.LTDC_AccumulatedVBP = VSW + VBP - 1;
LTDC_InitStruct.LTDC_AccumulatedActiveW = HSW+HBP+LCD_PIXEL_WIDTH -1;
LTDC_InitStruct.LTDC_AccumulatedActiveH = VSW+VBP+LCD_PIXEL_HEIGHT -1;
LTDC_InitStruct.LTDC_TotalWidth = HSW+ HBP+LCD_PIXEL_WIDTH + HFP -1;
LTDC_InitStruct.LTDC_TotalHeigh = VSW+ VBP+LCD_PIXEL_HEIGHT + VFP -1;
/*背景色*/
LTDC_InitStruct.LTDC_BackgroundRedValue = 0x00;
LTDC_InitStruct.LTDC_BackgroundGreenValue = 0x00;
LTDC_InitStruct.LTDC_BackgroundBlueValue = 0xFF;
LTDC_Init(<DC_InitStruct);
LTDC_Cmd(ENABLE);
}
void BSP_LCD_Layer_Init(void)
{
LTDC_Layer_InitTypeDef LTDC_Layer_InitStruct;
/*Layer 1配置*/
LTDC_Layer_InitStruct.LTDC_HorizontalStart = HBP + HSW;
LTDC_Layer_InitStruct.LTDC_HorizontalStop = HSW+HBP+LCD_PIXEL_WIDTH -1;
LTDC_Layer_InitStruct.LTDC_VerticalStart = VSW+ VBP;
LTDC_Layer_InitStruct.LTDC_VerticalStop = VSW+ VBP+LCD_PIXEL_HEIGHT -1;
LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;
LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 0xFF;
LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 0;
LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA;
LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_CA;
LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_LAYER1_Buffer_Adderess;
LTDC_Layer_InitStruct.LTDC_CFBLineLength = LCD_PIXEL_WIDTH * 2 + 3;//行 字节数
LTDC_Layer_InitStruct.LTDC_CFBPitch = LCD_PIXEL_WIDTH * 2;
LTDC_Layer_InitStruct.LTDC_CFBLineNumber = LCD_PIXEL_HEIGHT;
LTDC_LayerInit(LTDC_Layer1,<DC_Layer_InitStruct);
/*Layer2*/
LTDC_Layer_InitStruct.LTDC_HorizontalStart = HBP + HSW;
LTDC_Layer_InitStruct.LTDC_HorizontalStop = HSW+HBP+LCD_PIXEL_WIDTH -1;
LTDC_Layer_InitStruct.LTDC_VerticalStart = VSW+ VBP;
LTDC_Layer_InitStruct.LTDC_VerticalStop = VSW+ VBP+LCD_PIXEL_HEIGHT + VFP -1;
LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_ARGB8888;
LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 0xFF;
LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;
LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 0;
LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA;
LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;
LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_LAYER2_Buffer_Adderess;
LTDC_Layer_InitStruct.LTDC_CFBLineLength = LCD_PIXEL_WIDTH * 4 + 3;//行 字节数
LTDC_Layer_InitStruct.LTDC_CFBPitch = LCD_PIXEL_WIDTH * 4;
LTDC_Layer_InitStruct.LTDC_CFBLineNumber = LCD_PIXEL_HEIGHT;
LTDC_LayerInit(LTDC_Layer2,<DC_Layer_InitStruct);
LTDC_LayerCmd(LTDC_Layer1,ENABLE);
LTDC_LayerCmd(LTDC_Layer2,ENABLE);
LTDC_DitherCmd(ENABLE);
LTDC_ReloadConfig(LTDC_IMReload);
}