641115388 发表于 2020-7-22 09:35:30

f_open返回FR_TIMEOUT

程序最初时没有问题,但是在程序中的一个文件改了他的结构体的参数,运行一段时间再打开任意文件,都会返回FR_TIMEOUT的返回值,比如改变宏定义MAX_HISDATA_STORE_DAY 30 -> 31,就会出现这个现象

641115388 发表于 2020-7-22 09:40:06

或者在这个结构体中加入一个参数也是会出现这个现象,一开始怀疑是文件系统对于一次的文件写入有限制,但是我删除这个HISDATA_METER_DAY_MAP结构体的MeterHisDayData参数时,添加一个uint8_t HisDataHourStart;的参数,也会出现这个问题。给我的感觉就是这个数组在系统中已经写定了,出现任何改变都会导致文件系统读不出来,返回超时。追踪程序都会在chk_mounted()函数下的ENTER_FF函数中返回超时

eric2013 发表于 2020-7-22 10:40:25

你的应用部分代码怎么实现的,方便的话,发个简单示意部分即可。

641115388 发表于 2020-7-22 11:51:43

eric2013 发表于 2020-7-22 10:40
你的应用部分代码怎么实现的,方便的话,发个简单示意部分即可。

这是几个截图

eric2013 发表于 2020-7-22 14:28:20

641115388 发表于 2020-7-22 11:51
这是几个截图

换一种实现方式,f_mount, f_open以后,不要再f_close和卸载

直接f_wrtie配合f_sync

641115388 发表于 2020-7-22 15:08:39

eric2013 发表于 2020-7-22 14:28
换一种实现方式,f_mount, f_open以后,不要再f_close和卸载

直接f_wrtie配合f_sync

好的,谢谢硬汉
页: [1]
查看完整版本: f_open返回FR_TIMEOUT