2014-07-21 126 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卡,並出於某種原因把它固定它。所以我會離開這個以防其他人有這個愚蠢的問題。