帮顶,没用过H7R7,这个是H750/H743双图层配置API,供参考
[C] 纯文本查看 复制代码 /*
*********************************************************************************************************
* 函 数 名: _GetPixelformat
* 功能说明: 获取图层1或者图层2使用的颜色格式
* 形 参: LayerIndex 图层
* 返 回 值: 颜色格式
*********************************************************************************************************
*/
static void LCD_LL_LayerInit(U32 LayerIndex)
{
LTDC_LayerCfgTypeDef layer_cfg;
static uint32_t LUT[256];
uint32_t i;
if (LayerIndex < GUI_NUM_LAYERS)
{
/* 窗口显示区设置 */
layer_cfg.WindowX0 = 0;
layer_cfg.WindowX1 = g_LcdWidth;
layer_cfg.WindowY0 = 0;
layer_cfg.WindowY1 = g_LcdHeight;
/* 配置颜色格式 */
layer_cfg.PixelFormat = _GetPixelformat(LayerIndex);
/* 显存地址 */
layer_cfg.FBStartAdress = layer_prop[LayerIndex].address;
/* Alpha常数 (255 表示完全不透明) */
layer_cfg.Alpha = 255;
/* 无背景色 */
layer_cfg.Alpha0 = 0; /* 完全透明 */
layer_cfg.Backcolor.Blue = 0;
layer_cfg.Backcolor.Green = 0;
layer_cfg.Backcolor.Red = 0;
/* 配置图层混合因数 */
layer_cfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
layer_cfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
/* 配置行列大小 */
layer_cfg.ImageWidth = g_LcdWidth;
layer_cfg.ImageHeight = g_LcdHeight;
/* 配置图层1 */
HAL_LTDC_ConfigLayer(&hltdc, &layer_cfg, LayerIndex);
/* 使能LUT */
if (LCD_GetBitsPerPixelEx(LayerIndex) <= 8)
{
HAL_LTDC_EnableCLUT(&hltdc, LayerIndex);
}
else
{
/* AL88模式(16bpp) */
if (layer_prop[LayerIndex].pColorConvAPI == GUICC_88666I)
{
HAL_LTDC_EnableCLUT(&hltdc, LayerIndex);
for (i = 0; i < 256; i++)
{
LUT[i] = LCD_API_ColorConv_8666.pfIndex2Color(i);
}
HAL_LTDC_ConfigCLUT(&hltdc, LUT, 256, LayerIndex);
}
}
}
} |