3 Star 5 Fork 4

Yao-Mi / uFatfs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 3.37 KB
一键复制 编辑 原始数据 按行查看 历史
妖米 提交于 2021-07-30 23:30 . 修改说明文件,调整格式

UFATFs

介绍

平常我们嵌入式开发,多采用Fatfs作为文件系统,但是和window下的文件系统函数用法差别还挺大的,所以为了让PC上写的文件操作能直接移植到单片机上,我把Fatfs文件系统又封装了一层,即加了一层user层,使得PC上的文件操作可以直接移植到单片机上,几乎不用再做修改。只要在PC的文件操作前加个u即可,如PC中类型FILE* P只需修改为uFILE* P即可,具体使用参考fatfs_test();

这个测试中,在电脑中开辟了一块内存模拟W25Q128 进行文件系统测试,显示器采用之前的LCD模拟器进行模拟绘制,内存管理采用MemDbg内存管理调试器,在之前的工程里都有

软件架构

安装教程

基于的Fatfs版本是R0.14,想移植可以参考文件下的移植说明

使用说明

  1. PC上的所有文件相关操作,前面都加u即可,目前支持的函数有:uf_open;uf_close;uf_read; uf_write;uf_gets;uf_putc; uf_puts;uf_tell;uf_size;uf_seek;uf_opendir;uf_closedir;uf_mkdir;uf_scan_dir;uf_readdir;uf_unlink;uf_rename;uf_typetell; uf_rename; uf_cpy_msg;uf_filecopy;uf_get_file_name;uf_foldercopy;uf_folderdsize;uf_mount; uf_mkfs;uf_getfree; uf_setlabel; uf_getlabel;

  2. 上述兼容Stdio的文件操作,函数原型与stdio中的相同,函数原型如下:

uFILE * uf_open(const char *path, const char *mode);//打开文件

int uf_close(uFILE *ufile);//关闭文件

size_t uf_read(void *ptr, size_t size, size_t nmenmb, uFILE *ufile);//读文件内容

size_t uf_write(void *ptr, size_t size, size_t nmenmb, uFILE *ufile);//写文件内容

char* uf_gets(char* outbuf, uint32 size, uFILE* file);//读取一行内容

int uf_putc(char c, uFILE *ufile);//写入单个字符

int uf_puts(char *str, uFILE *ufile);//写入一个字符串

........................

  1. 基本上PC上会用到的文件函数都在这边了吧,不过打开大文件要注意,如果文件太大,内存会出问题,内存不足,多大限制我忘了,这个是好久之前写的了,现在不想查了,哪个大佬要是发现了请多多指教,直接告诉我就好啦,我太懒了,不想去查了,反正一般单片机上打开的文件也不会特别大,所以大体没问题。

  2. PC上的FILE类型,就是这边的uFILE类型,前面加u即可,但是DIR、FILINFO这两个可以不用改,具体参考fatfs_test()函数使用示例

  3. 可以通过设置user_fats.h文件中的 UFILE_DEBUG_ENABLE 为1 开启调试模式,打印输出文件操作相关的具体信息

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
C
1
https://gitee.com/yao_mi/ufatfs.git
git@gitee.com:yao_mi/ufatfs.git
yao_mi
ufatfs
uFatfs
master

搜索帮助