OpenEdv-开源电子网

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

新手,求助一个关于MP3音量调节的问题

[复制链接]

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-12
在线时间
4 小时
发表于 2015-1-5 10:50:28 | 显示全部楼层 |阅读模式
5金钱
MP3能正常播放歌曲,现在想调节音量,加入了音量调节指令后不是不出声就是出乱码,求大神们指导啊!

void MP3_Play(void)

  FRESULT res;
  FILINFO finfo;
  DIR dirs;
  u16 count = 0;
char j = 0;
  char path[50] = {"0:/"}; 
  char *result1, *result2, *result3, *result4;

  f_mount(0, &fs);       
    f_opendir(&dirs, path);
  if (f_opendir(&dirs, path) == FR_OK)      
  {
    while (f_readdir(&dirs, &finfo) == FR_OK)  
    {
      if ( finfo.fattrib & AM_ARC )       
      {
        if( !finfo.fname[0] )         
          break;         
      // printf( " \r\n the file name is: %s \r\n", finfo.fname );

result1 = strstr( finfo.fname, ".mp3" ); 
result2 = strstr( finfo.fname, ".mid" );
result3 = strstr( finfo.fname, ".wav" );
result4 = strstr( finfo.fname, ".wma" );
    
if ( result1!=NULL || result2!=NULL || result3!=NULL || result4!=NULL )
{
        res = f_open( &myfsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ );
        mybr = 1; 
TXDCS_SET( 0 );  

  for (;;) 
  { 
        res = f_read( &myfsrc, buffer, sizeof(buffer), &mybr );
  Vs1003_CMD_Write(11,VOICE);   //加了这句音量调节的就不行了,是加错地方了还是加的方式不对,还是其他原因?
          if ( res == 0 )
               { 
                  count = 0; 
                  while ( count < 512) 
                   { 
                         if ( DREQ != 0 )    
                          {
                              for (j=0; j<32; j++ )
                                  { 
                                     while(DREQ == 0); 
                                     TXDCS_SET( 0 ); 
                                    VS1003_WriteByte( buffer[count] ); 
                                   TXDCS_SET( 1 ); 
                                   count++;
                                    }
                          }  

                      }
          } 
 
                if (res || mybr == 0) break; 
  }
                          
  count = 0;

  while ( count < 2048 ) 
  { 
            if ( DREQ != 0 )
          {
              for ( j=0; j<32; j++ )
                {   
                    VS1003_WriteByte( 0 ); 
                    count++;
                }
            }
   }
count = 0;
TXDCS_SET( 1 );   
  f_close(&myfsrc); 
}                        
      }
    } /* end of while */  
  }  
}

最佳答案

查看完整内容[请看2#楼]

回复【5楼】羁绊: --------------------------------- 你检测旋钮的函数里边就行了,判断完加减后就调用
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-5 10:50:29 | 显示全部楼层
回复【5楼】羁绊:
---------------------------------
你检测旋钮的函数里边就行了,判断完加减后就调用
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-5 12:34:44 | 显示全部楼层
不要加在这个位置,放在“res = f_open( &myfsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ );”这句之前看下
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-12
在线时间
4 小时
 楼主| 发表于 2015-1-5 15:11:22 | 显示全部楼层
回复【2楼】八度空间:
--------------------------
但是这样好像不能实时的调音吧?
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-5 17:48:48 | 显示全部楼层
回复【3楼】羁绊:
---------------------------------
你实时调音是按键调吧,按键按下就调用这个函数即可
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-12
在线时间
4 小时
 楼主| 发表于 2015-1-6 08:54:13 | 显示全部楼层
回复【4楼】八度空间:
---------------------------------
不是,我是用的旋钮的变阻器,采用ADC采样调的。不过两种方式实质上应该是差不多的,但是应该在哪调用这个函数呢?放在你说的那个地方没变化
回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2014-12-12
在线时间
4 小时
 楼主| 发表于 2015-1-6 14:44:15 | 显示全部楼层
回复【6楼】八度空间:
---------------------------------
嗯嗯,谢谢!问题解决了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 06:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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