stm32f103zet6、vs1053b音乐播放器的快进快退,我的是按键控制的。看了战舰版的综合实验里面的相关代码不太懂?可以说一下思路吗?这个是战舰版的代码,但是它是触屏的,跟按键控制的不太一样。
res=progressbar_check(audioprgb,&in_obj);
if(res&&((audioprgb->sta&&PRGB_BTN_DOWN)==0))//被按下了,并且松开了,执行快进快退
{
//printf("audioprgb->curpos:%d
",audioprgb->curpos);
lrcdev->curindex=0; //重新设置歌词位置为0.
lrcdev->curtime=0; //重设时间
audioprgb->curpos=audiodev.file_seek(audioprgb->curpos);//快进快退
}
按键按下之后该怎么偏移一定的长度, 偏移了一定长度之后播放的时间怎么能正确的显示,下面是我的代码,出现的现象是:按下按键之后,直接跳会那首歌的开头,但是时间还是继续加下去,播放时间没变。该怎么解决?
case KEY6_PRES: //快进
{
u8 chgch;//文件偏移量
chgsch-=1;
u16 i=0;
FIL* fmp3;
if(chgsch&&((VS_RD_Reg(SPI_STATUS)&0x80)==0))//快进、快退
{
uint32_t sch=0;
uint16_t numb=0;
uint8_t dat[32]={0};
VS_Set_Vol(10);
numb=VS_Get_EndFillByte()&0xff;
for(i=0;i<32;i++)dat[i]=numb;
i=0;
for(i=0;i<2048+32;)
{
if(VS_Send_MusicData(dat)==0)i+=32;
}
VS_Set_Speed(2);
sch=chgsch&(*fmp3).fsize/0xff;
f_lseek(fmp3,sch);
VS_Set_Vol(vsset.mvol);
chgsch=0;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>