STM32+SD卡 利用FATFS文件系统创建文件夹并新建txt文件

这几天在移植FATFS文件系统,在移植过程中需要新建文件夹下创建新的cfg文件,查找资料后发现需要用到以下函数:

f_mkdir("0:/2017110223");//新建文件夹,其中2017110223是文件夹名称

f_open(filescr1, "0:2017110223/201711011.txt", FA_OPEN_NEW_COVER);//在新建的文件夹下创建新的txt文本文件

新建完成之后要记得关闭该文件,否则就会出错。

f_res = f_close(filescr1);

在移植FATFS文件系统的时候我们可以用随时查看文件操作函数的返回值,针对这些返回值都有特定的意义,针对这些返回值我们可以很快锁定问题。

typedef enum {
FR_OK = 0, /* (0) Succeeded */
FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */
FR_INT_ERR, /* (2) Assertion failed */
FR_NOT_READY, /* (3) The physical drive cannot work */
FR_NO_FILE, /* (4) Could not find the file */
FR_NO_PATH, /* (5) Could not find the path */
FR_INVALID_NAME, /* (6) The path name format is invalid */
FR_DENIED, /* (7) Access denied due to prohibited access or directory full */
FR_EXIST, /* (8) Access denied due to prohibited access */
FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */
FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */
FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */
FR_NOT_ENABLED, /* (12) The volume has no work area */
FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */
FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any parameter error */
FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */
FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */
FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */
FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_SHARE */
FR_INVALID_PARAMETER /* (19) Given parameter is invalid */
} FRESULT;

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要删除SD卡中的文件,需要使用FATFS文件系统提供的相关函数。以下是一个简单的例子,可以让你了解如何在STM32上使用FATFS文件系统删除SD卡中的文件。 首先,你需要初始化FATFS文件系统,包括挂载SD卡、打开文件等操作。下面是一个初始化FATFS的示例代码: ```c FATFS fs; FRESULT res; DIR dir; res = f_mount(&fs, "", 1); if (res != FR_OK) { // 处理挂载失败的情况 } res = f_opendir(&dir, "/folder_name"); if (res != FR_OK) { // 处理打开文件失败的情况 } ``` 上面的代码中,`f_mount`函数用于挂载FATFS文件系统,`f_opendir`函数用于打开指定的文件。 接下来,你可以使用`f_readdir`函数遍历文件中的所有文件和子文件,然后使用`f_unlink`函数删除子文件和其中的文件。下面是一个示例代码: ```c FILINFO fileInfo; while (f_readdir(&dir, &fileInfo) == FR_OK && fileInfo.fname[0] != 0) { if (fileInfo.fattrib & AM_DIR) { // 如果是子文件,则递归删除 if (strcmp(fileInfo.fname, ".") != 0 && strcmp(fileInfo.fname, "..") != 0) { char path[64]; sprintf(path, "/folder_name/%s", fileInfo.fname); res = f_unlink(path); if (res != FR_OK) { // 处理删除失败的情况 } } } else { // 如果是文件,则直接删除 char path[64]; sprintf(path, "/folder_name/%s", fileInfo.fname); res = f_unlink(path); if (res != FR_OK) { // 处理删除失败的情况 } } } ``` 上面的代码中,`f_readdir`函数用于读取文件中的文件信息,`f_unlink`函数用于删除文件文件。在遍历文件时,需要忽略`.`和`..`两个特殊的文件。 最后,你可以使用`f_closedir`函数关闭文件,以释放相关资源: ```c f_closedir(&dir); ``` 这样,你就可以使用FATFS文件系统STM32上删除SD卡中的文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值