OpenEdv-开源电子网

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

关于使用VS1053播放音乐的问题

[复制链接]

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2014-10-11
在线时间
0 小时
发表于 2014-10-29 10:31:54 | 显示全部楼层 |阅读模式
5金钱
  很奇怪...
 在debug状态下,音乐能够正常播放,但是debug优化状态和release状态下都不能播放成功,而且没有声音,不知道怎么回事,可能是哪方面的原因呢?附上程序:
[mw_shl_code=c,true]UINT8 PlayMusic(PUINT8 pname) { UINT8 s; UINT32 i; UINT32 FileLength=0; PUINT8 databuf=NULL; VSInit(); //此处,必须初始化 IOWR(KEY_RECORD_OUT_BASE,0,1); //写入拉高,播放 s=CH376FileOpenPath(pname); if(s==ERR_MISS_DIR||s==ERR_MISS_FILE){ printf("No found!\n"); return 1; } else{ //打开正常 FileLength=CH376GetFileSize(); printf("FileLength=%ld\n",FileLength); databuf=(PUINT8)malloc(32*sizeof(UINT8)); //申请分配动态内存空间 if(NULL==databuf) return 1; //检查动态内存空间分配是否成功 i=0; while(i<FileLength){ CH376ByteRead(databuf,32,NULL); VS_Send_MusicData(databuf); i+=32; } i=0; CH376FileClose(FALSE); IOWR(KEY_RECORD_OUT_BASE,0,0); if(NULL!=databuf){ free(databuf);databuf=NULL; //释放分配的动态内存空间 } return 0; } }[/mw_shl_code]
其中,
[mw_shl_code=c,true]UINT8 VS_Send_MusicData(PUINT8 buf) { UINT8 n; while(IORD(VS_DQ_BASE,0)==0); //等待空闲 IOWR(VS_XDCS_BASE,0,0); //发送数据 for(n=0;n<32;n++) { Write_Vs_Byte(buf[n]); } IOWR(VS_XDCS_BASE,0,1); //取消发送数据 IOWR(VS_XCS_BASE,0,1); return 0; //成功发送了 }[/mw_shl_code]
就先这样...

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2014-10-29 23:05:57 | 显示全部楼层
仿真一下,看看读数据,什么的正常不。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-30 13:38:35 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
嗯嗯,做过了,读出的数据是完全正确的。现在初步认定是VS1053初始化的问题,因为在release状态下VS1053ReadReg(VS_SCI_MODE)读出的数据一直不稳定,而且看了很多数据,好像根本就不可能达到0x0800,出现最多的反而是0x8000。同学说应该是延时的问题,原子哥以经验觉得应该是什么问题捏?
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-30 16:25:45 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
初始化的问题已经解决了,在release状态下对VS1053的时序要求比较严格,所以添加了正确的时序就OK了。现在有两个问题想咨询下:
1、上面所发的第一个程序中有这个语句:FileLength=CH376GetFileSize();
     现在的问题是:FileLength得出的值竟然是-1,但打印出的pname值是正确的文件名,所以不知道该怎么解决。之前遇到过类似的问题,第二天再看的时候,可能就解决了;
2、关于优化等级的问题:optimize(-01)、optimize more(-02)、optimize most(-03)、optimize size(-0s)。现在所使用的优化等级是optimize size(-0s)程序运行成功,但如果是optimize(-01)、optimize more(-02)、optimize most(-03)就不成功。想问下它们都分别优化掉什么,是不是不能具体知道它们是怎么优化的,optimize size(-0s)是不是优化掉代码最少的。
谢谢原子哥...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2014-10-30 22:48:35 | 显示全部楼层
回复【4楼】ss_yy:
---------------------------------
1,没用过CH376,你得自己找下资料。 
2,这种问题,你得先仿真,定位优化后问题出在哪里,然后再去分析问题。
一般我遇到这种,就是u8改为vu8就解决了。不过具体的害的结合你的情况分析了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-11-4 16:19:41 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
嗯嗯,还是时序的问题,已经解决了。至于optimize size(-0s),是这几个中优化级别最高的,优化掉的代码最多,速率很高,所以相应的时序也不能太大,目前我只查到了这些...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2014-11-4 17:27:16 | 显示全部楼层
回复【6楼】ss_yy:
---------------------------------
刚好反了。
-O0是优化级别最低的,速度最慢的。
但是调试效果最好
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-11-5 11:47:10 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子哥看错了吧,是optimize size(-0s),不是None(-00),嘿嘿...
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-11-5 11:55:43 | 显示全部楼层
回复【7楼】正点原子:
--------------------------------
有一件事情不知道原子哥有没有遇到过,就是录完音之后立刻释放按键播放音乐,听到的声音好像不是很完整,尾音不全的样子。我觉得,可能是因为录完音,听到音乐以及手指松开之间会有一定的反应时间,所以无需立刻松开按键,搞得像打仗似的,以正常反应就可以了。不知道想法是不是正确...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2014-11-5 14:48:00 | 显示全部楼层
回复【8楼】ss_yy:
---------------------------------
我的编译器只有:-O0,-O1和-O2
没看到有-Os哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-30 06:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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