FATFS文件系统加入RTC后创建新文件失败问题

2019-07-20 17:06发布

在做FATFS文件系统时遇到一个问题,我用RTC写底层DWORD get_fattime (void)
{                                 
        return 0;
}       

编写为

DWORD get_fattime (void)//用32的RTC实现此函数
{                                 
        RTC_TimeTypeDef* RTC_TimeStruct;//时间
        RTC_DateTypeDef* RTC_DateStruct;//日期
        u32 time=0;
        RTC_GetTime(RTC_Format_BIN, RTC_TimeStruct);//读取时间,以二进制输出
        RTC_GetDate(RTC_Format_BIN,RTC_DateStruct);//读取日期
        time=((RTC_DateStruct->RTC_Year+2000-1980)<<25) | (RTC_DateStruct->RTC_Month<<21)  | (RTC_DateStruct->RTC_Date<<16)
         | (RTC_TimeStruct->RTC_Hours<<11) | (RTC_TimeStruct->RTC_Minutes<<5) | (RTC_TimeStruct->RTC_Seconds<<0);
        return time;
}       

发现现象如下:
1.在主函数创建新文件夹时,可以显示修改时间了,而且正确,感觉移植成功了。所以赶紧试试了创建新文件。
2.调用创建文件api后,发现函数可以返回FR_OK,但是在电脑上发现并没有新文件生成。
3.经过几次测试,得出结论:加入RTC后文件夹可以创建成功,并且显示时间正常。但新文件无法生成,但f_open能返回FR_OK,不报错,而且除了生成新文件有问题其他api目前
并没发现问题。 然后去掉RTC之后,发现一切正常,所以我觉得是RTC导致的,但是一直还没发现怎么解决,所以想问问有没有人遇到或者解决了?谢谢。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-20 18:06
若然落木 发表于 2017-1-24 17:41
仿真时能返回正常时间,所以,我才不知道该往哪个方向查问题了。

能返回就和RTC无关了。。。
剩下的是你文件系统的问题了。
我们综合实验,创建的文件就是以RTC时间为文件名的,没有任何问题
正点原子
2楼-- · 2019-07-20 19:13
仿真跟踪下,如果RTC能正确返回时间,就和这RTC无关了
若然落木
3楼-- · 2019-07-20 20:07
正点原子 发表于 2017-1-23 22:23
仿真跟踪下,如果RTC能正确返回时间,就和这RTC无关了

仿真时能返回正常时间,所以,我才不知道该往哪个方向查问题了。
若然落木
4楼-- · 2019-07-20 20:20
正点原子 发表于 2017-1-24 20:29
能返回就和RTC无关了。。。
剩下的是你文件系统的问题了。
我们综合实验,创建的文件就是以RTC时间为文 ...

好的,我再找找原因,谢谢。

一周热门 更多>