【问题标题】:Infinite loop during debugging调试期间的无限循环
【发布时间】:2014-09-11 15:47:49
【问题描述】:

我正在使用 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 循环中,如果有意义的话,它会卡在“接收 FIFO 中可用的数据”标志的 if 语句中。我不能跳过那个 if 语句。

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

好吧,我已经为此苦苦挣扎了一个星期,几乎在我发布后我就想通了。

我有 SD 卡,但出于某种原因将其取出修复了它。所以我会留下这个,以防其他人遇到这个愚蠢的问题。

【问题讨论】:

  • 你将不得不向我们展示所有这些宏是什么......
  • 您在尝试使用 SDIO 控制器之前是否对其进行了初始化?您使用的是硬件流量控制还是旁路模式(48 MHz)?那些都坏了,有勘误表。
  • 告诉我们芯片是什么,而不是板子。 STM32 是一个范围的零件,而不是一个芯片。 SDIO线是否可以与JTAG线复用?
  • 如果你阅读了整个“问题”,你会注意到问题已经解决了。 “取出 SD 卡修复它。”

标签: c++ embedded stm32 keil


【解决方案1】:

好吧,我已经为此苦苦挣扎了一个星期,几乎在我发布后我就想通了。

我有 SD 卡,但出于某种原因将其取出修复了它。所以我会留下这个,以防其他人有这个愚蠢的问题。

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 2016-05-15
    • 2015-12-28
    • 2015-08-19
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多