MP3播放時停頓,不連貫,怎么辦? 以下分別是讀U盤函數(shù)和MP3播放函數(shù),[size=3]用一個緩沖區(qū),環(huán)形讀寫[/size],先從U盤讀到(void disk_mp3_read(void) )緩沖區(qū),然后從緩沖區(qū)讀出(void disk_mp3_play(void))送給MP3芯片,[size=4]這種結(jié)構(gòu)行嗎?[/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]; /* 指向文件數(shù)據(jù)緩沖區(qū) */ mCmdParam.Read.mSectorCount =4; //讀出的扇區(qū)數(shù) CH375vFileSize += 511; i = CH375FileReadX( ); /* 從文件讀取數(shù)據(jù) */ CH375vFileSize -= 511; } } /////////////////////////////////////////////////////////// void disk_mp3_play(void) //播放函數(shù) { if((IO0PIN & MP3_DREQ)!=0) { Mp3SelectData(); SPIPutChar(FILE_DATA_BUF1_MP3[file_p]); //向解碼芯片發(fā)送數(shù)據(jù) Mp3DeselectData(); file_p++; if(file_p==0x1800) file_p=0; } }