OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11120|回复: 16

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

[复制链接]

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-8-15 09:55:13 | 显示全部楼层 |阅读模式
看到很多人对于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]

现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2014-8-15 23:21:53 | 显示全部楼层
我也分享下我的实现方法:
[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]

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1367
注册时间
2014-2-13
在线时间
169 小时
发表于 2014-11-2 10:27:23 | 显示全部楼层
咦咦 咋都没人呢?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2014-11-2 15:19:44 | 显示全部楼层
回复【3楼】solo:
---------------------------------
因为大家都懂了,呵呵
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1367
注册时间
2014-2-13
在线时间
169 小时
发表于 2014-11-2 16:41:03 | 显示全部楼层
回复【4楼】Badu_Space:
---------------------------------
搜嘎
回复 支持 反对

使用道具 举报

11

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2016-1-13
在线时间
18 小时
发表于 2016-11-10 20:19:07 | 显示全部楼层
这样做了的话,写入SD卡的文件就有创建时间了吗?还需要怎样的设置吗
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-11-11 18:34:27 | 显示全部楼层
939040735@qq.co 发表于 2016-11-10 20:19
这样做了的话,写入SD卡的文件就有创建时间了吗?还需要怎样的设置吗

创建文件的时候会调用这个函数获取时间的,这个时间就是创建文件的时间
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-11-11 18:54:26 | 显示全部楼层
939040735@qq.co 发表于 2016-11-10 20:19
这样做了的话,写入SD卡的文件就有创建时间了吗?还需要怎样的设置吗

移植的时候,他给了这个函数的定义,你需要这个功能就把他实现了,不需要就随便返回一个数,或者直接在配置宏定义那把这个功能关了
回复 支持 反对

使用道具 举报

12

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2015-9-25
在线时间
13 小时
发表于 2017-8-30 16:48:32 | 显示全部楼层
你好,想请问一下,你是如何获取系统的当前时间的
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-8-30 21:58:44 | 显示全部楼层
菜鸟CC 发表于 2017-8-30 16:48
你好,想请问一下,你是如何获取系统的当前时间的

读取RTC芯片时间
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2019-5-13
在线时间
25 小时
发表于 2019-9-16 17:04:47 | 显示全部楼层
大佬,你好,我还是没懂您这个文件系统是怎么调用时间的,我知道文件系统有个get_fattime函数来调用系统时间
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-9-18 09:11:35 | 显示全部楼层
SsJjPp 发表于 2019-9-16 17:04
大佬,你好,我还是没懂您这个文件系统是怎么调用时间的,我知道文件系统有个get_fattime函数来调用系统时 ...

你按照规定的格式返回即可
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2019-5-13
在线时间
25 小时
发表于 2019-9-21 10:55:53 | 显示全部楼层
八度空间 发表于 2019-9-18 09:11
你按照规定的格式返回即可

大佬,请教个问题,用回环模式把can口接收到的数据存到SD卡会发生乱码,部分代码
  1.                 key=CAN1_Receive_Msg(canbuf);
  2.   
  3.                 if(key)//&#189;óê&#213;μ&#189;óDêy&#190;Y
  4.                 {                       
  5.                         LCD_Fill(30,270,160,310,WHITE);//&#199;&#229;3y&#214;&#174;&#199;°μ&#196;&#207;&#212;ê&#190;
  6.                        
  7.                         sprintf((char*)str,"Data is:%s\r\n",canbuf);  
  8.                   fr = f_open(&fileobj, filename, FA_WRITE|FA_OPEN_ALWAYS);
  9.                    if(fr==FR_OK)
  10.              {                          
  11.         f_lseek(&fileobj, f_size(&fileobj));                                    
  12.         f_write(&fileobj, str, sizeof str, &brs);   
  13.                                 f_lseek(&fileobj, f_size(&fileobj));
  14.         f_write(&fileobj, newline,2, &brs);  
  15.                                 LED1_Toggle;
  16.                          }
  17.                           f_close(&fileobj);
  18.                           printffile("0:can1.txt");
  19.                           
  20.                                 delay_ms(1000);
复制代码
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-9-21 16:37:35 | 显示全部楼层
SsJjPp 发表于 2019-9-21 10:55
大佬,请教个问题,用回环模式把can口接收到的数据存到SD卡会发生乱码,部分代码

SD卡保存的文件乱码???不回环测试的是字符串还是。。。
看你的代码,应该是字符串
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2019-5-13
在线时间
25 小时
发表于 2019-9-21 17:26:11 | 显示全部楼层
八度空间 发表于 2019-9-21 16:37
SD卡保存的文件乱码???不回环测试的是字符串还是。。。
看你的代码,应该是字符串

can口接收的就是8个十进制的数
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2019-5-13
在线时间
25 小时
发表于 2019-9-21 17:27:35 | 显示全部楼层
SsJjPp 发表于 2019-9-21 17:26
can口接收的就是8个十进制的数

stm32f767文件系统问题请教原子哥和各位大佬
http://www.openedv.com/forum.php ... &fromuid=147964
(出处: OpenEdv-开源电子网)
您可以看下这个帖子
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2020-9-29
在线时间
15 小时
发表于 2023-8-25 00:42:47 | 显示全部楼层
这个秒数是以两秒为单位吗  感觉传入的秒如果是奇数 通过/2 *2之后就丢失了个位 实验也确实是这样的 我看也没有人问这个问题  估计文件系统设计时候考虑是32位变量表示所有时间信息的限制吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 18:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表