本帖最后由 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);
- }
- }
|