求大神指点:从ad到捕获到判断之间的衔接问题

2019-08-13 20:43发布

新手,在做一个程序,在衔接上有问题
        while(1)
{
        TIM1_PWM_Init(899,0);                        
        TIM2_Cap_Init(0XFFFF,72-1);               

                adc_init();         
                ADC_SoftwareStartConvCmd(ADC1, ENABLE);
                while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
                ad=ad+ADC_GetConversionValue(ADC1);               
                if(ad>1.5&&ad<3.3)
                {
                 GPIO_SetBits(GPIOA,GPIO_Pin_0);
                }
                else GPIO_ResetBits(GPIOA,GPIO_Pin_0);
                TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
                if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);                 
                if(TIM2CH1_CAPTURE_STA&0X80)
                {
                        temp=TIM2CH1_CAPTURE_STA&0X3F;
                        temp*=65536;                                       
                        temp+=TIM2CH1_CAPTURE_VAL;               
                        printf("HIGH:%d us ",temp);       
                        TIM2CH1_CAPTURE_STA=0;                       
                }
                if(temp<200)  key=0;
                if(temp>200&&temp<1000)key=1;
                if(temp>1000)key=2;
                switch(key)
        {
                        case 0  : keysta=0X01;delay_ms(40); break;
                        case 1 : keysta=0X02; delay_ms(40); break;
                        case 2 :        keysta=0X04; break;
                default :keysta=0;break;
        }

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。