- 对于单片机程序,首先要对于要使用的单片机比较了解,对于硬件设计比较了解,对C编程比较熟悉;
- 了解单片机是因为当需要设置某些寄存器的时候,会知道相应的设置方式,避免出现因为寄存器设置造成的不必要的调试时间。
- 对硬件比较了解,因为硬件电路是程序运行的前提,如果硬件电路出现了问题,软件无论如何也跑不起来;
- 对C比较熟悉,因为过了初始化以后主要工作就是由C来承担了;
- 对于需要操作模块的了解与设置,知道相应的设置或操作引发的结果。
- 如果遇到FR_NOT_ENABLED,则是没有正常挂载需要f_mount,挂载成功Flash;
- 如果遇到FR_NO_FILESYSTEM,则需要f_mkfs初始化文件系统,创建Fat文件系统;
- 但是如果遇到了f_mkfs成功了,这时调用f_open时,又出现了FR_NO_FILESYSTEM,该如何是好呢?f_mkfs的哪一点漏洞,会造成没有正确的返回?
- 关于(3)的疑问,找到了是硬件焊接不牢固的问题。
- 虽然(3)的问题解决了,但是在f_open的时候,却依旧返回FR_NO_FILE,即使创建文件,也返回同样的错误,为何?
- (5)的问题在代码上定位到ff.c的1029行,发现注释是Initialize the SFN entry失败。 分析发现既然Flash可创建文件系统,即可写入,这一步通不过应该不是硬件的原因,可能是软件上的某个操作,导致了不正常的文件,于是重新初始化了文件系统,发现可以。应该是因为初始化完成后,没有关闭文件,导致再一次操作时,一直失败。这个时候需要先关闭文件,再次打开。当然,重新f_mkfs也是可以的。