天马行空 发表于 2022-2-23 16:06:17

请教,关于FX操作NorFlash读写文件顺序的问题

ST官方LX例程读写Nor flash的操作步骤如下,这样没问题
fx_file_create(&nor_disk, "test.txt");
fx_file_open(&nor_disk, &fx_file, "test.txt", FX_OPEN_FOR_READ);
fx_file_read(&fx_file,&readbuf, sizeof(readbuf), &bytes_read);
fx_file_close(&fx_file);


我调换了顺序,先打开某个文件,如果打开失败视为无此文件,然后再创建此文件。实际测试发现此方法不行,每次都是fx_file_open失败,返回值04。
每次都进入(status != FX_SUCCESS)里创建一次文件,如此反复运行都是这样。
status = fx_file_open(&nor_disk, &fx_file, "test.txt", FX_OPEN_FOR_READ);
if(status != FX_SUCCESS)
{
status = fx_file_create(&nor_disk, "test.txt");//每次创建文件函数返回值都为0,说明文件被创建了。
status = fx_file_open(&nor_disk, &fx_file, "test.txt", FX_OPEN_FOR_READ);
status = fx_file_read(&fx_file,&readbuf, sizeof(readbuf), &bytes_read);
status = fx_file_close(&fx_file);
}
else
   {
      status = fx_file_read(&fx_file,&readbuf, sizeof(readbuf), &bytes_read);
      status = fx_file_close(&fx_file);
   }


难道FX文件系统在读写某个未知文件时,首先必须要create,然后再open ? 不能先open失败后再crete ?

eric2013 发表于 2022-2-23 16:28:16

楼主的意思是这个文件存在,也要先Create才可以?

天马行空 发表于 2022-2-23 17:50:33

我没去确认文件是否真的已经存在,,,即便是不存在,第一次OPEN的时候会跳到if(status != FX_SUCCESS)里去Create,而且我有查看Create状态是成功的。但第二次运行到这里时还是OPEN出错。

天马行空 发表于 2022-2-23 17:52:28

但是,只有把Create函数提出来放到OPEN前面执行,就不会有问题了,每次都能OPEN成功。

eric2013 发表于 2022-2-23 21:25:11

天马行空 发表于 2022-2-23 17:50
我没去确认文件是否真的已经存在,,,即便是不存在,第一次OPEN的时候会跳到if(status != FX_SUCCESS)里去 ...

那不应该,这个我测试过,不过我是SD卡上用的。正常的。
页: [1]
查看完整版本: 请教,关于FX操作NorFlash读写文件顺序的问题