OpenEdv-开源电子网

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

HC-SR04超声波测距问题(STM32F407)

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-4-19
在线时间
7 小时
发表于 2017-4-19 16:10:00 | 显示全部楼层 |阅读模式
2金钱
我将HC-SR04超声波传感器连接在STM32F407上,ECHO连PE5,TRIG连PE6,VCC连板子自带的5V输出,PE6触发后,用PE5口的定时器9的CH1捕获高电平,计算高电平时间和距离。程序是在捕获的试验上改的,我通过调试发现是无法进入定时器中断,主函数中的触发函数Trig_SuperSonic();执行后就没了,我想可能有两个原因:(1)没有高电平,(2)没有进入定时器的中断程序。各位大神帮忙看看是什么问题,谢谢了。

实验n 距离传感器-1.zip

4.85 MB, 下载次数: 378

HC-SR04程序

最佳答案

查看完整内容[请看2#楼]

有示波器就看看PE5上有没有高电平,没有示波器的话就把PE5断开,手点一个高电平看看进不进中断
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
618
金钱
618
注册时间
2015-11-20
在线时间
89 小时
发表于 2017-4-19 16:10:01 | 显示全部楼层
wuwei 发表于 2017-4-19 16:59
现在的问题是,根本进不去中断的程序,这是不是表示中断有问题呢

有示波器就看看PE5上有没有高电平,没有示波器的话就把PE5断开,手点一个高电平看看进不进中断
回复

使用道具 举报

6

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2016-11-1
在线时间
64 小时
发表于 2017-4-19 16:43:10 | 显示全部楼层
这两个问题,你可以用示波器和中断内设置断点来判断对不对,别人看的话,还要准备一个超声波模块,拿示波器和硬件调试,对吧
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-4-19
在线时间
7 小时
 楼主| 发表于 2017-4-19 16:59:01 | 显示全部楼层
本帖最后由 wuwei 于 2017-4-19 17:04 编辑

现在的问题是,根本进不去中断的程序,这是不是表示中断有问题呢
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-4-27
在线时间
6 小时
发表于 2017-4-27 09:44:13 | 显示全部楼层
请问楼主问题解决了吗?我目前也碰到这样的问题?
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-4-19
在线时间
7 小时
 楼主| 发表于 2017-4-27 09:49:43 | 显示全部楼层
dingnasty 发表于 2017-4-27 09:44
请问楼主问题解决了吗?我目前也碰到这样的问题?

触发之后要等待ECHO引脚变为高电平再计时,之前没有等待
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-4-27
在线时间
6 小时
发表于 2017-4-27 10:59:46 | 显示全部楼层
wuwei 发表于 2017-4-27 09:49
触发之后要等待ECHO引脚变为高电平再计时,之前没有等待

我也试过用捕获那个程序改,结果失败了,不过他的那个捕获程序是在高电平触发了之后才计时的呀
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-4-19
在线时间
7 小时
 楼主| 发表于 2017-4-27 14:06:14 | 显示全部楼层
dingnasty 发表于 2017-4-27 10:59
我也试过用捕获那个程序改,结果失败了,不过他的那个捕获程序是在高电平触发了之后才计时的呀

我后来用的定时器。我不知道你是如何改的,我的理解是如果用捕获程序,触发后,等待低电平变高,然后再捕获是对的,如果没有等待低电平变高,那么低电平这段时间程序无法进入捕获,就会重新执行while(1)语句,也就是重新触发,然后陷入触发的死循环
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-4-27
在线时间
6 小时
发表于 2017-4-27 15:47:24 | 显示全部楼层
wuwei 发表于 2017-4-27 14:06
我后来用的定时器。我不知道你是如何改的,我的理解是如果用捕获程序,触发后,等待低电平变高,然后再捕 ...

所以是截图中while(1)中,调用触发程序之后得等待高电平,,怎么做?加延时吗?
QQ截图20170427154410.png
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-4-19
在线时间
7 小时
 楼主| 发表于 2017-4-27 15:56:47 | 显示全部楼层
dingnasty 发表于 2017-4-27 15:47
所以是截图中while(1)中,调用触发程序之后得等待高电平,,怎么做?加延时吗?

是啊,将ECHO连在别的IO口上,根据自己情况设定,假设连在PE8上,然后将PE8和PE5用杜邦线连在一起,在触发之后另while(PEin(8)==0){},就是在低电平之间一直等待,到变为高电平再执行捕获操作
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-4-27
在线时间
6 小时
发表于 2017-4-27 16:46:19 | 显示全部楼层
wuwei 发表于 2017-4-27 15:56
是啊,将ECHO连在别的IO口上,根据自己情况设定,假设连在PE8上,然后将PE8和PE5用杜邦线连在一起,在触 ...

能不能留个qq,好联系,超声波这块研究有一段时间了,就是行不通,还请帮忙
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-4-19
在线时间
7 小时
 楼主| 发表于 2017-4-27 17:03:59 | 显示全部楼层
dingnasty 发表于 2017-4-27 16:46
能不能留个qq,好联系,超声波这块研究有一段时间了,就是行不通,还请帮忙

我也是新手,有问题在这里交流即可
回复

使用道具 举报

18

主题

190

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1068
金钱
1068
注册时间
2012-6-18
在线时间
158 小时
发表于 2017-5-5 15:01:03 | 显示全部楼层
F407悟开发板 SR04超声波测距(带温度补偿)
http://www.openedv.com/forum.php ... 66&fromuid=4504
(出处: OpenEdv-开源电子网)
你看看我的成功例子吧。
回复

使用道具 举报

0

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2018-11-20
在线时间
34 小时
发表于 2019-6-5 22:49:09 | 显示全部楼层
请问有没有解决了 ,能发一份让我参考一下吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 21:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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