怎么输入捕获低电平脉宽

2019-08-19 20:33发布

有原子哥的输入捕获高定平,改为捕获低电平脉宽,小弟觉得配置TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising        改为falling;
再者,中断函数其中两行改一下:
void TIM5_IRQHandler(void)
{

        if((TIM5CH1_CAPTURE_STA&0X80)==0)//»1Î′3é1|2¶»ñ       
        {          
                if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)
                 
                {            
                        if(TIM5CH1_CAPTURE_STA&0X40)//òѾ-2¶»ñμ½¸ßμçƽáË
                        {
                                if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//¸ßμçƽì«3¤áË
                                {
                                        TIM5CH1_CAPTURE_STA|=0X80;//±ê¼Ç3é1|2¶»ñáËò»′Î
                                        TIM5CH1_CAPTURE_VAL=0XFFFF;
                                }else TIM5CH1_CAPTURE_STA++;
                        }         
                }
        if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//2¶»ñ1·¢éú2¶»ñê¼t
                {       
                        if(TIM5CH1_CAPTURE_STA&0X40)                //2¶»ñμ½ò»¸öϽμÑØ                
                        {                                 
                                TIM5CH1_CAPTURE_STA|=0X80;                //±ê¼Ç3é1|2¶»ñμ½ò»′θßμçƽÂö¿í
                                TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
                                   TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);//改为Falling
                        }else                                                                  //»1Î′¿aê¼,μúò»′Î2¶»ñéÏéyÑØ
                        {
                                TIM5CH1_CAPTURE_STA=0;                        //Çå¿Õ
                                TIM5CH1_CAPTURE_VAL=0;
                                 TIM_SetCounter(TIM5,0);
                                TIM5CH1_CAPTURE_STA|=0X40;                //±ê¼Ç2¶»ñμ½áËéÏéyÑØ
                                   TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);//改为Rising
                        }                    
                }                                                                                   
        }

    TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //Çå3yÖD¶Ï±ê־λ

}

大家觉得如何?

最后小弟说一下应用场景:一个光敏传感模块接受光线,可输出高电平,到某输入端口PA1,开始配置PA1为IPD,现在要检测输入端口(PA1)高电平来之前的低电平时间,
我这样考虑没有问题吧?谢啦,我刚学习。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。