本帖最后由 forbin936 于 2013-2-28 11:25 编辑
我要实现的是首次采样后DMA中断置标志位,主函数处理数据,再等20ms,再采样一次,再等20ms再采样。。。
gTimer在嘀嗒中断函数内++
现在问题出现了,首次采样后,处理完数据gTimer是16ms,但是第二次初始化ADC,重启开启采样后,处理完数据gTimer就达到32ms了,我做的这个是要严格控制时隙的,香主求救,同样是gTimer=0后初始化ADC和DMA,为什么两次时间会差这么多? if (Adc_Start_flag==0&&gTimer==Syn_Time)
{ gTimer=0;
forbinADC_Init();
Adc_Start_flag=1;
}
if (Adc_Start_flag==1&&gTimer==Code_Time)
{ gTimer=0;
forbinADC_Init();
}
void SysTick_Handler(void)
{
gTimer++;
}
void DMAChannel1_IRQHandler()
{
if(DMA_GetITStatus(DMA1_IT_TC1))
{
ADC_Cmd(ADC1,DISABLE);
DMA_Cmd(DMA1_Channel1, DISABLE);
DMA_Done_flag=1;
DMA_ClearITPendingBit(DMA1_IT_GL1);
}
}
|