我正在使用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卡,並出於某種原因把它固定它。所以我會離開這個以防其他人有這個愚蠢的問題。
您將不得不向我們展示所有這些宏是什麼...... – Joe
在嘗試使用它之前是否初始化了SDIO控制器?您正在使用硬件流量控制還是旁路模式(48 MHz)?這些都是破碎的,並有勘誤。 – rjp
告訴我們什麼是芯片,而不是板子。 STM32是一個*範圍的部件,而不是芯片。 SDIO線可能與JTAG線複用嗎? – Clifford