Подскажите, хочу скопировать из одной области памяти в другую.
но что-то не копирует.. После включения потока ДМА, регистр NDTR резко сбрасывается в 0, как будто бы все передал и DMA отключается, но Buffer2 не меняет своего значения.
Пробовал разные каналы включать - не помогает.
Вообще, для общения памяти с самой собой имеет значение, какой поток и канал включать? или можно любой?

Код: Выделить всё
unsigned long Buffer1[] = {0,1,2,3,4,5,6,7,8,9}, Buffer2[10];
...
RCC->AHB1ENR |= (1<<22); // вкл DMA2
DMA2_Stream0->M0AR = &Buffer2;
DMA2_Stream0->PAR = &Buffer1;
DMA2_Stream0->NDTR = 10;
DMA2_Stream0->CR = (1<<25) //канал 1
| (0b10<<6) // направление M->M
| (0b10<<11) // размер данных периферии (32)
| (0b10<<13) // размер данных памяти (32)
| 1;// вклПробовал разные каналы включать - не помогает.
Вообще, для общения памяти с самой собой имеет значение, какой поток и канал включать? или можно любой?
Спойлер
- Вложения
-
- 12345.png
- (40.8 КБ) 481 скачивание
Fucking static initialization order fiasco
