OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4041|回复: 3

超声波测距问题

[复制链接]

10

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2017-12-19
在线时间
17 小时
发表于 2018-4-22 20:17:51 | 显示全部楼层 |阅读模式
1金钱
这是我使用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;  
}  







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-23 01:19:39 | 显示全部楼层
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2018-1-22
在线时间
7 小时
发表于 2018-4-23 08:32:57 | 显示全部楼层
程序是不是死机了。。。建议用中断触发方式获取高电平时间。
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2019-10-22
在线时间
18 小时
发表于 2019-11-30 17:33:49 | 显示全部楼层
现在用F429写的超声波的程序可以测出距离了吗,我现在也在写,也是不出结果,我看着我用的方法和你的很像,但是我用的是定时器4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 22:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表