x893 Код
Видимо лень посмотреть примеры перед тем как код писать.
И Вам хорошего дня)
jcxz Цитата
А зачем все эти чтения-модификации-записи??? Зачем читаете перед каждой операцией? Какой смысл? Причём ещё в много шагов.
Понятно, что код инициализации ДМА можно уложить в 4 строки, записав числа в регистры PAR, M0AR, NDTR и CR. Я специально вынес каждый бит отдельно, чтобы было нагляднее. Тем более что процедура инициализации DMA выполняется один раз при старте, т.е. нет строгих временных требований к выполнению этого кода.
Цитата
следует хотя-бы открыть мануал на МК и почитать описание регистров.
Так и сделал, прочитал внимательно пункт 1
10.3.17 Stream configuration procedure:
All the stream dedicated bits set in the
status register (DMA_LISR and DMA_HISR) from the previous data block DMA
transfer should be cleared before the stream can be re-enabled.
Стало более менее понятно.
adnega, спасибо! Счастье есть) Добавил строчку
Код
DMA1->HIFCR|= DMA_HISR_HTIF5|DMA_HISR_TCIF5;
и все заработало.
В даташите также написано, что нужно после выключения DMA прочитать бит EN, т.е. проверить что он выключился. Ставить while как то "не спортивно") Подскажите как правильно? Надо ли проверять этот бит?