STM32
直播中

盛珺

7年用户 204经验值
私信 关注
[问答]

MP3文件程序没有问题但是内容出现错误是什么原因?

我的程序是搜索根目录,然后显示出MP3文件,程序好像没有问题,显示15首歌,只有一首名称对不上,不知道什么原因
TFT显示的内容如下:
      找到的歌曲文件
胡歌 - 逍遥叹.mp3
侧田 - 好人.mp3
胡歌 - 六月的雨.mp3
陈宇凡 - 我不是英雄.mp3
刘德华 - 十七岁.mp3
方力申 - 认命.mp3
篮球部落 - 左脸.mp3
刘德华 - 练习.mp3
爱.mp3                           //就这首歌出了问题
。。。
。。。
。。。
(后面的都没问题)
我的代码如下:
void music()
{
u16 d,ii,i=0,aa=0,jj=0;   
u8 cc[26];
u8 dd[12];
Show_Str(63,0,"找到的音乐文件",16,1);
while(1)
{
  SD_ReadSingleBlock(FirstBlock*512+i*512,buffer,512);
  i++;
  for(d=0;d<512;d=d+32)
  {
   if(((buffer[0+d]!=0x2E)&&(buffer[0+d]!=0x00)&&(buffer[0+d]!=0xe5))||((buffer[0+d]==0x2E)&&(buffer[1+d]==0x2E)))
   {     
    if(buffer[11+d] == 0x0f)//找到一个长文件名
    {
     for(ii=0;ii<10;ii++)    //提取前5个字符
     {
      cc[ii]=buffer[d+ii+1];
     }
     for(ii=0;ii<12;ii++)    //提取第6-12个字符
     {
      cc[ii+10]=buffer[d+ii+14];
     }
     for(ii=0;ii<4;ii++)     //提取12-16个字符
     {
      cc[ii+22]=buffer[d+ii+28];
     }
     UniToGB(cc);
     for(ii=0;ii<26;ii++)    //提取长文件名中的mp3后缀,是mp3则显示出来
     {
      if(cc[ii]=='m')
      {
       if(cc[ii+1]=='p')
       {
        if(cc[ii+2]=='3')
        {
         Show_Str(0,16+jj,cc,16,1);
         jj+=16;       //换行
         d+=32;       //忽略短文件名
         aa++;       //歌曲记数,每页显示15首
         if(aa==15)goto Break;   //如果达到15首,退出循环
         goto asd;      //退出检测
        }  
       }
      }
     }
asd:
    }
   }     
  }
}
Break:   
}
大家帮我看看,为什么那首哥会显示出错,那首歌的名称应该是:方力申、邓丽欣 - 我的最爱

回帖(2)

孙婧

2020-5-6 10:30:08
电脑上能播吗?
举报

张林

2020-5-6 10:45:51
电脑上是能播的,我是觉得,检测出了错误,把以前遗留的无效目录项也检测进去了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分