|
本人最近在学习STM32H743的LTDC驱动屏幕,想要显示多个页面以适配按键的不同操作,在显示界面的时候我直接用更改SDRAM地址的方法来达到更换页面的效果,但是不知道这样会造成什么后果。还望大佬指点一下。
驱动程序使用的安富莱教程里的:
实现的思路就是这样的
if(count1 < 3.0)
{
count1+=0.1;
LCDH7_ConfigLTDC_Dismem( 0xc0000000 + 2*1024*1024);
}else
{
Flag=1;
LCDH7_ConfigLTDC_Dismem( 0xc0000000 );
}
#######################################################################################
void LCDH7_ConfigLTDC_Dismem(uint32_t address)
{
/*##-2- LTDC初始化 #############################################################*/
{
LTDC_LayerCfgTypeDef pLayerCfg;
uint16_t Width, Height, HSYNC_W, HBP, HFP, VSYNC_W, VBP, VFP;
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
/* 支持6种面板 */
/* 实测像素时钟 = 53.7M */
Width = 1024;
Height = 600;
/* 开始配置图层 ------------------------------------------------------*/
/* 窗口显示区设置 */
pLayerCfg.WindowX0 = 0;
pLayerCfg.WindowX1 = Width;
pLayerCfg.WindowY0 = 0;
pLayerCfg.WindowY1 = Height;
/* 配置颜色格式 */
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
/* 显存地址 */
pLayerCfg.FBStartAdress = address;
/* Alpha常数 (255 表示完全不透明) */
pLayerCfg.Alpha = 255;
/* 无背景色 */
pLayerCfg.Alpha0 = 0; /* 完全透明 */
pLayerCfg.Backcolor.Blue = 0;
pLayerCfg.Backcolor.Green = 0;
pLayerCfg.Backcolor.Red = 0;
/* 配置图层混合因数 */
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
/* 配置行列大小 */
pLayerCfg.ImageWidth = Width;
pLayerCfg.ImageHeight = Height;
/* 配置图层1 */
if (HAL_LTDC_ConfigLayer(&hltdc_F, &pLayerCfg, LTDC_LAYER_1) != HAL_OK)
{
/* 初始化错误 */
//Error_Handler(__FILE__, __LINE__);
}
/*******************************************配置图层2*************************************************/
#if 0
/* 配置图层2 */
if (HAL_LTDC_ConfigLayer(&hltdc_F, &pLayerCfg, LTDC_LAYER_2) != HAL_OK)
{
/* 初始化错误 */
// Error_Handler(__FILE__, __LINE__);
}
#endif
}
}
|
|