最近踩的一个坑,stm32挂载好了一个fatfs,串口打印正常,但是只要是插入电脑,此时,往电脑中存入文件,都很正常然后复位stm32,就会导致fatfs重新格式化!!!文件全丢!
串口打印

数据正常的很,然后很高兴的插入电脑看看,可以正常识别

拷入文件试试,也可以
问题来了
复位一下stm32

原因
从这里也就可以看出,就是在插入到电脑的时候,出现了问题
首先就是怀疑fatfs的不同,电脑在格式化的时候是8092,而程序的fatfs的扇区是4096
我就是试了格式化,然后格式为fat16,扇区选择4096,也还是不行
怀疑是不是,关于usb u盘 和fafs之间没有移植好
试了很久都不行,然后回头去看了一下大容量U盘的写入代码,发现了问题,再写入之前,直接执行了一次擦除

正常在写入的时候,都是先擦除再写入,然后,这个在插入电脑的时候,就会把stm32 构建的fatfs直接擦除了,下面的那个写入函数 norflash_write 已经有了擦除的判断,有内容就先拷贝,然后再擦除,写入数据。
移植的时候,一定要仔细看看!!

#好好学习!