初级会员

- 积分
- 59
- 金钱
- 59
- 注册时间
- 2015-12-4
- 在线时间
- 4 小时
|
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,是不会停止读取的啊?
|
|