OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1514|回复: 10

求助原子哥及各位大神,UCOSIII +音乐播放实验死机的问题

[复制链接]

  离线 

18

主题

111

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2015-10-29
在线时间
46 小时
发表于 2017-2-6 11:50:16 | 显示全部楼层 |阅读模式
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任务。
[C] 纯文本查看 复制代码
                        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;

回复

使用道具 举报

  离线 

18

主题

111

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2015-10-29
在线时间
46 小时
 楼主| 发表于 2017-2-6 17:13:33 | 显示全部楼层
拿综合实验测试,现象是一样的,就是当在播放器界面播放音乐时把SD卡拔出,这时就可能会卡死,触屏无作用,LED也不闪了。
回复

使用道具 举报

  离线 

492

主题

9万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
126400
金钱
126400
注册时间
2010-12-1
在线时间
1089 小时
发表于 2017-2-6 18:07:27 | 显示全部楼层
tony129 发表于 2017-2-6 17:13
拿综合实验测试,现象是一样的,就是当在播放器界面播放音乐时把SD卡拔出,这时就可能会卡死,触屏无作用, ...

你直接拔掉SD卡肯定死了、
我们综合实验,没做这个处理的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
微信公众平台:正点原子   点击扫码添加
回复

使用道具 举报

  离线 

18

主题

111

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2015-10-29
在线时间
46 小时
 楼主| 发表于 2017-2-6 18:13:07 | 显示全部楼层
正点原子 发表于 2017-2-6 18:07
你直接拔掉SD卡肯定死了、
我们综合实验,没做这个处理的。


因为我不拔卡测试的话几天才出现一次死机。现象是一样的,原因不一定一样。
我现在就是想处理掉这个,还请原子哥指点下~~
回复

使用道具 举报

  离线 

18

主题

111

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2015-10-29
在线时间
46 小时
 楼主| 发表于 2017-2-6 18:45:41 | 显示全部楼层
正点原子公众号
本帖最后由 tony129 于 2017-2-6 19:08 编辑
正点原子 发表于 2017-2-6 18:07
你直接拔掉SD卡肯定死了、
我们综合实验,没做这个处理的。

目前的问题是:虽然对卡死的地方作超时跳出,但现在任务无法挂起自身一直在执行,且任务不切换了。。。
回复

使用道具 举报

  离线 

18

主题

111

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2015-10-29
在线时间
46 小时
 楼主| 发表于 2017-2-7 10:28:29 | 显示全部楼层
没人吗?自己顶顶
回复

使用道具 举报

  离线 

29

主题

121

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1521
金钱
1521
注册时间
2014-6-30
在线时间
228 小时
发表于 2017-2-7 11:23:55 | 显示全部楼层
改用信号量啊,传输完成直接发送信号量不成吗
在电路上充实自己
回复

使用道具 举报

  离线 

18

主题

111

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2015-10-29
在线时间
46 小时
 楼主| 发表于 2017-2-7 22:05:45 | 显示全部楼层
greatxiaoguzi 发表于 2017-2-7 11:23
改用信号量啊,传输完成直接发送信号量不成吗

试过啊,没用,改成信号量后,等待信号量时也不等待了,直接往下执行。就像是改成挂起时,挂起了也没用一样,还在往下执行。
回复

使用道具 举报

  离线 

3

主题

20

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-6-14
在线时间
11 小时
发表于 2017-6-18 23:29:50 | 显示全部楼层
楼主问题解决了吗?我今天也碰到了,跟你描述一样的问题
回复

使用道具 举报

  离线 

3

主题

20

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-6-14
在线时间
11 小时
发表于 2017-6-20 11:07:02 | 显示全部楼层
没动静了。。。帮顶
回复

使用道具 举报

  离线 

37

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2017-6-20
在线时间
89 小时
发表于 2018-1-31 13:54:05 | 显示全部楼层
tony129 发表于 2017-2-7 22:05
试过啊,没用,改成信号量后,等待信号量时也不等待了,直接往下执行。就像是改成挂起时,挂起了也没用一 ...

请问 楼主解决了吗?我也是碰到这个问题了,请问咋解决的啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-5-21 07:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */