看到很多人对于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]
[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]
---------------------------------
因为大家都懂了,呵呵
创建文件的时候会调用这个函数获取时间的,这个时间就是创建文件的时间
一周热门 更多>