龙脉战神女主角有mp3格式么?求大神指点

在打开MP3文件的过程中,用串口去监控,一开始的时候还是能看到一些数据的,后来的数据全位0xff,void play_mp3(){& &unsigned int i=0;& &UINT16 s,j,k;& &UINT32 TotalCount_1=0;& &s=mInitCH376Host( ); &/* 初始化CH376 */& &mStopIfError( s );// while(1) {
VS_Ram_Test(); & }& & VS_Sine_Test(); if(VS_HD_Reset()==1) {
&uart1_printf( "硬件复位\n" ); } else {
&uart1_printf( "硬件复位失败\n" );
&while(1); }
& VS_Soft_Reset(); &
//软复位VS10XX && set10XX(); & & & &
//设置音量等信息 & &// VS_Load_Patch((u16*)vs1053b_patch,VS1053B_PATCHLEN); & &while ( CH376DiskConnect( ) != USB_INT_SUCCESS )
/* 检查U盘是否连接,等待U盘插入,对于SD卡,可以由单片机直接查询SD卡座的插拔状态引脚 */
mDelaymS( 100 );
&mDelaymS(200); &/* 延时,可选操作,有的USB存储器需要几十毫秒的延时 */& & & for ( i = 0; i < 100; i ++ )&
mDelaymS( 50 );& & & & & & s = CH376DiskMount( ); &/* 初始化磁盘并测试磁盘是否就绪 */
if ( s == USB_INT_SUCCESS ) &/* 准备好 */
else if ( s == ERR_DISK_DISCON ) &/* 检测到断开,重新检测并计时 */
if ( CH376GetDiskStatus( ) >= DEF_DISK_MOUNTED && i >= 5 ) &/* 有的U盘总是返回未准备好,不过可以忽略,只要其建立连接MOUNTED且尝试 */
&if ( CH376GetDiskStatus( ) < DEF_DISK_MOUNTED )&
{ &/* 未知USB设备,例如USB键盘、打印机等 */
uart1_printf( "Unknown device\n" );
& &while ( CH376DiskConnect( ) == USB_INT_SUCCESS )&
{ &/* 检查U盘是否连接,等待U盘拔出 */
& &mDelaymS( 100 );
uart1_printf( "Please take out\n" );
}& & & & n=rand()%100;
n=1; // uart1_printf( "n= %d\n" );& & &// & change(n, a1);& & & & sprintf(a3, "%s%s", a1, a2);& & & & s = CH376FileOpen("/A.MP3"); &// 打开文件,只能是根目录
if ( s == ERR_MISS_DIR || s == ERR_MISS_FILE ) /* 没有找到目录或者没有找到文件 */
uart1_printf("没有找到目录或者没有找到文件...\n");
//10.22日注释掉的打印语句
else &//打开成功
&{& & & & & & mStopIfError( s );
TotalCount_1=CH376GetFileSize(); &/* 准备读取总长度 *///
uart1_printf("TotalCount= %d\n",(UINT16)TotalCount);
& &while ( TotalCount_1 ) /* 如果文件比较大,一次读不完,可以再调用CH376ByteRead继续读取,文件指针自动向后移动 */
&if ( TotalCount_1 > sizeof(music_buf) )&
i = sizeof(music_buf); &/* 剩余数据较多,限制单次读写的长度不能超过缓冲区大小 */
&else i = TotalCount_1; &/* 最后剩余的字节数 */
&s = CH376ByteRead( music_buf, i, &RealCount ); &/* 以字节为单位读取数据块,单次读写的长度不能超过缓冲区大小,第二次调用时接着刚才的向后读 */
&mStopIfError( s );
&TotalCount -= (UINT8)RealC &/* 计数,减去当前实际已经读出的字符数 */
// for ( s=0; s!=RealC s++ ) uart1_printf( "%02x", buf[s] ); &/* 显示读出的字符 *///
&uart1_printf("i=%d\n",i);//
&uart1_printf("RealCount=%d\n",RealCount);
VS_XDCS=0; &
& & & & & while(k<512)
{// uart1_printf("TotalCount\n");&
while(VS_DQ!=0) //等待DREQ为高
for(j=0;j<32;j++)
&SPIx_ReadWriteByte(buf[j]);
// uart1_printf("发送音频文件中 \n");
// &uart1_printf( "%02 x", ( int)music_buf[s] ); &/* 显示错误 */
// uart1_printf( "32字节完毕\n"); &/* 显示错误 */
VS_XDCS=1; & &
&if ( RealCount < i ) /* 实际读出的字符数少于要求读出的字符数,说明已经到文件的结尾 */
uart1_printf( "\n" );& & & & & & & & & &
}& & & & & & }
uart1_printf( "\n" );
uart1_printf( "\n" );
uart1_printf( "\n" );& & & & & & uart1_printf(0x0A);
s = CH376FileClose( FALSE ); &/* 关闭文件 */
mStopIfError( s );& & & & &}}读出来的数据用串口显示出来了,这些数据不正确,在MP3那边听到刺刺的声音,有没有人遇到过类似的情况啊,我是用51单片机做的,VS1053采用的是IO口模拟的SPI协议void VS_spi_write(unsigned char x){&dat=x; &//将x赋值给可位寻址的变量dat&VS_SI=dat7; //从高位开始输出,从dat7一直到dat0&VS_SCK=0; & //时钟的上升沿,位被写出&VS_SCK=1;&VS_SI=dat6;&VS_SCK=0; &&VS_SCK=1;&VS_SI=dat5;&VS_SCK=0;&&VS_SCK=1;&VS_SI=dat4;&VS_SCK=0; &&VS_SCK=1;&VS_SI=dat3;&VS_SCK=0; &&VS_SCK=1;&VS_SI=dat2;&VS_SCK=0; &&VS_SCK=1;&VS_SI=dat1;&VS_SCK=0; &&VS_SCK=1;&VS_SI=dat0;&VS_SCK=0; &&VS_SCK=1;}unsigned char VS_spi_read(){&VS_SO=1; &//51单片机IO作输入时,先置为1&VS_SCK=1; //时钟下降沿,从设备输出数据&VS_SCK=0;&dat7=VS_SO; //读取从设备数据输出上的值,放到dat7上,8次后可读到一个字节&//uart1_printf( "dat7: %02X\n", (unsigned int)dat7 ); &/* 显示错误 */&VS_SCK=1;&&VS_SCK=0;&dat6=VS_SO;// uart1_printf( "dat6: %02X\n", (unsigned int)dat6 ); &/* 显示错误 */&VS_SCK=1;&&VS_SCK=0;&dat5=VS_SO;// &uart1_printf( "dat5: %02X\n", (unsigned int)dat5 ); &/* 显示错误 */&VS_SCK=1;&VS_SCK=0;&dat4=VS_SO;&// uart1_printf( "dat4: %02X\n", (unsigned int)dat4 ); &/* 显示错误 */&VS_SCK=1;&&VS_SCK=0;&dat3=VS_SO;// &uart1_printf( "dat3: %02X\n", (unsigned int)dat3 ); &/* 显示错误 */&VS_SCK=1;&&VS_SCK=0;&dat2=VS_SO;&// uart1_printf( "dat2: %02X\n", (unsigned int)dat2 ); &/* 显示错误 */&VS_SO=1;&VS_SCK=1;&&VS_SCK=0;&dat1=VS_SO;// uart1_printf( "dat1: %02X\n", (unsigned int)dat1 ); &/* 显示错误 */&VS_SCK=1;&&VS_SCK=0;&dat0=VS_SO;&// uart1_printf( "dat0: %02X\n", (unsigned int)dat0 ); &/* 显示错误 */&return (dat); //将读到的字节返回}u8 SPIx_ReadWriteByte(u8 da){& &VS_spi_write(da);& &return(VS_spi_read());}
不对,我后来把读数据打方式改成扇区读取了,读MP3的部分应该是这样的unsigned char & xdata music_buf[512];void paly(){ unsigned int a=0; UINT16 i=0, s,j,k; UINT32 TotalCount_1;// UINT32 RealC UINT32 &u32DataCnt = 0; char a7[8]={"A.MP3"};// P_FAT_DIR_INFO pD u8 *pu8T// u8 u8R s = mInitCH376Host(); &/* 初始化CH376 */& & mStopIfError( s ); WaitDiskIn();//等待磁盘初始化// while(1) {
VS_Ram_Test(); & }& & VS_Sine_Test(); if(VS_HD_Reset()==1) {
&uart1_printf( "硬件复位\n" ); } else {
&uart1_printf( "硬件复位失败\n" );
&while(1); }
&// VS_Soft_Reset(); &
//软复位VS10XX &&// set10XX(); & & & &
//设置音量等信息 & &// VS_Load_Patch((u16*)vs1053b_patch,VS1053B_PATCHLEN);
/* 其它电路初始化 */// u8Length = CH376ReadBlock(pu8Temp); /*从当前主机端点的接收缓冲区读取数据块,返回长度*/// uart1_printf("u8Length= %d\n",(UINT16)u8Length);// strcpy((char*)pu8Temp, a7[]);&
s = CH376FileOpen("/A.MP3"); &// 打开文件,只能是根目录
mStopIfError( s );
if ( s == ERR_MISS_DIR || s == ERR_MISS_FILE ) /* 没有找到目录或者没有找到文件 */
uart1_printf("没有找到目录或者没有找到文件...\n");
//10.22日注释掉的打印语句
else if ( s == USB_INT_SUCCESS ) &//打开成功
& uart1_printf("打开文件成功\n");
TotalCount_1=CH376GetFileSize();
while (TotalCount_1>512)
& &{ &/* 如果文件比较大,一次读不完,可以再调用CH376ByteRead继续读取,文件指针自动向后移动 */
uart1_printf("进入读取\n");
s=CH376SecRead( music_buf, 1, 0 ); &// 以字节为单位读取数据块,单次读写的长度不能超过缓冲区大小,第二次调用时接着刚才的向后读&
pu8Temp= music_
// & uart1_printf( "RealCount:%d\n", (unsigned int)RealCount );
& & mStopIfError( s );
TotalCount -= 512; &/* 计数,减去当前实际已经读出的字符数 */
VS_XDCS=0; &
& & & & & while(k<512)
{// uart1_printf("TotalCount\n");&
while(VS_DQ!=0) //等待DREQ为高
for(j=0;j<32;j++)
&SPIx_ReadWriteByte(*pu8Temp++);
// uart1_printf("发送音频文件中 \n");
&uart1_printf( "%02x", (unsigned int)*pu8Temp++ ); &/* 显示错误 */
uart1_printf( "32字节完毕\n"); &/* 显示错误 */
VS_XDCS=1;&
TotalCount_1-=512; &&
Alicehunter
初中二年级
CH376SecRead( music_buf, 1, 0 );改成CH376SecRead( music_buf, 1, NULL);其实我觉着,要不这是你打印的问题,要么文件可能就是这样的,你这样试下,自己建一个MP3的文件,然后写512或者更多字节的数据,然后用CH376读出来看看,数据是否是对的。
引用: & & & & & & & & & & & & & &CH376SecRead( music_buf, 1, 0 );改成CH376SecRead( music_buf, 1, NULL);其实我觉着,要不这是你打印的问题,要么文件可能就是这样的,你这样试下,自己建一个MP3的文件,然后写512或者更多字节的数据,然后用CH376读出来看看,数据是否是对的。
& & & & & & & & & & & &
评分扣除自身相应积分,普通会员最高加分3分
你需要登录才可以发帖
江苏沁恒论坛龙脉战神最新章节(天魔圣)_龙脉战神无弹窗广告_爱有声小说网
小说更新时间: & 玄幻小说 & 龙脉战神文/天魔圣龙脉战神最新9章节阅读(倒序)《龙脉战神》简介:《龙脉战神》是由作者天魔圣发表的玄幻小说类小说,小说龙脉战神最新章节,实时同步更新龙脉战神最新章节纯文字无弹窗广告版,书友所发表的龙脉战神评论,并不代表就爱看书网赞同或者支持龙脉战神的读者观点。 武阳城修真世家子弟方笑武,天生九绝命脉,被人陷害,死而复生,吃下一条龙,得上古战神鼎,修炼《九重九劫功》,经武姬姐姐指点,为寻找九美图,得到《战神天书》,踏上了一条修行、寻美、争霸的道路,最终横扫万界,成为第一战神。
如果您对小说龙脉战神最新章节,版权等方面有质疑的,或对本站有意见建议的请告诉我们,如果发现《龙脉战神》小说最新章节有错误请点击错误举报告诉我们。请支持作者的龙脉战神读者一定要到书店购买正版小说或者图书。各位书友要是觉得《龙脉战神》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!好看的书:
爱有声小说网龙脉战神最新章节地址: 分享越多,本书就更新越快哦→《龙脉战神》章节目录《龙脉战神》第一卷&&龙脉战神最新章节列表_龙脉战神最新章节目录_新笔趣阁
& 龙脉战神最新章节列表
武阳城修真世家子弟方笑武,天生九绝命脉,被人陷害,死而复生,吃下一条龙,得上古战神鼎,修炼《九重九劫功》,经武姬姐姐指点,为寻找九美图,得到《战神天书》,踏上了一条修行、寻美、争霸的道路,最终横扫万界,成为第一战神。&&&&qq群:
各位书友要是觉得《龙脉战神》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!
推荐阅读:
《龙脉战神》正文}

我要回帖

更多关于 龙脉战神女主 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信