Запустил DMA с таким кодом:
Код:
void Init_DMA5 (void) // DMA для работы с SPI2 на прием и передачу
{
RCC->AHBENR |= RCC_AHBENR_DMA1EN; // Enable Clock DMA1
DMA1_Channel5->CCR &= (uint32_t)(~DMA_CCR5_EN); // Disable DMA
while (DMA1_Channel5->CCR & DMA_CCR5_EN);
DMA1_Channel5->CCR = DMA_CCR5_DIR | // Data transfer direction - Read from memory
DMA_CCR5_MINC | // Memory increment mode enabled
DMA_CCR5_TCIE; // Transfer complete interrupt enable
NVIC_EnableIRQ(DMA1_Channel5_IRQn); // Enable Interrupt DMA1 Channel5
NVIC_SetPriority(DMA1_Channel5_IRQn,14);
}
Код:
void Start_DMA5 (void) // DMA work SPI2 Transmitte
{
DMA1_Channel5->CCR &= (uint32_t)(~DMA_CCR5_EN); // Disable DMA
while (DMA1_Channel5->CCR & DMA_CCR5_EN);
DMA1_Channel5->CMAR = (uint32_t)&(ScreenBuf[0+(AdressLED<<4)]);
DMA1_Channel5->CPAR = (uint32_t)&(SPI2->DR);;
DMA1_Channel5->CNDTR = DMA_BUFF_SIZE; // number of data
DMA1_Channel5->CCR |= (uint32_t) DMA_CCR5_EN; // Channel enable
}