如何理解输入捕获中的中断函数和下降沿的捕获

2019-07-21 04:14发布


void TIM5_IRQHandler(void)
{

        if((TIM5CH1_CAPTURE_STA&0X80)==0)
        {          
                if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)
                 
                {            
                        if(TIM5CH1_CAPTURE_STA&0X40)//
                        {
                                if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)
                                {
                                        TIM5CH1_CAPTURE_STA|=0X80;
                                        TIM5CH1_CAPTURE_VAL=0XFFFF;
                                }else TIM5CH1_CAPTURE_STA++;
                        }         
                }
        if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//
                {       
                        if(TIM5CH1_CAPTURE_STA&0X40)                       
                        {                                 
                                TIM5CH1_CAPTURE_STA|=0X80;               
                                TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
                                   TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);
                        }else                                                                 
                        {
                                TIM5CH1_CAPTURE_STA=0;                       
                                TIM5CH1_CAPTURE_VAL=0;
                                 TIM_SetCounter(TIM5,0);
                                TIM5CH1_CAPTURE_STA|=0X40;               
                                   TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);               
                        }                    
                }                                                                                   
        }

    TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update);
}


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