KT (17.10.2012 18:31, просмотров: 205) ответил koyodza на все флаги DMA (их всего 3 у F10х) могут вызывать прерывание. Но для каждого канала одно общее, внутри нужно разбирать флаги и сбрасывать
Пытаюсь запустить прерывание, пока не работает, вот код DMA_ITConfig (DMA1_Channel1, DMA_IT_TC, ENABLE); // настройка источника прерывания от канала DMA1
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
// обработчик прерывания от канала 1 DMA1
void DMA1_Channel1_IRQHandler(void)
{
/* Test on DMA1 Channel1 Transfer Complete interrupt */
if(DMA_GetITStatus(DMA1_IT_TC1))
{
/* DMA1 finished the transfer of SrcBuffer */
EndOfTransfer = 1;
DMA_ClearFlag(DMA1_FLAG_TC1);
if(flash==0)
{
GPIO_SetBits(GPIOC, GPIO_Pin_8);
flash=128;
}
else
{
GPIO_ResetBits(GPIOC, GPIO_Pin_8);
flash=0;
}
DMA_ClearFlag(DMA1_FLAG_TC1);
if(rep_num<256)
{
++rep_num;
a1+=RegularConvData_Tab[2];
a2+=RegularConvData_Tab[1];
a3+=RegularConvData_Tab[0];
}
else
{
/* Convert temperature sensor voltage value in mv */
TempSensVoltmv = a1>>8;
/* Convert Vref voltage value in mv */
VrefIntVoltmv = a2>>8;
ch1 = a3>>8;
a1=0; a2=0; a3=0;
rep_num=0;
}
/* Clear DMA1 Channel1 Half Transfer, Transfer Complete and Global interrupt pending bits */
DMA_ClearITPendingBit(DMA1_IT_GL1);
}
}
В чем могут быть траблы?