新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2015-11-18
- 在线时间
- 1 小时
|
5金钱
void mp3_task(void *p_arg)
{
FIL* fmp3;
u16 br;
u8 res,rval;
u8 *databuf;
u16 i=0;
OS_ERR err;
while(1)
{
rval=0;
fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申请内存
databuf=(u8*)mymalloc(SRAMIN,4096); //开辟4096字节的内存区域
if(databuf==NULL||fmp3==NULL)LED1=0; //内存申请失败.
if(rval==0)
{
VS_Restart_Play(); //重启播放
VS_Set_All(); //设置音量等信息
VS_Reset_DecodeTime(); //复位解码时间
res=f_open(fmp3,(const TCHAR*)"0:/MUSIC/1.mp3/",FA_READ);//打开文件
if(res==0)//打开成功.
{
LED0=0;
VS_SPI_SpeedHigh(); //高速
while(rval==0)
{
res=f_read(fmp3,databuf,4096,(UINT*)&br);//读出4096个字节
i=0;
do
{
if(VS_Send_MusicData(databuf+i)==0)//给VS10XX发送音频数据
{
i+=32;
}
}while(i<4096);//循环发送4096个字节
if(br!=4096||res!=0)
{
rval=0;
break;//读完了.
}
}
f_close(fmp3);
}
}
myfree(SRAMIN,databuf);
myfree(SRAMIN,fmp3);
//STimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//延时500ms
}
}
用原子哥的精英板子做MP3播放实验,把mp3的播放代码集成在ucos下,mp3的task栈空间大小分配了512,不清楚为什么在fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申请内存
databuf=(u8*)mymalloc(SRAMIN,4096); //开辟4096字节的内存区域之后,总是报出内存分配失败(LED1会点亮),请各位指导
|
|