OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2748|回复: 1

使用FATFS在SD卡内创建一个文件夹,在文件夹内在新建一个文本文件,新建文本文件超过4个就出现乱码,创建不了新文件了

[复制链接]

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2019-6-1
在线时间
17 小时
发表于 2020-5-5 09:45:01 | 显示全部楼层 |阅读模式
85d2ee1fe708086ef2080883626e6c0.jpg
uint8_t SdCardSaveData(char *str)
{
        RTC_DateTypeDef sDate;
  RTC_TimeTypeDef sTime;
  char file_name[16] = {0};

  RTC_GetDateAndTime(&sDate, &sTime);
  sprintf(file_name, "CH4_%02d-%02d-%02d.txt", sDate.Year, sDate.Month, sDate.Date);
       
        IWDG_Feed();
    SdCardCsPinInit();
        SdCardSpiInit();
        FatFs_Init();
       
        IWDG_Feed();
  /* Mount SD Card */
  if(f_mount(&fs, "0:", 1) != FR_OK)
  {
    SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
    return RESET;
  }

  IWDG_Feed();
  /* Search Dir */
  if(f_opendir (&dir, "REC_DATA") != FR_OK)
  {
    /* Create Dir */
    if(f_mkdir ("REC_DATA") != FR_OK)
    {
      SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
      return RESET;
    }
  }

  IWDG_Feed();
  /* Change Current Dir */
  if(f_chdir ("REC_DATA") != FR_OK)
  {
    SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
    return RESET;
  }

  IWDG_Feed();
  /* Open file to write */
  if(f_open(&fil, file_name, FA_OPEN_ALWAYS | FA_READ | FA_WRITE) != FR_OK)
  {
    SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
    return RESET;
  }

  IWDG_Feed();
  f_puts(REC_HEADER, &fil);

  IWDG_Feed();
  /* Check free space */
  if(f_getfree("", &fre_clust, &pfs) != FR_OK)
  {
    SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
    return RESET;
  }

  total_space = (uint32_t)((pfs->n_fatent - 2) * pfs->csize * 0.5);
  free_space = (uint32_t)(fre_clust * pfs->csize * 0.5);

  IWDG_Feed();
  /* Free space is less than 2kb */
  if(free_space >= 2)
  {
    //SdCardErrorHandler(FILENAME(__FILE__), __LINE__);

    /* Move to the end of the file */
    if(f_lseek(&fil, f_size(&fil)) != FR_OK)
    {
      SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
      return RESET;
    }

    /* Writing text */
    f_puts(str, &fil);
  }

  IWDG_Feed();
  /* Close file */
  if(f_close(&fil) != FR_OK)
  {
    SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
    return RESET;
  }

  // /* Open file to read */
  // if(f_open(&fil, "first.txt", FA_READ) != FR_OK)
  //   SdCardErrorHandler(FILENAME(__FILE__), __LINE__);

  // while(f_gets(buffer, sizeof(buffer), &fil))
  // {
  //   //LOG("%s", buffer);
  // }

  // /* Close file */
  // if(f_close(&fil) != FR_OK)
  //   SdCardErrorHandler(FILENAME(__FILE__), __LINE__);

  IWDG_Feed();
  /* Unmount SDCARD */
  if(f_mount(NULL, "0:", 1) != FR_OK)
  {
    SdCardErrorHandler(FILENAME(__FILE__), __LINE__);
    return RESET;
  }

  LOG("SD Card : Saved data in file %s\n\r", file_name);
  return SET;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2019-6-1
在线时间
17 小时
 楼主| 发表于 2020-5-5 09:54:15 | 显示全部楼层
请问那个大神遇到类似情况。如何解决的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 10:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表