解决ESP32 LVGL无法显示图片,显示No data的问题

这两天在ESP32 IDF上移植了LVGL8.2,LVGL8.2已经内置了decoder,不需要再安装额外的库。但是,

    lv_obj_t * wp;
    wp = lv_img_create(DictSense);
    lv_img_set_src(wp, "S:/ALBUM/wink.png");

将文件系统移植好后,把decoder打开:
Alt
“No data”
先说解决方案:

解决方案

将 lv_conf.h中的

#  define LV_MEM_SIZE    (32U * 1024U)

把32改大(要确保你单片机的内存是否够)
如果使用了lvgl_esp32_drivers,则在menuconfig中:(默认32,单位KB请添加图片描述

在这里插入图片描述
Alt

寻找过程

先给不太懂LVGL的新手科普一点,lv_conf.h是lvgl的配置文件,然而假如你使用了官方的,lvgl_esp32_drivers库,那么是不用管这个文件的,即使你把这个文件启用(设为1),还是没有用, lvgl_esp32_drivers已经将所有的设置项都搬到了menu config里面,只用在那里面设置就行了。(不过每改一次设置都要从头编译,真的很痛苦)

我先是以为是自己图片文件的问题,我去把官方的测试图片放进去依旧不行,但是电脑模拟器是可以的
然后我以为是文件系统的问题,换了文件系统还是不行

然后debug的话,首先要把LVGL的log打开
在这里插入图片描述
这里是不同的log等级,假如你开的最低级,他每一个事件都会报告,直接把esp32 CPU占满而基本无法运行 ,我选的是第2个等级,终于log出来了一点信息(只有打开错误这一句话)

但是没有关键信息,只是说错误代码是 LV_RES_INV

于是我又在绘图decode函数里面看了好长时间,不知道点到了什么,终于把关键信息给log出来了
动态分配内存的大小不够了啊!(调出这个log,用了一天的时间,我也不知道为什么开始没有log出内存不够这个信息)
原来如此!!!

在这里插入图片描述

关于文件系统

关于文件系统:其实esp32 IDF的文件系统是不用移植的,官方就兼容STDIO。直接把官方的SD卡例程的初始化复制进去 然后把LVGL的文件系统选择STDIO,配置一下即可。但是速度会比FATFS慢太多太多,还是建议使用lv_fs_if库。同样一个项目用if简直是秒出,用STDIO要等3秒。
文件系统移植教程:
https://blog.csdn.net/cnicfhnui/article/details/118972851

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值