求助香主,ADC及DMA时间问题

[复制链接]
1699|0
 楼主| forbin936 发表于 2013-2-28 11:23 | 显示全部楼层 |阅读模式
本帖最后由 forbin936 于 2013-2-28 11:25 编辑

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




您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部