初级会员

- 积分
- 55
- 金钱
- 55
- 注册时间
- 2013-3-12
- 在线时间
- 0 小时
|

楼主 |
发表于 2013-8-15 00:37:34
|
显示全部楼层
回复【8楼】正点原子:
---------------------------------
确实是指针出了问题。我直接定义的指针就拿来用了。将指针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分配了内存。 |
|