stm32f103zet6、vs1053b音乐播放器的快进快退

2019-07-20 23:42发布

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;
                                                                                }
                                                        }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 05:39
播放时间,你可以根据文件大小和当前读取到的文件指针,来计算时间,不过有一些不准,大体还是对的。 至于你说的快进,你只需要检查按键是否按下,如果按下就偏移一定的位置,就行了,不难的。
123GFGD
2楼-- · 2019-07-21 05:47
 精彩回答 2  元偷偷看……
渡渡
3楼-- · 2019-07-21 06:17
这个音乐播放器有没有实现啊!我现在是用emwin写界面菜单,其中有一个菜单是做音乐的,工程能分享一下吗

一周热门 更多>