FatFs文件系统获取系统时间实现

2019-08-14 04:34发布

看到很多人对于FatFs这个文件系统添加时间的函数格式不懂,其实按照它提供的格式增加即可

下面是我的实现方法,只做参考,其他实现方法就大家琢磨了
[mw_shl_code=c,true] PCF8563_ReadWrite_Time(1); //获取时间信息 //将时间十六进制转换成BCD码 TimeValue.year = HX_to_DX(TimeValue.year); //年 TimeValue.month = HEX_to_BCD(TimeValue.month); //月 TimeValue.date = HEX_to_BCD(TimeValue.date); //日 TimeValue.hour = HEX_to_BCD(TimeValue.hour); //时 TimeValue.minute = HEX_to_BCD(TimeValue.minute);//分 TimeValue.second = HEX_to_BCD(TimeValue.second);//秒 //按照FatFs的时间格式组合 time_buff |= ((TimeValue.year - 1980)<<25); //年 time_buff |= (TimeValue.month<<21); //月 time_buff |= (TimeValue.date<<16); //日 time_buff |= (TimeValue.hour<<11); //时 time_buff |= (TimeValue.minute<<5); //分 time_buff |= (TimeValue.second/2); //秒[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
正点原子
1楼-- · 2019-08-14 05:48
我也分享下我的实现方法:
[mw_shl_code=c,true]//获得时间 //User defined function to give a current time to fatfs module */ //31-25: Year(0-127 org.1980), 24-21: Month(1-12), 20-16: Day(1-31) */ //15-11: Hour(0-23), 10-5: Minute(0-59), 4-0: Second(0-29 *2) */ DWORD get_fattime (void) { u32 time=0; calendar_get_date(&calendar); calendar_get_time(&calendar); if(calendar.w_year<1980)calendar.w_year=1980; time=(calendar.w_year-1980)<<25;//年份 time|=(calendar.w_month)<<21; //月份 time|=(calendar.w_date)<<16; //日期 time|=(calendar.hour)<<11; //时 time|=(calendar.min)<<5; //分 time|=(calendar.sec/2); //秒 return time; } [/mw_shl_code]
solo
2楼-- · 2019-08-14 07:53
咦咦 咋都没人呢?
八度空间
3楼-- · 2019-08-14 08:36
回复【3楼】solo:
---------------------------------
因为大家都懂了,呵呵
solo
4楼-- · 2019-08-14 14:27
 精彩回答 2  元偷偷看……
939040735@qq.co
5楼-- · 2019-08-14 16:54
这样做了的话,写入SD卡的文件就有创建时间了吗?还需要怎样的设置吗
八度空间
6楼-- · 2019-08-14 19:42
939040735@qq.co 发表于 2016-11-10 20:19
这样做了的话,写入SD卡的文件就有创建时间了吗?还需要怎样的设置吗

创建文件的时候会调用这个函数获取时间的,这个时间就是创建文件的时间

一周热门 更多>