LVGL使用踩坑

文件处理Seek问题:

lvgl里seek默认类型为uint32_t,导致LV_SEEK_END向前seek时出错。
将uint32_t改为int32_t,同事回调函数中的类型一并修改,可以解决此问题。

原码:

lv_fs_res_t lv_fs_seek(lv_fs_file_t * file_p, uint32_t pos, lv_fs_whence_t whence);
lv_fs_res_t (*seek_cb)(struct _lv_fs_drv_t * drv, void * file_p, uint32_t pos, lv_fs_whence_t whence);

修改后:

lv_fs_res_t lv_fs_seek(lv_fs_file_t * file_p, int32_t pos, lv_fs_whence_t whence);
lv_fs_res_t (*seek_cb)(struct _lv_fs_drv_t * drv, void * file_p, int32_t pos, lv_fs_whence_t whence);

驱动器问题:

在lv_fs.c文件中
有函数如下

/**
 * Skip the driver letter and the possible : after the letter
 * @param path path string (E.g. S:/folder/file.txt)
 * @return pointer to the beginning of the real path (E.g. /folder/file.txt)
 */
static const char * lv_fs_get_real_path(const char * path)
{
    path++; /*Ignore the driver letter*/
    if(*path == ':') path++;

    return path;
}

在函数:中有调用

lv_fs_res_t lv_fs_open(lv_fs_file_t * file_p, const char * path, lv_fs_mode_t mode);
lv_fs_res_t lv_fs_dir_open(lv_fs_dir_t * rddir_p, const char * path);

//调用代码: 
	const char * real_path = lv_fs_get_real_path(path);//在flash中去除符盘号,会导致出错,将其注释即可
    void * file_d = drv->open_cb(drv, path, mode);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值