LVGL8.2文件系统从外部SD卡加载PNG图片显示,进入hardfault

LVGL8.2 ,单独的文件系统读写都没有问题(测试函数:函数内部,测试之前,挂载,测试之后,卸载),但是从外部SD卡读取png图片就会进入hardfault。用的是lv_fs_fatfs.c的库函数。

读取SD卡的挂载是在:fs_init()函数中挂载了一次。

请教下:文件系统的挂载,使用之后,是必须卸载吗?如果不卸载会有什么问题呢?

void lv_fs_fatfs_init(void)
{
/----------------------------------------------------
* Initialize your storage device and File System
* -------------------------------------------------
/
fs_init();

/*---------------------------------------------------
 * Register the file system interface in LVGL
 *--------------------------------------------------*/

/*Add a simple drive to open images*/
static lv_fs_drv_t fs_drv; /*A driver descriptor*/
lv_fs_drv_init(&fs_drv);

/*Set up fields...*/
fs_drv.letter = LV_FS_FATFS_LETTER;
fs_drv.cache_size = LV_FS_FATFS_CACHE_SIZE;

fs_drv.open_cb = fs_open;   
fs_drv.close_cb = fs_close;	
fs_drv.read_cb = fs_read;	
fs_drv.write_cb = fs_write;	
fs_drv.seek_cb = fs_seek;	
fs_drv.tell_cb = fs_tell;	

fs_drv.dir_close_cb = fs_dir_close;	
fs_drv.dir_open_cb = fs_dir_open;
fs_drv.dir_read_cb = fs_dir_read;

lv_fs_drv_register(&fs_drv);

}

static void fs_init(void)
{
FRESULT result;

result = f_mount(&fatfs_sd, (const TCHAR*)LV_FS_FATFS_LETTER ,0);
if (result != FR_OK)
{
  	printf("SD Card mounted error. (%d)\n", result );
	while(1);
} 
else
{
	 printf("SD Card mounted successfully.\n\n");
}

}

不清楚你的硬件配置,这可能是图片太大,导致的问题。
一般来说文件系统只需要挂载一次即可,如果你觉得后续用不上了可以将其卸载。不需要每操作一次就挂载-卸载

好的 谢谢哈。我在找找问题所在。应该不是图片太大的原因。我放了好多张图,小的也不行,最大的也就是800*480.

其实lv已经配置好fatfs的,不需要再配置lv_port_fs_init()