探索者综合实验里面的音乐播放,把延时修改成信号量,效果还行

2019-07-21 04:18发布

wavplay.c里面231-237行

OSSemPend(sem,0,&errer);
// while(wavtransferend==0)
// {
// delay_ms(1000/OS_TICKS_PER_SEC);
// }

//wavtransferend=0;

然后在DMA中断里发送信号量
//wavtransferend=1;
OSSemPost(sem);

感觉修改之前还是延时查询的思路,这样任务切换次数多,而用了信号量的话,只有DMA中断完成后才切换到音乐这个进程,我在中断中加了static变量通过串口观察这个中断间隔是40+到200+毫秒的时间,而采用每5ms的查询将浪费切换,不知道这么想对不对啊,版主请指正一下,暂时修改后可以正常播放音乐

另外是不是查询有其他的好处,而我还不知道,请版主指教了,毕竟我刚学不久

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-21 08:48
 精彩回答 2  元偷偷看……
八度空间
2楼-- · 2019-07-21 11:06
回复【2楼】正点原子:
---------------------------------
我上次说的那个音乐播放死机的问题难道也是这个造成的么?
echo12211
3楼-- · 2019-07-21 11:13
回复【3楼】八度空间:
---------------------------------

我遇到过播放音乐死机的情况,我过些天验证一下,看看如何解决,
不知道你说的是哪个
八度空间
4楼-- · 2019-07-21 12:34
回复【4楼】echo12211:
---------------------------------
循环播放的时候会死机,具体原因我还没看呢,你弄弄,到时候借点经验
echo12211
5楼-- · 2019-07-21 16:14
回复【5楼】八度空间:
---------------------------------
我播放音乐时,有时能找到那么多音乐,但是具体播放时解析不到,就从头播放了,或者重复同一首
还有当插入usb时,直接卡死

其实我的项目用不到同时实现usb,我已经分时规避了,但是找时间还是解决掉比较好

一周热门 更多>