调试期间无限循环

时间:2014-07-21 07:46:49

标签: c++ embedded stm32 keil

我正在使用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校验)

在宽总线模式下未检测到所有数据信号的启动位

并且看起来在这个while循环中,如果有意义的话,它会在if语句中卡住“接收FIFO中的数据”标志。我无法跨过那句话。

我正在使用keil v5和用c ++编程

好吧,我一直在努力解决这个问题已经持续了一个星期,而且几乎在我发布这个问题之后我就把它搞清楚了。

我有SD卡,由于某种原因将其取出固定。所以我会留下这个,万一其他人都有这个愚蠢的问题。

1 个答案:

答案 0 :(得分:0)

好吧,我一直在努力解决这个问题已经持续了一个星期,而且几乎在我发布这个问题之后我就把它搞清楚了。

我有SD卡,由于某种原因将其取出固定。所以我会留下这个以防其他人有这个愚蠢的问题。