2014-07-21 78 views
-2

我正在使用STM32 eval2开发板并尝试进行调试。它曾经工作得很好,我也没有改变任何东西,但是在最后一周左右,当我处于调试器模式时,我总是陷入这个循环中,但是当我不在时,程序运行良好。调试过程中的无限循环

while(!__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR)) 
{ 
if(__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXDAVL)) 
{ 
    *(tempscr + index) = SDIO_ReadFIFO(hsd->Instance); 
    index++; 
} 
} 

我甚至尝试运行提供了由董事会ST示例项目代码,并没有改变任何事情,和我被困在同一个while循环在他们的代码。

有人知道我在做什么错吗?没有任何意义,因为没有任何改变。

由变量在while循环中定义的误差(分别)是:

接收FIFO溢出错误

数据块发送/接收(CRC校验失败)

数据超时

发送的数据块/接收(通过CRC校验)

启动位不是在宽总线米所有数据信号检测到的ode

它看起来像在这个while循环中,它在if语句中卡住“接收FIFO中可用的数据”标志,如果这样做合理的话。如果陈述我不能跨过。

我用Keil V5和编程的C++

嗯,我一直在努力与这一个星期,我张贴了这个之后差不多吧我想通了。

我有SD卡,并出于某种原因把它固定它。所以我会离开这个以防其他人有这个愚蠢的问题。

+0

您将不得不向我们展示所有这些宏是什么...... – Joe

+0

在尝试使用它之前是否初始化了SDIO控制器?您正在使用硬件流量控制还是旁路模式(48 MHz)?这些都是破碎的,并有勘误。 – rjp

+0

告诉我们什么是芯片,而不是板子。 STM32是一个*范围的部件,而不是芯片。 SDIO线可能与JTAG线复用吗? – Clifford

回答

0

嗯,我一直在为此挣扎了一个星期,几乎在我发布这个消息之后,我想通了。

我有SD卡,并出于某种原因把它固定它。所以我会离开这个以防其他人有这个愚蠢的问题。