OpenEdv-开源电子网

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

hc-sr04超出范围后死机

[复制链接]

10

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
817
金钱
817
注册时间
2016-2-5
在线时间
163 小时
发表于 2016-4-27 23:10:15 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 夜乄歌 于 2016-4-27 23:33 编辑

使用战舰的板子移植的论坛的超声程序,但是超出一定范围或者距离很近时模块就是会死机非要手抖一下才回复正常,我搜索了下说这个现象是没有接受到回波,echo这个脚一直保持着保持高电平,请问各位用过的大神都怎么处理这个问题的

#include"ultrasonic.h"
#include"delay.h"



void ultra_init()
{
        RCC->APB2ENR|=1<<7;
        
        GPIOF->CRL&=0XFFFFFF00;
        GPIOF->CRL|=0X00000043;
        TRIG_Send=0;
}

void Ultra_Ranging(float *p)
{
        u8 i;
        u32 j;
        float Ultr_Temp;        
        for(i=0;i<5;i++)
        {
                TRIG_Send=1;
                delay_ms(10);
                TRIG_Send=0;
                while(!ECHO_Reci);
                while(ECHO_Reci)
                {
                        delay_us(10);
                        j++;
                        if(j>1000)         //超出一定时间跳出
                        {
                                j=0;
                                break;
                        }
                }
                Ultr_Temp+=340/2*j*10;//  模块最大可测距3m
                j=0;
                delay_ms(60);//防止发射信号对回响信号的影响
        }
        *p=Ultr_Temp/5/1000000;         
}


不甘黄土掩枯骨,宁化寒光映碧霄。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
817
金钱
817
注册时间
2016-2-5
在线时间
163 小时
 楼主| 发表于 2016-4-28 08:00:16 | 显示全部楼层
有没有用过的大神出来回复下哈
不甘黄土掩枯骨,宁化寒光映碧霄。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11551
金钱
11551
注册时间
2014-4-1
在线时间
1316 小时
发表于 2016-4-28 08:13:54 | 显示全部楼层

目测程序有问题。
用仿真器看下,死在哪里了。


回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2016-4-28 09:04:44 | 显示全部楼层
用输入捕获的方式测超声波高电平,这种while()型的计数方式不准
回复

使用道具 举报

10

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
817
金钱
817
注册时间
2016-2-5
在线时间
163 小时
 楼主| 发表于 2016-4-28 10:07:01 | 显示全部楼层
Akatsuki_lim 发表于 2016-4-28 09:04
用输入捕获的方式测超声波高电平,这种while()型的计数方式不准

数据不准倒是不碍事,主要是超出范围了或者太近接收不到回波了,ECHO就一直是一个电平,就算不用while用输入捕获的话也是一直高电平捕获吧。。。。
不甘黄土掩枯骨,宁化寒光映碧霄。
回复

使用道具 举报

10

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
817
金钱
817
注册时间
2016-2-5
在线时间
163 小时
 楼主| 发表于 2016-4-28 10:13:44 | 显示全部楼层
Akatsuki_lim 发表于 2016-4-28 09:04
用输入捕获的方式测超声波高电平,这种while()型的计数方式不准

刚看了下原子的捕获历程有时间过长的处理,不过刚学到定时器还没来得及看这个,先去试试,不行在来问问
不甘黄土掩枯骨,宁化寒光映碧霄。
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-4-28 10:14:00 | 显示全部楼层
你这个不是死机,而是没抓到有效数据罢了,否则手抖怎么会又正常。。。。
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 21:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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