新手入门
- 积分
- 11
- 金钱
- 11
- 注册时间
- 2016-5-9
- 在线时间
- 0 小时
|
在板子上跑 mp3程序时不能播放音乐,通过调试发现在下面这段程序中无法打开mp3文件,不知道这是怎么回事,求助啊!急!
u8 mp3_play_song(u8 *pname)
{
FIL* fmp3;
u16 br;
u8 res,rval;
u8 *databuf;
u16 i=0;
u8 key;
rval=0;
fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申请内存
databuf=(u8*)mymalloc(SRAMIN,4096); //开辟4096字节的内存区域
if(databuf==NULL||fmp3==NULL)rval=0XFF ;//内存申请失败.
if(rval==0)
{
VS_Restart_Play(); //重启播放
VS_Set_All(); //设置音量等信息
VS_Reset_DecodeTime(); //复位解码时间
res=f_typetell(pname); //得到文件后缀
if(res==0x4c)//如果是flac,加载patch
{
VS_Load_Patch((u16*)vs1053b_patch,VS1053B_PATCHLEN);
}
res=f_open(fmp3,(const TCHAR*)pname,FA_READ);//打开文件
LCD_ShowNUM(200,220,3,res,0,BLUE,WHITE);
if(res==0)//打开成功.
{
VS_SPI_SpeedHigh(); //高速
while(rval==0)
{
res=f_read(fmp3,databuf,4096,(UINT*)&br);//读出4096个字节
i=0;
do//主播放循环
{
if(VS_Send_MusicData(databuf+i)==0)//给VS10XX发送音频数据
{
i+=32;
}else
{
key=KEY_Scan(0);
switch(key)
{
case KEY1_PRES:
rval=1; //下一曲
break;
case KEY2_PRES:
rval=2; //上一曲
break;
}
mp3_msg_show(fmp3->fsize);//显示信息
}
}while(i<4096);//循环发送4096个字节
if(br!=4096||res!=0)
{
rval=0;
break;//读完了.
}
}
f_close(fmp3);
}else rval=0XFF;//出现错误
}
myfree(SRAMIN,databuf);
myfree(SRAMIN,fmp3);
return rval;
} |
|