Прошу помощи.
Не возникает прерывание от DMA- первого канала. Настраиваю АЦП:
Цитата
RCC->CFGR&= ~0x000C000; //(предделитель PLCK2 АЦП = 2)
RCC->CFGR|= 0x0008000; //предделитель PLCK2 АЦП = 6
GPIOA->CRL&= ~(0x00000033|//PA0,PA1 как входы
0x000000CC);//PA0,PA1 как аналоговые входы
RCC->APB2ENR|= (0x0001| //разреш альтернативных функций
0x0200);//ADC1EN-разреш.тактирования АЦП
ADC1_SQR1=0x00100000; //длина-две последовательности каналов(0-одна)
ADC1_SQR2= 0x0000;
ADC1_SQR3=
00<<(0*5)| //выбор нулевого канала для преобразования
01<<(1*5)| //выбор первого канала для преобразования
00<<(2*5)| //второй канал не занят
00<<(3*5); //третий канал не занят
ADC1_SMPR2= (0x00000006| //0-канал,время преобраз 71.5циклов
0x00000030);//1-канал,время преобраз 71.5циклов
ADC1_CR1= (0x000100| //SCAN-сканирование каналов
0x000000); //
//0x000020); //EOCIE-прерывание от АЦП разрешено
ADC1_CR2= (0x00100000| //запуск внешним событием рег.каналов
0x000E0000| //SWSTART- программный запуск преобразования
0x00000100| //DMA-вкл.
0x00000001);//ADON-разреш. АЦП
ADC1_CR2|= 0x00400000;//старт преобразования
Затем настраиваю DMA:
Цитата
RCC->AHBENR|= 0x00000001;//разреш.клока DMA1
DMA_CNDTR1= c_InxAdc; //кол-во передаваемых данных
DMA_CPAR1= 0x4001244C; //адрес периферийный &ADC1_DR
DMA_CMAR1= BufAdc; //адрес памяти
DMA_CCR1=0 << 14| //передача память-память
01 << 12| //приоритет-MEDIUM
02 << 10| //1-разрядность памяти 16 бит (2-32 бит)
02 << 8| //1-разрядность периферии 16 бит (2-32 бит)
1 << 7| //инкремент адреса памяти
0 << 6| //инкремент адреса периферии
1 << 5| //циклический режим (по кругу)
0 << 4| //0-чтение с периферии в память(1-наоборот)
1 << 3| //TEIE-прерывание по ошибке передачи
1 << 2| //HTIE-прерывание по половине передачи
1 << 1| //TCIE-прерывание по завершению передачи
1 << 0; //EN-разрешение канала
После запуска проги вижу, что АЦП работает, передаёт данные двух каналов АЦП в DMA, DMA передает данные в озу (массив BufAdc[2]), но прерывание от DMA при этом не возникает. Что я делаю не так?