Я работаю с платой 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 и программирую на с ++
Хорошо, я боролся с этим в течение недели и почти сразу после того, как я отправил это, я понял это.
У меня была SD-карта, и по какой-то причине я вынул ее. Поэтому я оставлю это на тот случай, если у кого-нибудь еще возникнет эта глупая проблема.
Хорошо, я боролся с этим в течение недели и почти сразу после того, как я отправил это, я понял это.
У меня была SD-карта, и по какой-то причине я вынул ее. Поэтому я оставлю это на случай, если у кого-то еще возникнет эта глупая проблема.