微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > FatFs应用!

FatFs应用!

时间:10-02 整理:3721RD 点击:
我们都知道,使用FstFs的IAP时,一般的程序编写格式如下:
  • void FunMode(void)
  • {
  •     FATFS fs;
  •     f_mount(0, &fs);
  •     // 其他代码部分
  •     f_mount(0, 0);
  • }


[color=rgb(51, 102, 153) !important]复制代码
但是这样还是会遇到问题,在函数中前途使用IAP时:
  • void Fun(void)
  • {
  •         f_mount(0, &fs);
  •         // 其他代码部分
  •         FunMode();              // 如果这里调用了此函数
  •         f_mount(0, 0);
  • }


[color=rgb(51, 102, 153) !important]复制代码
这时会遇到什么样的问题呢?在调用FunMode函数后,之前此函数中的FS之中或其他参数就被串改了,原因是在FunMode函数中从新对驱动0注册了工作区。为了解决这样的问题,一般采用两种方法实现。1-更改者两个函数中的驱动序号,一点要保证不一致。2-删除函数FunMode中的两个f_mount(0, &fs)和f_mount(0, 0)语句不在注册工作区。至于用哪种方法好,一切得根据自己的情况而定。

文件夹删除?
  FatFs的IAP函数 f_unlink 是支持删除一个文件或文件夹的。不过必须注意的是,此函数不能直接删除非空文件夹,如果要删除这样的文件夹,必须先删除文件夹里边的文件后在删除文件夹。
f_unlink
移除一个对象
FRESULT f_unlink ( const XCHAR* FileName /* 对象名的指针 */);
参数
FileName
'\0'结尾的字符串指针,该字符串指定了一个待移除的对象。
返回值
FR_OK (0)
函数成功。
FR_NO_FILE
找不到文件或目录。
FR_NO_PATH
找不到路径。
FR_INVALID_NAME
路径名无效。
FR_INVALID_DRIVE
驱动器号无效。
FR_DENIED
由于下列原因之一,而导致该函数被拒绝:
对象具有只读属性
目录不是空的
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_WRITE_PROTECTED
存储介质被写保护。
FR_DISK_ERR
由于底层磁盘I/O函数中的错误,而导致该函数失败。
FR_INT_ERR
由于一个错误的FAT结构或一个内部错误,而导致该函数失败。
FR_NOT_ENABLED
逻辑驱动器没有工作区。
FR_NO_FILESYSTEM
磁盘上没有有效的FAT卷。
描述
f_unlink函数当_FS_READONLY == 0并且_FS_MINIMIZE == 0时可用。
f_unlink函数移除一个对象。不要移除打开的对象或当前目录。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top