OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4404|回复: 1

F429驱动RGB屏DMA2D填充两张图片,第一张图片显示时两张图片各占一半

[复制链接]

13

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2014-12-24
在线时间
48 小时
发表于 2018-3-25 22:37:17 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 1812090658@qq.com 于 2018-3-25 22:39 编辑

硬件平台:正点原子阿波罗F429开发板,驱动800*480RGB屏,需要显示两张bmp图片,参考综合测试实验修改代码如下

//在指定位置画点.
//x,y:坐标
//color:颜色.
void slcd_draw_point(u16 x,u16 y,u16 color)
{     
    sramlcdbuf[(800*y+x)] = color;
}
void slcd_draw_point_1(u16 x,u16 y,u16 color)
{     
    sramlcdbuf1[(800*y+x)] = color;
}

sramlcdbuf = gui_memex_malloc(480*800);    //申请1帧缓存大小
sramlcdbuf_1 = gui_memex_malloc(800*480);

pic_phy.draw_point = (void(*)(u16,u16,u32))slcd_draw_point;
ai_load_picfile("0:/PICTURE/1.bmp",0,0,lcddev.width,lcddev.height,1);//写入内存
pic_phy.draw_point=LCD_Fast_DrawPoint;

pic_phy.draw_point = (void(*)(u16,u16,u32))slcd_draw_point_1;
ai_load_picfile("0:/PICTURE/2.bmp",0,0,lcddev.width,lcddev.height,1);//写入内存
pic_phy.draw_point=LCD_Fast_DrawPoint;

LTDC_Color_Fill(0,0,799,479,sramlcdbuf);//显示该图片是出现问题,上半屏为2.bmp的下部分,下半屏为1.bmp的下半部分
LTDC_Color_Fill(0,0,799,479,sramlcdbuf_1);//该图片正确显示

不知大家是否也会出现该现象,是什么原因呢?内存申请的问题?还是显示问题?如果想开机多缓存几张图片,后期便于快速刷新,该如何处理呢?谢谢

最佳答案

查看完整内容[请看2#楼]

发现原因了,申请内存gui_memex_malloc时是以u8为单位,而显示像素为u16,所以申请内存应为800*480*2(申请一帧数据),谢谢,以解决
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2014-12-24
在线时间
48 小时
 楼主| 发表于 2018-3-25 22:37:18 | 显示全部楼层
发现原因了,申请内存gui_memex_malloc时是以u8为单位,而显示像素为u16,所以申请内存应为800*480*2(申请一帧数据),谢谢,以解决
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 18:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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