Sl (07.07.2017 23:28, просмотров: 168) ответил ua1arn на Забыли разршить прерывания (а лучше вообще не трогать - не вызывать __disable_irq();
Вообще задумано, что бы по завершению DMA2 передачи должно сработать прерывание по DMA2. В этом прерывании планируется небольшая обработка полученных данных АЦП. Обработка этого прерывания в основной программе есть и если не запрещать общее прерывание, один раз оно "срабатывает". Пока, внутри него только сбрасывается флаг запроса прерывания.
DMA2->HIFCR = DMA_HIFCR_CTCIF4; // 0x00000020.
Просто, что бы упростить поиск ошибки, я пока запретил все прерывания.
====================================================================
Сейчас разрешил все прерывания.
В основной программе в бесконечном цикле вызывается подпрограмма рестарта, затем пауза 1000 мкс.
Прерывание срабатывает - DMA2_Stream4->CR.EN = 0. Подпрограмма рестарта вновь запускает - DMA2_Stream4->CR.EN = 1.
Но, счетчик DMA2_Stream4->NDTR остается всегда равным 5 и перезаписи данных АЦП в массив не происходит.