DMA+SPI+STM32f103. Трабл с прерыванием.

Кто любит RISC в жизни, заходим, не стесняемся.
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Re: DMA+SPI+STM32f103. Трабл с прерыванием.

Сообщение Frogfot »

Запустил 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
}
Хорошему коту и в декабре - март :)
Ответить

Вернуться в «ARM»