| 
 
中级会员  
 
	积分363金钱363 注册时间2015-10-29在线时间49 小时 | 
 
10金钱 
| 本帖最后由 tony129 于 2017-2-6 11:56 编辑 
 UCOSIII +原子哥WAV播放的代码,可以正常播放,但是偶尔会死机。后来查发现一直死在while(wavtransferend==0) 这里,这时候一直在delay_ms(5),因为这里的delay_ms没有任务调度,我改成了系统延时发现还是一样,经常跑到while(wavtransferend==0)这里死机了。其它任务也不执行也就是没有切换任务 ,那这个等待WAV传输的时候到底要不要允许任务切换呢?还有为什么delay_ms这里在改成系统延时后任务也没有切换而是一直跑死在这里,求解大神解答下疑惑~
 其它的,这里我创建了3个任务,一个GUI任务,一个刷触屏任务,再一个就是音乐播放任务,优先级顺序为触屏任务>音乐播放任务>GUI任务。
 [mw_shl_code=c,true]                        if(res==0)
 {
 f_lseek(audiodev.file, wavctrl.datastart);                //跳过文件头
 fillnum=wav_buffill(audiodev.i2sbuf1,WAV_I2S_TX_DMA_BUFSIZE,wavctrl.bps);
 fillnum=wav_buffill(audiodev.i2sbuf2,WAV_I2S_TX_DMA_BUFSIZE,wavctrl.bps);
 
 audio_start();
 while(res==0)
 {
 while(wavtransferend==0)  //等待wav传输完成;
 {
 delay_ms(5);
 }
 wavtransferend=0;
 [/mw_shl_code]
 
 | 
 |