ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 апреля
767379 Топик полностью
Sl (07.07.2017 23:28, просмотров: 147) ответил 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 и перезаписи данных АЦП в массив не происходит.