移植fatfs时,挂载没问题f_mount(0,fs0);返回0,打开文件res = f_open(filesrc,"0:/src.txt",FA_WRITE);(这个文件已在SD卡中),返回9,FR_INVALID_OBJECT。可能是什么原因?SD卡检测和读容量没有问题,ffconf.h中设置#define _USE_LFN 0,#define _CODE_PAGE 1(ASCII only)。这样设置后需要加什么像cc936.c这种转码文件吗?或者还需要什么设置?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
确实是指针出了问题。我直接定义的指针就拿来用了。将指针filesrc作为res = f_open(filesrc,"0:src.txt",FA_OPEN_ALWAYS|FA_WRITE);的参数,因为filesrc只定义没给值,初值为0,进入函数f_open后有一句if (!fp) return FR_INVALID_OBJECT;,因为fp即是filesrc,为0,所以返后了9号错误。
若定义FIL filesrc;,再调用函数res = f_open(&filesrc,"0:src.txt",FA_OPEN_ALWAYS|FA_WRITE);,就会返回12错误,因为进入函数f_openc中的函数hk_mounted,里面有两句fs = FatFs[vol];if (!fs) return FR_NOT_ENABLED;,fs应该就是驱动器挂载的指针,即fs0,也是只定义没赋值,为0,所以返回12号错误。
我看原子哥的的例程,写的是f_mount(0,fs[0]);,fs[0]是指针,所以就想当然在自己的程序中直接用指针了,没注意到其实原子哥在exfuns.c中的函数exfuns_init中给数组fs分配了内存。
一周热门 更多>