OpenEdv-开源电子网

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

音乐播放器的程序问题

[复制链接]

49

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-3-27
在线时间
9 小时
发表于 2013-5-5 09:29:29 | 显示全部楼层 |阅读模式
void VS_Restart_Play(void)
{
 u16 temp;
 u16 i;
 u8 n;  
 u8 vsbuf[32];
 for(n=0;n<32;n++)vsbuf[n]=0;//清零
 temp=VS_RD_Reg(SPI_MODE); //读取SPI_MODE的内容
 temp|=1<<3;     //设置SM_CANCEL位
 temp|=1<<2;     //设置SM_LAYER12位,允许播放MP1,MP2
 VS_WR_Cmd(SPI_MODE,temp); //设置取消当前解码指令
 for(i=0;i<2048;)   //发送2048个0,期间读取SM_CANCEL位.如果为0,则表示已经取消了当前解码
 {
  if(VS_Send_MusicData(vsbuf)==0)//每发送32个字节后检测一次
  {
   i+=32;      //发送了32个字节
      temp=VS_RD_Reg(SPI_MODE); //读取SPI_MODE的内容
    if((temp&(1<<3))==0)break; //成功取消了
  } 
 }
 if(i<2048)//SM_CANCEL正常
 {
  temp=VS_Get_EndFillByte()&0xff;//读取填充字节
  for(n=0;n<32;n++)vsbuf[n]=temp;//填充字节放入数组
  for(i=0;i<2052;)
  {
   if(VS_Send_MusicData(vsbuf)==0)i+=32;//填充  
  }    
 }else VS_Soft_Reset();   //SM_CANCEL不成功,坏情况,需要软复位   
 temp=VS_RD_Reg(SPI_HDAT0);
    temp+=VS_RD_Reg(SPI_HDAT1);
 if(temp)     //软复位,还是没有成功取消,放杀手锏,硬复位
 {
  VS_HD_Reset();      //硬复位
  VS_Soft_Reset();    //软复位
 }
}

程序中的temp|=1<<2;     //设置SM_LAYER12位,允许播放MP1,MP2是不是错了啊,SM_LAYER12位为SCI_MODE的D1,SM_RESET位为SCI_MODE的D2.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-5 10:25:01 | 显示全部楼层
回复【楼主位】朱静:
---------------------------------
确实错了,是1<<1位才对
谢谢指出。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
发表于 2013-5-20 10:45:37 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
if((temp&(1<<3))==0)break; //成功取消了
为什么不是temp&(1<<3)==1;呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-20 17:36:27 | 显示全部楼层
回复【3楼】chenyuedv:
---------------------------------
为什么你认为是temp&(1<<3)==1;呢?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
发表于 2013-5-20 21:19:33 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
SM_CANCEL=0---不取消
              1---取消
取消后是自动清除的。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-21 00:10:16 | 显示全部楼层
那等于1的时候,是取消了,还是没取消?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-10-18
在线时间
20 小时
发表于 2013-10-18 15:00:05 | 显示全部楼层
 

在 mp3player.c程序中
//播放一曲指定的歌曲                           
//返回值:0,正常播放完成
//   1,下一曲
//       2,上一曲
//       0XFF,出现错误了
u8 mp3_play_song(u8 *pname)
{  
         i=0;
    do//主播放循环
       {   
     if(VS_Send_MusicData(databuf+i)==0)//给VS10XX发送音频数?,

              //0发送成功
     {
      i+=32;
     }else  
     {
      key=KEY_Scan(0);
      switch(key)
      {
       case KEY_RIGHT:
        rval=1;  //下一曲
        break;
       case KEY_LEFT:
        rval=2;  //上一曲
        break;
       case KEY_UP: //音量增加
        if(vsset.mvol<250)
        {
         vsset.mvol+=5;
          VS_Set_Vol(vsset.mvol); 
        }else vsset.mvol=250;
        mp3_vol_show((vsset.mvol-100)/5); //音量限制在:100~250,显示的时候,按照公式(vol-100)/5,显示,也就是0~30  
        break;
       case KEY_DOWN: //音量减
        if(vsset.mvol>100)
        {
         vsset.mvol-=5;
          VS_Set_Vol(vsset.mvol); 
        }else vsset.mvol=100;
        mp3_vol_show((vsset.mvol-100)/5); //音量限制在:100~250,显示的时候,按照公式(vol-100)/5,显示,也就是0~30  
        break;
      }
      mp3_msg_show(fmp3->fsize);//显示信息    
     }         
    }while(i<4096);//循环发送4096个字节


在do while语句中
什么情况不执行发送语句,执行下面的键入判断?在这个程序中按键的选择判断是查询?还是中断?
 if(VS_Send_MusicData(databuf+i)==0)//给VS10XX发送音频数?,

     {
      i+=32;
     }else  
     {
key=KEY_Scan(0);
      switch(key)
      {
       case KEY_RIGHT:
        rval=1;  //下一曲
        break;
       case KEY_LEFT:
        rval=2;  //上一曲

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-18 16:21:41 | 显示全部楼层
回复【7楼】effortswyh:
---------------------------------
根据DREQ信号的,你进入VS_Send_MusicData函数,看看代码,就清楚清楚了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-10-18
在线时间
20 小时
发表于 2013-10-19 09:29:37 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
谢谢,我看看了他的硬件说明,他是DREQ有效然后发送32个字节,然后判断一次。
回复 支持 反对

使用道具 举报

1

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-10-18
在线时间
20 小时
发表于 2013-10-19 10:31:18 | 显示全部楼层
在请教个问题啊,我如果想实现自动录音(就是机子一直开着,有声音它自动录音没声音自动停止)
应该监测vs1053片子的那个开关量?DREQ吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-19 11:54:09 | 显示全部楼层
判断信号强度,不是判断DREQ。。。
DREQ一直有的...
但是没声音就代表信号强度低到一定程度了...具体这个程度,你自己去调节。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-10-18
在线时间
20 小时
发表于 2013-10-20 18:41:52 | 显示全部楼层
是SS_SWING吗? 还是SM_TESTS的测试9.12.4存储器测试?我觉得片子上应该有这种开关设置,
对您这有 片子手册上说的 application notes for vs10xx(即vs10xx 应用注意事项)吗?
给发一份吧,谢谢
回复 支持 反对

使用道具 举报

30

主题

210

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
373
金钱
373
注册时间
2012-11-22
在线时间
12 小时
发表于 2013-10-21 13:39:27 | 显示全部楼层
回复【12楼】effortswyh:
---------------------------------
http://www.vlsi.fi/en/support/applicationnotes.html
VLSI?大陆区一级授权代理商,提供技术支持,QQ839638158?VS1003?VS1053?VS1063?VS1011?VS1005?VS1205?VS1103?VS1033?VS8005?VS8053?VS1000?VS23S010?VS1163?开发板,淘宝店铺http://shop105947990.taobao.com/?QQ2355355257
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 11:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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