初中生
最后登录1970-1-1
在线时间 小时
注册时间2021-8-10
|
使用野火提供的例程代码进行编改,文件挂载部分成功,可以进行读写操作,问题在于:打开文件,写入数据,关闭文件,再次打开,读取到的内容为空,如果使用FA_OPEN_EXISTING,则提示找不到文件,但是如果在不关闭文件的情况下,即写完数据马上读取文件内容,可以读取到写入的数据
已经尝试过f_sync函数刷新缓冲区,并不能解决问题,使用获取flash大小的函数,发现flash在创建文件后,可用容量减少
目前没有头绪来解决这个文件找不到的问题,希望能得到帮助
下面是部分代码
- //擦除FLASH
- SPI_FLASH_BulkErase();
- //挂载文件系统
- printf("\n挂载文件系统\n");
- res = f_mount(&fsObject,"1:",1);
- while(res ==FR_NOT_READY)
- {
- res = f_mount(&fsObject,"1:",1);
- }
- if(res == FR_NO_FILESYSTEM)
- {
- f_mkfs("1:",0,0);
- }
- res = f_mount(&fsObject,"1:",1);
- if(res==FR_OK)
- {
- printf("\n挂载成功\n");
- printf("\n进行文件读写测试\n");
- }
- while (DEF_TRUE)
- {
- memset(newName,0,sizeof(newName));
- memset(fileName,0,sizeof(fileName));
- memset(wData,0,sizeof(wData));
- strcat(newName,"1:");
- printf("\n请输入要创建的文件名\n");
- scanf("%s\n",fileName);
- printf("\n%s\n",fileName);
- strcat(newName,fileName);
- printf("\n请输入文件内容\n");
- while((ch=getchar())!='\n')
- {
- wData[i] = ch;
- i++;
- }
- printf("\n%s\n",wData);
- res= f_open(&fp,newName,FA_CREATE_ALWAYS|FA_OPEN_EXISTING|FA_READ|FA_WRITE);
- if(res == FR_OK)
- {
- printf("\n创建文件%s\n",fileName);
- res = f_write(&fp,wData+1,sizeof(wData),&bw);
- if(res==FR_OK)
- {
- printf("\n写入数据成功,写入数据为: %s \n",wData+1);
- }
- f_sync(&fp);
- f_lseek(&fp,0);
- // printf("\n读取文件%s\n",fileName);
- res = f_read(&fp,rData,f_size(&fp),&br);
- // if(res == FR_OK)
- // {
- // printf("\n读取成功,文件内容为:%s\n",rData);
- // }
- res = f_close(&fp);
- }
- printf("\n读取文件%s\n",fileName);
- res= f_open(&fp,newName,FA_OPEN_ALWAYS|FA_READ|FA_WRITE);
- if(res == FR_OK)
- {
- res = f_read(&fp,rData,f_size(&fp),&br);
- if(res == FR_OK)
- {
- printf("读取内容为 =%s\n",rData);
- }
- f_close(&fp);
- }
复制代码
|
|