Цитата(566C6164 @ Jul 28 2014, 16:24)

В железе все исправно работает.
Если запускаю в отладке - через какое-то время программа виснет на:
Код
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
То есть почему-то в отладке этот флаг не всегда выставляется.
Как такое может быть? Посылая байт я автоматически получаю байт (сдвиговый регистр). Флаг должен выставляться всегда.
Я в свое время долго возился с печально известным I2C этого процессора. Процесс отладки нарушал работу машины состояний интерфейса. Возможно и для SPI отладка работает не совсем чисто (не полностью "non-intrusive") и сбрасывает RXNE, считывая содержимое DR для представления в отладчике. Я такое и вправду спорадически наблюдал для SPI, но ввиду простоты SPI потом положился на написаный код и перестал шагать внутри. Пока все работает.
<Ясновидение>
Может это и танцы с бубном, но попробуйте закрыть в отладчике окна, которые как-то отображают содержимое DR. Если же исключить глюки отладчика, возможно у Вас код вызывает сброс процессора или самой периферии, что приводит SPI в исходное состояние так сказать за кулисами.
</Ясновидение>
Сообщение отредактировал KnightIgor - Jul 28 2014, 15:23