干这个活可把我累死了哈哈 里面太多坑了,话不多说,
- 选用FatFs R0.10开源的Fatfs文件系统
- Fatfs 文件系统的介质为 芯片内部flash,应用程序使用
的内部 FLASH 是从 0x08000000 至(0x08000000+0x0000406c)地址的空间区域。所以从扇区 1(地址 0x08008000)后的存储空间都可以作其它用途,使用这些存储空间时不会篡改应用程序空间的数据。 从扇区1开始为文件系统用。
- 刚开始用的是f0.13c后来发现在创建文件系统的时候写进去得位置和读出来的位置根本不一致,假设写位置在0x00,但是读的时候缺是0x03.所以读出来永远都不会对所以判断文件系统的时候,返回nofilesyterm。F0.13建议大家以后也不要用这个版本。
- 文件系统格式FAT12 1扇区=1024字节,1簇=1扇区,stm32f103Veflash内存为512K,每页为2k,所以flash擦除单位为2K(因为没有找到103Ve得flash结构分布,所以一直以为是128页,每页为4k,最后创建文件写然后读的时候一直找不到路径,最后调试发现因为没有擦除所以写路径的时候返回0x02(块为脏块)),将flash从0x0808000到末尾给fatfs文件系统,一共512-8等于504块,但是防止出错,fatfs块数量设为500,如图所示为stm32f103vet6得内部flash结构图