1、f_open创建文件时,如果返回值是FR_NO_FILESYSTEM,先看一下下面程序win数组中读没读到55AA,如果没有参看其他f_open讲解,看一下SD卡有没有MDR引导扇区,如果没有换张SD卡吧,如果有但是没有读到,看一下是不是大端小端的问题。扇区字节读错位置。
fatfs移植时要清楚被移植的CPU支持大端还是小端存储,大端,小端也是移植成功与否的关键。
2、如果你需要移植的存储卡不能在电脑上格式化,你可以自己往0扇区写入DBR引导代码,这样存储卡也能使用。
3、在使用f_getfree函数获取空闲簇完成后,在接下来调用其他函数之前,在下面进行文件数据读写时,一定要使用f_mount函数重新注册工作区,否则读写函数将不会成功,还有f_open函数回返回值FR_INT_ERR,我没有找到原因,先记录于此。
4、f_lseek函数上下执行语句都是f_write函数或f_puts函数,都不会出错,
(1)但是f_puts函数放在f_write函数上面执行时,他两之间夹着f_lseek函数 执行语句,f_write 向文件中写数据就会出错。
(2)但是f_write 函数放在f_puts 函数上面执行时,他两之间夹着f_lseek函数 执行语句,f_puts 向文件中写数据不会出错。
5、f_gets函数放在f_read函数上面执行时,f_gets函数能读出文件的数据,f_read函数读取数据为0.
f_read 函数放在f_gets 函数上面执行时,f_read 函数能读出文件的数据,f_gets 函数读取数据为0.
总结:f_gets函数和f_read 函数不能紧挨着使用。
6、f_raeddir()读取目录函数,调用一次该函数只能读取文件夹中一个文件或文件夹。
例程
f_raeddir(&dir,"new");
7、fatfs文件系统中FAT 表,每四个字节一组表示一个簇的信息。
8、当是自己对SD卡整张卡进行擦除,和往SD卡里面写DBR引导扇区,相当于重新格式化SD卡时,完成后必修注册工作空间区,同时进行创建一个文件夹。不创建一个文件夹,后续创建文件夹和文件将是错误的。
9、windows下面文件夹名和路径名是不区分大小写的