金牌会员
 
- 积分
- 2117
- 金钱
- 2117
- 注册时间
- 2011-9-3
- 在线时间
- 122 小时
|
发表于 2011-12-15 21:24:43
|
显示全部楼层
龙兄,想请教一下,我现在移植你的程序到STM32F103VE上,现在遇到两个问题,帮忙看一下:
1,在调试程序的时候发现在WAV_Init()初始化中过不了,主要在下面红色标注的那一句检查不过,注释掉那一句就能显示正常了,不知龙兄这条语句检查什么。(喟然我还没有连耳塞,还没焊音频头,明天焊个看是否听到音乐声音)
2,在第一点说显示正常其实不完全正确,这里就是出现进度条没有往前走,即没有横着走,而是竖着走了,正找原因。。
谢谢了。
u8 WAV_Init(u8* pbuf)//初始化并显示文件信息
{
if(Check_Ifo(pbuf,"RIFF"))return 1;//RIFF标志错误
wav1.wavlen=Get_num(pbuf+4,4);//文件长度,数据偏移4byte
if(Check_Ifo(pbuf+8,"WAVE"))return 2;//WAVE标志错误
if(Check_Ifo(pbuf+12,"fmt "))return 3;//fmt标志错误
wav1.formart=Get_num(pbuf+20,2);//格式类别
wav1.CHnum=Get_num(pbuf+22,2);//通道数
CHanalnum=wav1.CHnum;
wav1.SampleRate=Get_num(pbuf+24,4);//采样率
wav1.speed=Get_num(pbuf+28,4);//音频传送速率
wav1.ajust=Get_num(pbuf+32,2);//数据块调速数
wav1.SampleBits=Get_num(pbuf+34,2);//样本数据位数
Bitnum=wav1.SampleBits;
if(Check_Ifo(pbuf+36,"data"))return 4;//data标志错误 1 //注释掉这一句就正常了,不知龙兄这里需要检查什么?
wav1.DATAlen=Get_num(pbuf+40,4);//数据长度
///////////////////////////////////////////////
if(wav1.wavlen<0x100000)
{
LCD_ShowNum(170,30,(wav1.wavlen)>>10,3,16);//文件长度
LCD_ShowString(200,30,"Kb");
}
else
{
LCD_ShowNum(170,30,(wav1.wavlen)>>20,3,16);//文件长度
LCD_ShowString(200,30,"Mb");
}
if(wav1.formart==1)LCD_ShowString(170,50,"WAV PCM");
if(wav1.CHnum==1)LCD_ShowString(170,70,"single");
else LCD_ShowString(170,70,"stereo");
LCD_ShowNum(170,90,(wav1.SampleRate)/1000,3,16);//采样率
LCD_ShowString(200,90,"KHz");
LCD_ShowNum(170,110,(wav1.speed)/1000,3,16);//传送速度
LCD_ShowString(200,110,"bps");
LCD_ShowNum(177,130,wav1.SampleBits,2,16);//样本数据位数
LCD_ShowString(200,130,"bit");
return 0;
} |
|