该篇文章对U盘进行了读操作,不知道各位看官是否发现一个细节上的问题,对于U盘读写后的文件不存在时间戳。
如何带上时间戳?需要了解这函数“get_fattime”,
首先两点:
1:要使能get_fattime这个函数,使能这个函数则需要“#define _FS_NORTC 0”,否则时间戳则无意义。
2:“get_fattime”函数在默认情况下是:
DWORD get_fattime(void)
{
/* USER CODE BEGIN get_fattime */
return 0;
/* USER CODE END get_fattime */
时间返回值是0 ,所以你的文件时间戳什么也没有!想要时间戳的前提是你的RTC已经使能,在使能RTC后你则需要在你函数中添加如下:
RTC_TimeTypeDef GetFileTime;
RTC_DateTypeDef GetFileData;
DWORD get_fattime(void)
{
/* USER CODE BEGIN get_fattime */
HAL_RTC_GetTime(&hrtc,&GetFileTime,RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc,&GetFileData,RTC_FORMAT_BIN);
return (DWORD)(2000+GetFileData.Year-1980)<<25| /* 年 */
GetFileData.Month<<21| /* 月 */
GetFileData.Date<<16| /* 日 */
GetFileTime.Hours<<11| /* 时 */
GetFileTime.Minutes<<5| /* 分 */
GetFileTime.Seconds; /* 秒 */
/* USER CODE END get_fattime */
}
带有时间戳的文件: