硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2407|回复: 1
收起左侧

[STM32H7] LTCD直接切换显存地址显示页面可能造成什么后果?

[复制链接]

5

主题

11

回帖

26

积分

新手上路

菜鸟在飞

积分
26
发表于 2021-8-24 18:49:59 | 显示全部楼层 |阅读模式
本人最近在学习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                
        }  
}

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2021-8-25 09:49:44 | 显示全部楼层

emWin的三缓冲和GUIX的双缓冲就是这种玩法。

第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第33章(2021-08-23)
https://forum.anfulai.cn/forum.php?m ... id=98429&fromuid=58
(出处: 硬汉嵌入式论坛)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-15 11:53 , Processed in 0.036189 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表