初级会员

- 积分
- 98
- 金钱
- 98
- 注册时间
- 2019-6-1
- 在线时间
- 17 小时
|
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;
}
|
|