初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2015-7-14
- 在线时间
- 7 小时
|
5金钱
以下是鄙人测试中的一个代码,用来将数据存储到SD中,现在的问题是,如果这段程序单独的在while(1)或者if(1)循环里、如下,是可以一直存储数据的,但是一旦这段程序放下了if的条件语句下面--即若将while(1)改成if(xx==1)之类的,就无法将数据保存到SD卡中,调试程序发现这段存储程序无法运行完整,不知道是什么原因,不知有大神碰到类似情况或者能给个解答么。跪谢!!
while(1)
{
f_mount(0,&fs);
sprintf((char *)file_name,"data%d.txt",num++);
res = f_open(&fnew, (char *)file_name, FA_CREATE_NEW | FA_WRITE );
f_close(&fnew);
printf("%d\n",res);
res = f_open(&fnew, (char *)file_name, FA_READ|FA_WRITE | FA_OPEN_ALWAYS );
res = f_lseek(&fnew,f_size(&fnew));
for(i=0;i<255;i++)
{
sprintf(RS232_buffconv,"%d ",RS232_buff);
if(res == FR_OK)
{
res = f_write(&fnew,RS232_buffconv,4,&bw);
}
}
f_close(&fnew);
f_mount(0, NULL);
}
通过keil的在线调试。程序一直卡在下面这段程序里出不来,网上查了很多资料,也照着改了依旧不行,。
SD_Error SD_WaitReadOperation(void)
{
SD_Error errorstatus = SD_OK;
//????dma?????á??
while ((SD_DMAEndOfTransferStatus() == RESET) && (TransferEnd == 0) && (TransferError == SD_OK))
{}
if (TransferError != SD_OK)
{
return(TransferError);
}
return(errorstatus);
}
求大神们帮助,主要问题是这个程序能在while(1)这样的循环里正常运行,可是一旦跟在判断语句里,就会死循环,很是苦恼,求解脱!! |
|