STM32F407输入捕获怎么获取方波的周期呢

2019-07-20 03:58发布

看原子的例程,只能获取上升沿的时间,那么怎么知道这个波形的总周期呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
lophost
2019-07-20 13:19
nashui_sx 发表于 2019-1-26 10:47
捕获两个上升或者下降沿不就可以了

void TIM4_IRQHandler(void)
{                     
        if((TIM4CH3_CAPTURE_STA&0X80)==0)//»1Î′3é1|2¶»ñ       
        {
                if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)//òç3ö
                {             
                        if(TIM4CH3_CAPTURE_STA&0X40)//òѾ-2¶»ñμ½¸ßμçƽáË
                        {
                                if((TIM4CH3_CAPTURE_STA&0X3F)==0X3F)//¸ßμçƽì«3¤áË
                                {
                                        TIM4CH3_CAPTURE_STA|=0X80;                //±ê¼Ç3é1|2¶»ñáËò»′Î
                                        TIM4CH3_CAPTURE_VAL=0XFFFFFFFF;
                                }else TIM4CH3_CAPTURE_STA++;
                        }         
                }
                if(TIM_GetITStatus(TIM4, TIM_IT_CC3) != RESET)//2¶»ñ1·¢éú2¶»ñê¼t
                {       
                        if(TIM4CH3_CAPTURE_STA&0X40)                //2¶»ñμ½ò»¸öϽμÑØ                
                        {                                 
                                TIM4CH3_CAPTURE_STA|=0X80;                //±ê¼Ç3é1|2¶»ñμ½ò»′θßμçƽÂö¿í
                          TIM4CH3_CAPTURE_VAL=TIM_GetCapture3(TIM4);//»ñè¡μ±Ç°μÄ2¶»ñÖμ.
                                TIM_SetCounter(TIM4,0);
                                 TIM_OC3PolarityConfig(TIM4,TIM_ICPolarity_Rising); //CC1P=0 éèÖÃÎaéÏéyÑØ2¶»ñ
                        }else                                                                  //»1Î′¿aê¼,μúò»′Î2¶»ñéÏéyÑØ
                        {
                                TIM4CH3_CAPTURE_STA=0;                        //Çå¿Õ
                                TIM4CH3_CAPTURE_VAL=0;
                                TIM4CH3_CAPTURE_STA|=0X40;                //±ê¼Ç2¶»ñμ½áËéÏéyÑØ
                                TIM4CH3_CAPTURE_VALPreoid=TIM_GetCapture3(TIM4);
                                TIM_Cmd(TIM4,DISABLE );         //1رն¨ê±Æ÷5
                                 TIM_SetCounter(TIM4,0);
                                 TIM_OC3PolarityConfig(TIM4,TIM_ICPolarity_Falling);                //CC1P=1 éèÖÃÎaϽμÑØ2¶»ñ
                                TIM_Cmd(TIM4,ENABLE );         //ê1Äü¶¨ê±Æ÷5
                        }                    
                }                                                                                   
        }
        TIM_ClearITPendingBit(TIM4, TIM_IT_CC3|TIM_IT_Update); //Çå3yÖD¶Ï±ê־λ
}
TIM4CH3_CAPTURE_VALPreoid这个值是会变的,不知道为啥

一周热门 更多>