菜鸟求助,关于这个ADC采集时间的问题;

2019-08-18 19:52发布

用ADC1的两个通道来分别采集电位器和电流,还有个LED闪烁的程序,但是我感觉led灯闪烁程序的存在严重影响到采集速度,AD_Chan和led灯的程序冲突。
由于要使用电位器调节电机速度,想了半天没找到合适的处理办法

程序如下:

}[mw_shl_code=c,true]        while (1)
        {   

                        if(ADC1->CSR&0X80)
                        {
                                ADC1_ClearFlag(ADC1_FLAG_EOC);
                                Conversion_Val = ADC1_GetConversionValue();
                                if(AD_Chan==9)
                                {
                                        if(Conversion_Val<MINVALUE)
                                                outpwm=MINVALUE;
                                        else if(Conversion_Val>MAXVALUE)
                                                outpwm=MAXVALUE;
                                        else
                                                outpwm=Conversion_Val;
                          }

                                else if(AD_Chan==19)
                                {
                                  if(Conversion_Val>ADI_ini)
                                          Conversion_Val=Conversion_Val-ADI_ini;
                                        else Conversion_Val=0;
                                                       
                                        if(Conversion_Val>CUR_MAX)       
                                                Error_count++;//过流次数增加
                                        else Error_count=0;                       
                                                       
                                        if(Error_count>=NumErr&&FaultF==0)        //达到过流次数要求,认为过流故障
                                        {
                                                FaultF=1;
                                                Error_count=0;
                                        }       
                                }
                                                                       
                                AD_Chan++;
                          if(AD_Chan>=20)AD_Chan=0;
                                //采集20次为一次循环,前10次采集电位器电压,后10次采集电流                               
              if(AD_Chan==0)ADC_Init_SP();//电位器采集配置
                                else if(AD_Chan==10)ADC_Init_AI();//电流采集配置
                                ADC1_StartConversion();//启动Ad转换                               
                        }
                       
                        if(FaultF==1)
                        {
                                PWM_A_OFF;
                                PWM_B_OFF;
                                PWM_C_OFF;
                        }
               
                for(tem_c=0;tem_c<60000;tem_c++);//延时时间
                GPIO_WriteReverse(GPIOA,GPIO_PIN_3);//PA3指示灯反转
  }
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。