初级会员

- 积分
- 61
- 金钱
- 61
- 注册时间
- 2015-1-21
- 在线时间
- 13 小时
|
利用原子哥实现的MP3播放器实现停止功能,已经实现播放/暂停功能,请教怎么实现停止功能呢?代码如下:
u8 mp3_play_song(u8 *pname)
{
FIL* fmp3;
u16 br;
u8 res,rval;
u8 *databuf;
u16 i=0;
u8 key;
uint8_t sign = 1;
uint8_t sign1 = 1;
rval=0;
fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));
databuf=(u8*)mymalloc(SRAMIN,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)
{
VS_Load_Patch((u16*)vs1053b_patch,VS1053B_PATCHLEN);
}
res=f_open(fmp3,(const TCHAR*)pname,FA_READ);//′ò¿aÎļt
if(res==0)
{
VS_SPI_SpeedHigh();
while(rval==0)
{
res=f_read(fmp3,databuf,4096,(UINT*)&br);
i=0;
do
{
if(VS_Send_MusicData(databuf+i)==0)
{
i+=32;
}else
{
key = key_scan(0);
switch(key)
{
case KEY5_PRES:
rval = 3;
break;
case KEY4_PRES: //实现播放/暂停
if(sign == 1)
{
sign = 0;
}
else
{
sign = 1;
}
break;
case KEY2_PRES:
rval=1;
break;
case KEY3_PRES:
rval=2;
break;
case KEY1_PRES: //停止功能实现,可是不能实现,还是暂停
if(sign == 1)
{
sign = 0;
i = 0;
}
else
{
sign1 = 1;
} //ÏÂò»Çú
break;
}
mp3_msg_show(fmp3->fsize);
while(sign == 0)
{
key = key_scan(0);
if(key == KEY4_PRES)
{
sign = 1;
}
}
}
}while(i<4096);
if(br!=4096||res!=0)
{
rval=0;
break;
}
}
f_close(fmp3);
}else rval=0XFF;//3öÏÖ′íÎó
}
myfree(SRAMIN,databuf);
myfree(SRAMIN,fmp3);
return rval;
}
在停止按键按下之后,使 i = 0;直接回到歌曲播放的原点,然后利用播放功能按键直接播放,但是红色部分是播放/暂停功能,还有停止功能,请各位指教实现停止代码哪里有问题?
@原子哥 谢谢大家啦
|
|