Имеется IAR 6.50 для ARM. Проект для STM32F103VCT6 с использованием scmRTOS V4.

Работает связка ADC1 и DMA. Все другие прерывания блокированы.

Запуск работы связки происходит в функции main() перед запуском операционной системы:

ADC1_CR2_bit.SWSTART=true; //Старт преобразования АЦП
OS::run();

Тело прерывания DMA (преобразовывается 9 каналов ADC1):

extern "C" void DMA1_Channel1_IRQHandler(void) {
OS::TISRW();
DMA_CCR1_bit.EN=false; //Стоп канала DMA
DMA_IFCR_bit.CTCIF1=true; //Сброс флага прерывания конца приёма первого канала DMA
ADC1_SR_bit.STRT=false; //Сброс флага старта регулярных каналов
ADCChannelArray[0]+=ADCChannel.ADCResult[15]; //Перепись результатов очередного преобразования
ADCChannelArray[1]+=ADCChannel.ADCResult[14];
ADCChannelArray[2]+=ADCChannel.ADCResult[7];
ADCChannelArray[3]+=ADCChannel.ADCResult[6];
ADCChannelArray[4]+=ADCChannel.ADCResult[3];
ADCChannelArray[5]+=ADCChannel.ADCResult[2];
ADCChannelArray[6]+=ADCChannel.ADCResult[1];
ADCChannelArray[7]+=ADCChannel.ADCResult[0];
ADCChannelArray[8]+=ADCChannel.ADCResult[8];*/
DMA_CCR1_bit.EN=true; //Старт канала DMA
ADC1_CR2_bit.SWSTART=true; //Старт преобразования АЦП
DMA1Counter++; //Отладочный счётчик прерываний
}

Проблема в следующем. Ставлю точку остановки для отладчика на вторую строку обработчика прерывания. После каждого запуска происходит чёткая остановка на точке. Убираю точку остановки и пускаю программу, затем через некоторое время останавливаю. Отладочный счётчик показывает два захода в прерывание, а затем, сколько бы я ни запускал и останавливал программу, больше заходов в прерывание не наблюдается.

В чём дело?