[mw_shl_code=c,true]FIL File;[/mw_shl_code]
[mw_shl_code=c,true]FIL* CreateNewFile(void)
{
__align(8) RTC_TimeTypeDef RTC_TimeStruct; //__align(8) 8字节对其
__align(8) RTC_DateTypeDef RTC_DateStruct;
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStruct);
RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
LCD_ShowNum(200, 320, ++m, 8, 16);
sprintf(FileName, "%02d%02d%02d%02d.txt",
RTC_DateStruct.RTC_Date,
RTC_TimeStruct.RTC_Hours,
RTC_TimeStruct.RTC_Minutes,
RTC_TimeStruct.RTC_Seconds);
LCD_ShowNum(200, 350, ++n, 8, 16);
while(res_open!=0)
{
res_open = f_open(&File, FileName, FA_OPEN_ALWAYS | FA_WRITE);
if(++open > 2)
{
sprintf(CntBuf, "f_open = %d", res_open);
LCD_ShowString(60, 80, 210, 16, 16, CntBuf);
}
}
res_open = 1; open = 0;
while(res_lseek!=0)
{
res_lseek = f_lseek(&File, 0);
if(++lseek > 2)
{
sprintf(CntBuf, "f_lseek = %d", res_lseek);
LCD_ShowString(60, 110, 210, 16, 16, CntBuf);
}
}
res_lseek = 1; lseek = 0;
#ifdef __SHOW_SD_PROCEDURE__
LCD_ShowString(60, 140, 210, 16, 16, FileName);
#endif
LCD_ShowString(60, 170, 210, 16, 16, " CreateNewFile = ");
LCD_ShowNum(200, 170, ++i, 8, 16);
return &File;
}[/mw_shl_code]
[mw_shl_code=c,true]经过设标志位,发现是上面的程序出现问题了。[/mw_shl_code]
[mw_shl_code=c,true]
[mw_shl_code=c,true] while(res_open!=0)
{
res_open = f_open(&File, FileName, FA_OPEN_ALWAYS | FA_WRITE);
if(++open > 2)
{
sprintf(CntBuf, "f_open = %d", res_open);
LCD_ShowString(60, 80, 210, 16, 16, CntBuf);
}
}
res_open = 1; open = 0;[/mw_shl_code]
这块死了,可是我设置的如果打开文件查过两次,就显示"f_open = %d",但是没有显示,这是怎么回事?
[/mw_shl_code]
|