ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
1143110 Топик полностью
il-2 (04.11.2021 05:49, просмотров: 386) ответил Aleksey_75 на Спасибо! гляну, но отключаемый код это ADC1->CR2 |= ADC_CR2_SWSTART; ,все остальное отключил, "проверяем флаг, сбрасываем, запускаем преобразование" сейчас даже DR не читаю
Как это неработает. Реальный случай, аналогичный твоему: 

Была написана программа (с клюком, как выяснилось потом), работала она как полагается, никаких внешних глюков не наблюдалось. Вставили в программу маленьний кусок кода, и начались глюки, не имеющие никакого отношения к вставляемому куску кода. Если конкретно, была задача обмена с флешь-памятью по SPI и задача обмена по каналу связи (IrDA). IrDA стала глючить - вставляешь кусок кода (который не имеет к этой задаче никакого отношения) - глючит. Убираешь кусок кода - работает.

Оказалось - задача обмена по SPI была с глючком. Принимаемые по SPI данные клались в буфер(массив), но из-за ошибки в программе клались(и читались) они со сдвигом в 1 байт - и вылезали за пределы массива на 1 байт. Что они при этом портили - одному богу линкеру известно. Но стоило добавить маленький фрагмент кода, и карта памяти после линковки изменилась, и под порчу попала очень важная переменная для задачи IrDA. И тайное стало явным.

Вот так оно бывает :-)