OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2679|回复: 1

VS1053自动切歌时无法清空音频数据,切换时有一点其他歌的声音,手动切换可以

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
30
金钱
30
注册时间
2016-7-22
在线时间
4 小时
发表于 2016-11-2 16:04:55 | 显示全部楼层 |阅读模式
1金钱
我移植的是原子哥miniSTM32开发板列程MP3播放,有一些改动,在自动切换歌曲时会播放不是下一首的歌,播放时长大约为我一个循环发送的数据【4096】,还请大侠帮忙看看。
以下是播放程序:在VS1053忙的时候有插入一些定时器中断。
u8 MUSIC_BUFFER[4096];
u8 Play_Song(u16 index,u16 total)
{         
        u32 bfactor,starttick;
        u32 bcluster;
        u16 count;
        u8 key,n;
        u16 i;         
        u8 pause=0;  

          FileInfoStruct FileInfo;
        i=Get_File_Info(Cur_Dir_Cluster,&FileInfo,T_MP3|T_WMA|T_WAV|T_MID|T_FLAC|T_OGG,&index);   
        if(i==0)return 0xff;                       
        VS_Restart_Play();                                 
        VS_Set_All();                                                         
        VS_Reset_DecodeTime();       
        if(VS10XX_ID==VS1053)
        {          
                if(FileInfo.F_Type==T_FLAC)VS_Load_Patch((u16*)vs1053b_patch,VS1053B_PATCHLEN);                  
        }else
        {
                if(FileInfo.F_Type==T_FLAC||FileInfo.F_Type==T_OGG)return 0xfd;
        }
                                                                 
        bfactor=fatClustToSect(FileInfo.F_StartCluster);         
        bcluster=FileInfo.F_StartCluster;                                     
        count=0;                                                                        
        while(1)  
        {
                //starttick= HAL_GetTick();
            if(SD_ReadDisk(MUSIC_BUFFER,bfactor,8))break;
                //LCD_ShowNum(110,210,HAL_GetTick()-starttick,6);
                SPI1_SetSpeed(SPI_BAUDRATEPRESCALER_4);
//starttick= HAL_GetTick();
                count = count+8;
                i=0;
                do     
            {              
                        if(VS_DQ!=0&&pause==0)
                        {                                    

                                 if(VS_Send_MusicData(MUSIC_BUFFER+i)==0)
                                        i= i+32;
                        }else
                        {
                                HAL_RTCEx_RTCEventCallback(&hrtc);    //外部RTC中断。
                                HAL_TIM_PeriodElapsedCallback(&htim3); //外部定时器中断。
                                HAL_TIM_PeriodElapsedCallback(&htim4); //外部定时器中断。
                                HAL_TIM_PeriodElapsedCallback(&htim5); //外部定时器中断。
                        if(mp3control)  //按键切换也放入忙时判断
                        {
                                switch(mp3control)
                                {
                                        case 1:
                                                return 1;
                                        case 2:
                                                return 2;
                                        case 3:
                                                pause=!pause;
                                }
                        }       
                }                       
                }while(i<4095);       
                MP3_Msg_Show(FileInfo.F_Size,index,total);            
            bfactor = bfactor+8;                
                //LCD_ShowNum(160,210,HAL_GetTick()-starttick,6);
            if(count>=SectorsPerClust)
            {                                                                          
                count=0;                                                     
                bcluster=FAT_NextCluster(bcluster);       
                        //printf("NEXT:%d\n",bcluster);;   
                       
                        if((FAT32_Enable==0&&bcluster==0xffff)||bcluster==0x0ffffff8||bcluster==0x0fffffff)break;//error       
                bfactor=fatClustToSect(bcluster);
            }
        }       
                       
        return 0;               
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
30
金钱
30
注册时间
2016-7-22
在线时间
4 小时
 楼主| 发表于 2016-11-7 08:58:58 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 23:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表