stm32h743单片机嵌入式学习笔记4-文件系统FATFS

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎联系我qq2488890051 https://blog.csdn.net/kangkanglhb88008/article/details/89487365

FAT32 文件系统 就是在格式化的时候 选择 FAT32 方式格式化。
然后在 SD 卡存储区会产生一个类似于 目录 的文件系统。
这样存入 SD 卡中的所有 文件 文件夹 都会在这个目录中找到。
找到的是该文件或文件夹的 开始簇 和 结束簇 文件名 文件大小 文件类型
(如.txt .bin .bmp)等等。
所谓的这个目录 就是我们经常讲的 SD 卡根目录
将整个 SD 卡根目录里的所有文件名显示到 TFT 屏上的,然后随便点击 一个文
件 就会打开这个文件,这些都是要提取 SD 卡 根目录的所有信息的。
提取 根目录 的信息,首先知道根目录的具体位置
找根目录的位置 是整个 FAT32 文件系统的最重要的环节
FAT32 文件系统 分为主引导扇区 MBR 和 DBR 扇区
一般情况下 SD 卡的这两个扇区都有 但是有少数的没有 MBR 扇区 开头就是
DBR 扇区

*读取举例:此文件夹里装的为测试 BIN  图片文件 是已经制作好的 240x320  图片

上面是sd卡根目录放的几个文件

物理扇区编号 这里是 8335 直接将这个地址带入函数
SD_read_sector(8335,buf) 中 所提取出来的数据就是已8335 扇区为首地址的512
个字节数据,如果提去完一个 512 字节以后,要是在提取后面的数据就在首地
址后
字节以后,要是在提取后面的数据就在首地
址后+1 ,即 8335+1 ,这样就继续显示下面的数据,连续地+1 直到把整张的图片
显示完成。

这样就完成了sd卡里面一张图片的直接提取(不用文件系统)

也就是说文件系统就相当于是一组写入和读取规则,我们只需要调用对应写入和读取函数就可以实现以文件的概念操作了,使得操作更加简便

然后主要就是几个函数的使用了,比如:

exfuns_init();                //为fatfs相关变量申请内存                 

res=f_mount(fs[1],"1:",1);    //挂载FLASH,这里的“1”’代表字符串形式的数字,代表第几个磁盘,不能乱写,只能递增,追踪源码在这儿:

    /* Get logical drive number */
    vol = get_ldnumber(&rp);  // 这里的rp就是输入的字符串,继续往下追踪:

i = (int)*tp - '0';    /* Get the LD number */     // 这就说明了就是把字符串形式的数字转为了真正的数字了

res=f_mkfs("1:",FM_ANY,0,fatbuf,FF_MAX_SS);    //格式化FLASH,1:,盘符;FM_ANY,自动选择文件系统类型,0,自动选择簇大小
f_setlabel((const TCHAR *)"1:ALIENTEK");//设置Flash磁盘的名字为:ALIENTEK

while(exf_getfree("0",&total,&free))    //得到SD卡的总容量和剩余容量

f_opendir(&picdir,"0:/PICTURE") //打开图片文件夹

..........读文件,创建文件,写文件等等函数

猜你喜欢

转载自blog.csdn.net/kangkanglhb88008/article/details/89487365