2019-07-14 15:35发布
HELLOKITTYNEW 发表于 2018-11-30 15:09 昨天刚听了STM的GUI的课程,多层需要硬件支持。如果你的图像点数太大了,芯片本身的存储器不够的,需要外扩。记不住了,好像高分辨的1个图就将存储空间塞满了,第二层无处存放的。想想看是这个问题吗?
minwayson 发表于 2018-11-30 15:19 屏幕闪动厉害的话,可能内存带宽不够,只能开一个来用了
HELLOKITTYNEW 发表于 2018-11-30 16:03 您的存储单元少了吧。800X1280=1.024MB,如果是24位 {MOD},再X3=3MB了,第二层就开不了了。可以减少颜 {MOD}深度,或减少分辨率。如果将颜 {MOD}深度减到565=16位 {MOD},4MB正好够2层的。试试看
最多设置5个标签!
本帖最后由 hpdell 于 2017-3-9 17:18 编辑
我是使用外部的sdram 作为显存的,
每个层都分配了4MBYte的存储空间,
lcd的分辨率是 800*1280的,如果同时开启2层的显示就会乱的话,
根据你的分析来判断的话,那估计应该是我外扩的sdram的显存速度不够
或者降低屏幕分辨率 不知道可否解决这个问题呀 ??
我的单片机使用的是 f7xx系列的
本帖最后由 hpdell 于 2017-3-9 19:48 编辑
同时开2层的话,根本无法正常工作,显示完全乱了,
单独开某一层显示,完全没有任何问题
,单独开一层的话,那透明功能是不是就不能够使用了啊 ???
开启2层的显示效果:
任意单层显示效果如下:
层切换函数:
/*
函数名称:
函数功能:设置使用层
参数说明:_SetLayerUser 0表示使用第一层,1表示使用第二层
*/
void LTDC_LayerSetUser(uint8_t _SetLayerUser)
{
if(_SetLayerUser == 0)
{
BSP_LCD_SelectLayer(1);
BSP_LCD_SetLayerVisible(1, DISABLE);
BSP_LCD_SelectLayer(0);
BSP_LCD_SetLayerVisible(0, ENABLE);
}
else
{
BSP_LCD_SelectLayer(0);
BSP_LCD_SetLayerVisible(0, DISABLE);
BSP_LCD_SelectLayer(1);
BSP_LCD_SetLayerVisible(1, ENABLE);
}
}
如果不能够同时显示2层的话,那么设置2层也没有什么意义,到时还是把它设置为一次好了
你好,我的内存分配
第一层分配了4MByte的,800*1280*4 = 4096000BYte < 4096MByte
第二层分配了4MByte的,800*1280*4 = 4096000BYte < 4096MByte
我总共给 LTDC 分配了 8MByte的存储空间啊,按照上面的存储空间来看的话,应该是足够的啊,
那怎么还是不能够同时显示2层啊 ???
一周热门 更多>