OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3187|回复: 3

STM32F103的SDIO读取FATS MP3文件出错,错误代码0x03

[复制链接]

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2015-5-21
在线时间
43 小时
发表于 2017-2-13 15:04:59 | 显示全部楼层 |阅读模式
先简单介绍一下系统:这个项目考虑到版权问题,用的是FreeRtos系统,IAR编译环境,其中需要用到MP3,在本项目种创建了两个任务,一个任务用来处理通讯协议和一些界面显示,优先级最高,另外一个任务是用来播放MP3文件的,任务优先级低。
目前出现的问题:在播放MP3的时候,有时候会停顿一下,然后又恢复过来继续播放,又时候恢复不过来就一直死机
在调试状态下发现:当出现停顿的时候,其实是读SD卡出现错误0x03,  
while(res)//读出错
   {
    SD_Init(); //重新初始化SD卡
    res=SD_ReadDisk(buff,sector,count);
    //printf("sd rd error:%d\r\n",res);
   }
如果重新初始化SD卡,并且读出SD卡没有错误,那么恢复正常,否则一直在上面这个while里面死循环,很尴尬。
在调试的过程种,我还发现了一个问你,但只有MP3 播放音乐任务在执行的时候,就不会出现以上问题,播放很长时间都是这样的,
一旦主任务和MP3播放任务同时存在的时候就会出现以上现象,因此我有把主任务里面执行的程序全屏蔽了,里面加阻塞延时,发现,加不同的延时时间,
读MP3文件的死机程度不同,这就叫人纳闷了,有时时间凑巧的话两三个小时都不出现死机的现象,这个问题真的很纠结,@正点原子
望各路大神指教,谢谢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2015-5-21
在线时间
43 小时
 楼主| 发表于 2017-2-13 15:08:07 | 显示全部楼层
MP3  FATS均是移植战舰库的代码
回复 支持 反对

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2015-5-21
在线时间
43 小时
 楼主| 发表于 2017-2-14 14:37:57 | 显示全部楼层
数据读到FIFO里后如果没及时取走,发生溢出就正常了。 你可以开启FIFO接收满或半满中断,并让其优先级较高,及时取走FIFO数据应可以回避。 在多任务系统中,你如果通过建立临界区的方式满足要求也行。 在freeRtos系统中可以通过portENTER_CRITICAL();portEXIT_CRITICAL();来建立临界区
回复 支持 反对

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2015-5-21
在线时间
43 小时
 楼主| 发表于 2017-2-14 14:38:24 | 显示全部楼层
月嘉愚生 发表于 2017-2-14 14:37
数据读到FIFO里后如果没及时取走,发生溢出就正常了。 你可以开启FIFO接收满或半满中断,并让其优先级较高 ...

问题总算解决了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-24 07:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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