小弟写了个简单的函数,函数首先创建一个文件夹Photo,然后在文件夹里面创建一个文件。
但是每次f_open可以成功,但是f_close总是返回0x01,失败。
如果我把f_open,f_close放到一个函数里面,然后让main函数调用,这样就没有问题
麻烦各位大拿帮我看一下是为什么啊?
void camera_new_pathname(u8 *pname)
{
u8 res;
u16 index=0;
while(index<0XFFFF)
{
sprintf((char*)pname,"0
HOTO/PIC%05d.bmp",index);
res=f_open(ftemp,(const TCHAR*)pname,FA_READ);//尝试打开这个文件
if(res==FR_NO_FILE)break;
//该文件名不存在=正是我们需要的.
index++;
}
}
int main(void)
{
FIL* f_bmp;
u8 *pname;
f_bmp=(FIL *)mymalloc(SRAMIN,sizeof(FIL));
//开辟FIL字节的内存区域
mem_init(SRAMIN);
exfuns_init();
f_mount(0,fs[0]);
f_mount(1,fs[1]);
res=f_mkdir("0:/PHOTO");
//创建PHOTO文件夹
pname=mymalloc(SRAMIN,30); //为带路径的文件名分配30个字节的内存
camera_new_pathname(pname);
res=f_open(f_bmp,pname,FA_WRITE|FA_CREATE_NEW);
if(res != 0)
{
printf("
打开 %s 文件失败!
", "0
HOTO/PIC0001.txt");
sd_ok = 0;
}
printf("
打开文件完成.....
");
res = f_close(f_bmp);
if(res != 0)
{
printf("
关闭 %s 文件失败!
", "0
HOTO/PIC0001.txt");
sd_ok = 0;
}
}
?
一周热门 更多>