Fork me on GitHub

一 问题
最近使用到了文件系统的读写,中间遇到了一些问题值得深思。
 
二 源码解析
创建文件:
  FRESULT res;

  do
  {
    sprintf(filename,"/sensor_signal/sensor_%d.bin",file_num++);
    mprintf("filename is:%s \n\r",filename);

    res=f_open(&file, filename, FA_CREATE_NEW  | FA_WRITE);
  }while(res!=FR_OK);

写文件:

    for (uint i = 0; i < 255; i++)
    {
      /* code */
      memset(TF_Buffer,i,TF_Buffer_Size);
      f_write( &file,  TF_Buffer ,   TF_Buffer_Size,   &bw);
      osDelay(20);
    }
    
    f_close(&file);

读文件:

    res=f_open(&file, filename, FA_READ);
    while (1)
    {
      /* code */
      memset(TF_Buffer,0x00,TF_Buffer——Size);
      osDelay(200);

      FRESULT res = f_read( &file,  TF_Buffer , TF_Buffer_Size,   &bw);
      if(bw < 1)
      {
        mprintf("file read over \n\r");
        break;
      }
      else
      {

      }
      mprintf("file read len is:%d \n\r",bw);

      dump8(TF_Buffer,40);
      osDelay(200);

    }
三 总结
A.文件执行了
f_close(&file);
才会被存储到sd卡中。
B 读文件只能从sd卡中读,无法从缓存中读取。
posted on 2023-04-18 17:46  虚生  阅读(189)  评论(0)    收藏  举报