超声波测距问题

2019-07-20 08:34发布

这是我使用HC-sr04超声波模块 测距的程序,请 各位大神 看一下 哪里出错了  老是测不出来 下面是主要程序  使用的板子是STM32f429

void TIM3_IRQHandler(void)
        {
       
        if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
        {
        TIM_ClearFlag(TIM3,TIM_FLAG_Update);
                LED0=!LED0;
               
                msHcCount++;
       
        }
       
       
        }
       
        u32 GetEchoTimer(void)  
{  
         u32 t = 0;
            delay_init(168);  
             // u32 t = 0;
        t = msHcCount*1000;//μÃμ½MS  
        t += TIM_GetCounter(TIM3);//μÃμ½US  
        TIM3->CNT = 0;  //½«TIM3¼Æêy¼Ä′æÆ÷μļÆêyÖμÇåáã  
        delay_ms(50);  
        return t;  
}  


static void OpenTimerForHc()        //′ò¿a¶¨ê±Æ÷  
{  
        TIM_SetCounter(TIM3,0);//Çå3y¼Æêy  
        msHcCount = 0;  
        TIM_Cmd(TIM3, ENABLE);  //ê1ÄüTIMxíaéè  
}  


static void CloseTimerForHc()        //1رն¨ê±Æ÷  
{  
        TIM_Cmd(TIM3, DISABLE);  //ê1ÄüTIMxíaéè  
}  
float Hcsr04GetLength(void )  
{  
        u32 t = 0;  
        int i = 0;  
        float lengthTemp = 0;  
        float sum = 0;  
        while(i!=5)  
        {  
             //·¢Ëí¿ú¸ßμçƽêä3ö
        TRIG_Send=1;                       
        delay_ms(20);  
       TRIG_Send=0;
       //delay_ms(20);                                       
        while (ECHO_Reci==0);         //μè′y½óêÕ¿ú¸ßμçƽêä3ö                                       
                                OpenTimerForHc();        //′ò¿a¶¨ê±Æ÷  
         i = i + 1;               
         while (ECHO_Reci==1);
         CloseTimerForHc(); //1رն¨ê±Æ÷
         t = GetEchoTimer();        //»ñè¡ê±¼ä,·Ö±æÂêÎa1US  
         lengthTemp = ((float)t/58.0f);//cm                        
         sum = lengthTemp + sum ;
         delay_ms(100);                               

    }  
        lengthTemp = sum/5.0f;  
        return lengthTemp;  
}  







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