OpenEdv-开源电子网

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

移植文件系统,读取时卡死在循环。

[复制链接]

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-12-4
在线时间
4 小时
发表于 2016-1-3 21:02:10 | 显示全部楼层 |阅读模式
while(!(SDIO_GetFlagStatus(SDIO_FLAG_DCRCFAIL)|SDIO_GetFlagStatus(SDIO_FLAG_DTIMEOUT)|SDIO_GetFlagStatus(SDIO_FLAG_RXOVERR)|SDIO_GetFlagStatus(SDIO_FLAG_STBITERR)))
        {
                if(SDIO_GetFlagStatus(SDIO_FLAG_RXDAVL)==SET)  //半满标志出现,说明至少有八个字,32个字节被接收
                {
                        for(count=0;count<8;count++)
                        {
                                *tempbuf=SDIO_ReadData();
                        }
                        tempbuf=tempbuf+8;    //读完八个字
      BaseCount=BaseCount+32;  //读完了32个字节
                        if(BaseCount>=(BlockSize*read_blocknum)) //读出的数据够总的数据长度,就结束循环
                        {
                                break;
                        }       
                }        [/mw_shl_code]
卡在第一个循环处  是读取连续块的一个函数,debug发现只读取了128个字节后,SDTO->STA寄存器变为0x00000000。(BlockSize=512,读取数量是1。)
然后就卡死在if和while之间。在之前没有移植文件系统的时候,调试这函数是成功的。理论上应该是不发送CMD12,是不会停止读取的啊?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-12-4
在线时间
4 小时
 楼主| 发表于 2016-1-3 21:02:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-1-3 21:34:52 | 显示全部楼层
多块读写的,必须发送停止指令,单块读写则不用
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-12-4
在线时间
4 小时
 楼主| 发表于 2016-1-4 21:04:01 | 显示全部楼层
八度空间 发表于 2016-1-3 21:34
多块读写的,必须发送停止指令,单块读写则不用

对呀  是必须发送啊  我是循环等待读完512个字节再发送CMD12   但是现在的问题是  根本读不到512个  读到128个字节的时候  就卡这了  
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 00:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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