MP3播放时停顿,不连贯,怎么办? 以下分别是读U盘函数和MP3播放函数,[size=3]用一个缓冲区,环形读写[/size],先从U盘读到(void disk_mp3_read(void) )缓冲区,然后从缓冲区读出(void disk_mp3_play(void))送给MP3芯片,[size=4]这种结构行吗?[/size]
#define FILE_DATA_BUF_LEN_MP3 0x1800 uint8 FILE_DATA_BUF1_MP3[FILE_DATA_BUF_LEN_MP3];//缓冲 uint32 file_p; //缓冲播放指针
/////////////////////////////////////////////////////////// void disk_mp3_read(void) { if(((file_p%0x800)==0)||(file_p==0)) { mCmdParam.ReadX.mDataBuffer = &FILE_DATA_BUF1_MP3[file_p]; /* 指向文件数据缓冲区 */ mCmdParam.Read.mSectorCount =4; //读出的扇区数 CH375vFileSize += 511; i = CH375FileReadX( ); /* 从文件读取数据 */ CH375vFileSize -= 511; } } /////////////////////////////////////////////////////////// void disk_mp3_play(void) //播放函数 { if((IO0PIN & MP3_DREQ)!=0) { Mp3SelectData(); SPIPutChar(FILE_DATA_BUF1_MP3[file_p]); //向解码芯片发送数据 Mp3DeselectData(); file_p++; if(file_p==0x1800) file_p=0; } }