Я пытаюсь скопировать массив, используя режим DMA MEM2MEM в STM32F103C8
Но когда я запускаю этот код ниже, массив dest остается пустым, событие прерывания не вызывается
Пожалуйста, дайте мне решения или заметьте меня, если я пропустил какую-либо конфигурацию, большое спасибо
Мой код:
uint32_t source[MEMSIZE];
uint32_t dest[MEMSIZE];
for (i = 0; i < MEMSIZE; i++) {
source[i] = i;
}
//Reset CCR and CNDTR register
DMA1_Channel1->CCR &= ~0x7FFF;
DMA1_Channel1->CNDTR &= ~0xFFFF;
/*
* DMA configure:
* MEM 2 MEM: Enabled
* Priority: Medium
* Memory size: 32 bit
* Peripheral size: 32bit
* Memory increment: ON
* Peripheral Increment: ON
* Circular: OFF
* Direction: Copy from peripheral
* Transfer error IR: OFF
* Haft Transferred IR: OFF
* Transfer complete IR: ON
* Channel Enable: OFF
*/
DMA1_Channel1->CCR |= 0x00005AC2;
// Setting number of data
DMA1_Channel1->CNDTR |= MEMSIZE;
// Setting Peripheral address
DMA1_Channel1->CPAR = (uint32_t)source;
// Setting memory address
DMA1_Channel1->CMAR = (uint32_t)dest;
// NVIC setup
NVIC_SetPriority(DMA1_Channel1_IRQn, 0);
NVIC_EnableIRQ(DMA1_Channel1_IRQn);
// Enable DMA channel
DMA1_Channel1->CCR |= 0x00000001;
Обновление: Я попытался использовать GPIO ODR вместо адреса массива для памяти, и это прекрасно работает