高级会员

- 积分
- 616
- 金钱
- 616
- 注册时间
- 2014-2-26
- 在线时间
- 1 小时
|
5金钱
void wav_play_task(void *pdata)
{
FRESULT res;
DIR tdir;
FILINFO info;
INT8U err;
char *fn; /* This function is assuming non-Unicode cfg. */
FIL *tfile;
u8 *databuf;
u16 br=0;
u16 i=0;
tfile=(FIL *)mymalloc(SRAMIN,sizeof(FIL));
databuf=(u8 *)mymalloc(SRAMIN,512);
#if _USE_LFN
info.lfsize = _MAX_LFN * 2 + 1;
info.lfname = mymalloc(SRAMIN,info.lfsize);
#endif
while(tfile==NULL||info.lfname==NULL||databuf==NULL)
Show_Str(10,20,200,12,"?????ê???§°?",12,0);
res = f_opendir(&tdir,"0:/RECORDER"); //?ò??????????
if(res)Show_Str(10,20,200,12,"???????ò???§°?",12,0);
while(res == FR_OK)
{
OSSemPend(flag_play,0,&err);
VS_HD_Reset(); //??????
VS_Soft_Reset(); //?í????
VS_Set_Vol(220); //?è??????
VS_Reset_DecodeTime(); //?????????±??
dir_sdi(&tdir,index);
res = f_readdir(&tdir, &info); //????????????????????
while(res != FR_OK || info.fname[0] == 0)
Show_Str(10,20,200,12,"?????÷???§°?",12,0);
#if _USE_LFN
fn = *info.lfname ? info.lfname : info.fname;
#else
fn = info.fname;
#endif
LCD_ShowString(10,20,200,12,12,(u8*)fn); 能够正常得到文件的名字 但是下一步打开这个文件就出问题了
res=f_open(tfile,(const TCHAR*)fn,FA_READ);//?ò?????? res的值为FR_NO_FILE
while(res)Show_Str(10,20,200,12,"?????ò???§°?",12,0); 能够执行这一句 显示文件打开失败 之后就进入一个stm32的死循环
// if(res==FR_OK)//?ò??????.
// {
// VS_SPI_SpeedHigh(); //????
// while(1)
// {
// res=f_read(tfile,databuf,512,(UINT*)&br);//????512??×???
// i=0;
// do//?÷??·????·
// {
// if(VS_Send_MusicData(databuf+i)==0)i+=32;//??VS10XX·???????????
// else recoder_show_time(VS_Get_DecodeTime());//??????·??±??
// }while(i<512);//???··???512??×???
// if(br!=512||res!=0)
// {
// break;//???ê??.
// }
// if(OSSemAccept(flag_play))
// {
// break;
// }
// delay_ms(5);
// }
// }
}
myfree(SRAMIN,info.lfname);
myfree(SRAMIN,tfile);
myfree(SRAMIN,databuf);
}
进入了 这个死循环
void MemManage_Handler(void)
{
/* Go to infinite loop when Memory Manage exception occurs */
while (1)
{
}
}
大家帮忙看看怎么回事
另外 怎么发帖子能让贴的代码 格式不变 我看以后的人贴的代码 跟编译器上显示的差不多 我贴出来怎么就这样
|
|