打印

STemWin GUI_ALLOC_AllocZero申请内存后GUI_ALLOC_h2p转为指针。f_read()时写到buf里的数据不正常。求指点

[复制链接]
519|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
车水马龙|  楼主 | 2018-8-4 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
移植STemWin后想要测试一下从SD卡读取图片信息然后添加到储存器再GUI_BMP_Draw()显示图片。/* 申请一块内存空间 并且将其清零 */
hMem = GUI_ALLOC_AllocZero(file.fsize);
/* 将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);复制代码在教程里看到有这样的一个方法,可以直接用emWin的内存申请出来给用户使用。于是我就这样用了res = f_read(&file, _acBuffer, gFileSize, &br);
        
        if(res != FR_OK){
                printf("f_read _acBuffer error\r\n");
                GUI_ALLOC_Free(hMem);
                f_close(&file);
                return 0;
        }复制代码



但是这样读出来后我发现显示不了。于是我定义了一个全局数组
char buf[230454];
res = f_read(&file, buf, gFileSize, &br);

if(res != FR_OK){
printf("f_read buf error\r\n");
GUI_ALLOC_Free(hMem);
f_close(&file);
return 0;
}复制代码

文件是230454字节大小的。
我用f_read把图片数据读取到全局变量"buf"中能正常使用GUI_BMP_Draw()显示图片。
我用f_read把图片数据读取到GUI_ALLOC_AllocZero所申请到的内存"_acBuffer"数据不能正常使用GUI_BMP_Draw()显示图片。
最终发现f_read()读取到全局变量"buf"和读取数据到GUI_ALLOC_AlloZero所申请的"_acBuffer"里的数据都完全不同的。这个我就很头痛了。但是_acBuffer里我手动写数据读数据又是正常的。有没有大神能给指点一个方向?谢谢。
我用的STemWin版本是5.44a名称是:STemWin_CM7_OS_wc16_ARGB.a。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

474

主题

476

帖子

0

粉丝