Есть тестовый пример I2S для Keil, МК LPC2478 (плата SK-MLPC2478, JTAG отладчик DPM-ARM_Cortex).
Программа виснет на ожидании флагов
Код
  // Wait for both DMA0 and DMA1 to finish before verifying.
  while ( !I2SDMA0Done || !I2SDMA1Done );

Функция прерывания void DMAHandler(void) __irq, из файла dma.c срабатывает один раз, и значение в регистре GPDMA_INT_TCSTAT равно 1. Соответственно переменная I2SDMA0Done равна 1, а I2SDMA1Done всегда равна 0. Почему так? Как сделать так, что бы программа работала правильно?