硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3983|回复: 5
收起左侧

[FatFs] FatFS的时间设置函数f_utime的测试

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2018-8-17 12:21:40 | 显示全部楼层 |阅读模式
1、使用例子:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=20006

2、函数使用方法:
http://elm-chan.org/fsw/ff/doc/utime.html

3、测试代码:
写入的时间是2018年8月17号,12时12分12秒
  1. /*
  2. *********************************************************************************************************
  3. *        函 数 名: CreateNewFile
  4. *        功能说明: 在SD卡创建一个新文件,文件内容填写“www.armfly.com”
  5. *        形    参:无
  6. *        返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. FRESULT set_timestamp (
  10.     char *obj,     /* Pointer to the file name */
  11.     int year,
  12.     int month,
  13.     int mday,
  14.     int hour,
  15.     int min,
  16.     int sec
  17. )
  18. {
  19.     FILINFO fno;

  20.     fno.fdate = (WORD)(((year - 1980) * 512U) | month * 32U | mday);
  21.     fno.ftime = (WORD)(hour * 2048U | min * 32U | sec / 2U);

  22.     return f_utime(obj, &fno);
  23. }

  24. static void CreateNewFile(void)
  25. {
  26.         /* 本函数使用的局部变量占用较多,请修改启动文件,保证堆栈空间够用 */
  27.         FRESULT result;
  28.         FATFS fs;
  29.         FIL file;
  30.         DIR DirInf;
  31.         uint32_t bw;

  32.          /* 挂载文件系统 */
  33.         result = f_mount(&fs, "0:", 0);                        /* Mount a logical drive */
  34.         if (result != FR_OK)
  35.         {
  36.                 printf("挂载文件系统失败 (%d)\r\n", result);
  37.         }

  38.         /* 打开根文件夹 */
  39.         result = f_opendir(&DirInf, "/"); /* 如果不带参数,则从当前目录开始 */
  40.         if (result != FR_OK)
  41.         {
  42.                 printf("打开根目录失败 (%d)\r\n", result);
  43.                 return;
  44.         }

  45.         /* 打开文件 */
  46.         result = f_open(&file, "armfly.txt", FA_CREATE_ALWAYS | FA_WRITE);

  47.         /* 写一串数据 */
  48.         result = f_write(&file, "FatFS Write Demo \r\n www.armfly.com \r\n", 34, &bw);
  49.         if (result == FR_OK)
  50.         {
  51.                 printf("armfly.txt 文件写入成功\r\n");
  52.         }
  53.         else
  54.         {
  55.                 printf("armfly.txt 文件写入失败\r\n");
  56.         }

  57.         /* 关闭文件*/
  58.         f_close(&file);
  59.         
  60.         set_timestamp("armfly.txt", 2018, 8, 17, 12, 12, 12);

  61.         /* 卸载文件系统 */
  62.         f_mount(NULL, "0:", 0);
  63. }
复制代码


4、模拟U盘效果:
QQ截图20180817122050.png




回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2018-8-23 14:53:21 | 显示全部楼层
请教一下硬汉哥,使用fatfs,如何判断SD卡写满了,判断之后删掉以前的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
 楼主| 发表于 2018-8-24 00:11:35 | 显示全部楼层
王海靖 发表于 2018-8-23 14:53
请教一下硬汉哥,使用fatfs,如何判断SD卡写满了,判断之后删掉以前的

使用此函数判断剩余

http://elm-chan.org/fsw/ff/doc/getfree.html
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2018-8-24 17:22:11 | 显示全部楼层
eric2013 发表于 2018-8-24 00:11
使用此函数判断剩余

http://elm-chan.org/fsw/ff/doc/getfree.html

谢谢硬汉哥的回复。目前可以获取SD卡剩余存储空间,也有API可以删除文件。还是有一个问题在请教一下硬汉哥,我的文件名是以时间命名的,在卡快要写满的时候,我应该怎么操作来找到最早创建的文件并删除他。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
 楼主| 发表于 2018-8-25 00:56:01 | 显示全部楼层
王海靖 发表于 2018-8-24 17:22
谢谢硬汉哥的回复。目前可以获取SD卡剩余存储空间,也有API可以删除文件。还是有一个问题在请教一下硬汉 ...

这个的话,是不是创建完成一个文件记录此文件的文件名方便些,如果仅记录起始时间的话,假如某个文件在某个时刻创建失败,进入下一个时刻创建,时间已经更新了。
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2018-8-25 13:19:38 | 显示全部楼层
eric2013 发表于 2018-8-25 00:56
这个的话,是不是创建完成一个文件记录此文件的文件名方便些,如果仅记录起始时间的话,假如某个文件在某 ...

谢谢硬汉哥的回复。我试试看
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-11 21:50 , Processed in 0.181662 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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