OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
楼主: 清风莞尔

分享一个超声波测距的STM32程序

  [复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2015-9-4
在线时间
5 小时
发表于 2016-1-10 17:02:28 | 显示全部楼层
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-5-28
在线时间
3 小时
发表于 2016-3-4 19:58:16 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2014-2-18
在线时间
12 小时
发表于 2016-3-21 18:20:54 | 显示全部楼层
先谢谢了,
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-22
在线时间
3 小时
发表于 2016-4-22 23:23:39 | 显示全部楼层
谢了楼主。。。。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-4-25
在线时间
4 小时
发表于 2016-4-25 10:20:03 | 显示全部楼层
为什么我的测出数据是0.85,一直不变!求解决,谢谢
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2016-4-20
在线时间
12 小时
发表于 2016-5-25 14:05:03 | 显示全部楼层
穆罕潆荻旎 发表于 2015-3-5 09:27
回复【15楼】梦想:
---------------------------------
你的能测出来?为什么我的测出数据是0.85,一直不变 ...

我有个模块坏了,也是一直读到0.85
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2016-4-20
在线时间
12 小时
发表于 2016-5-25 14:05:57 | 显示全部楼层
sunny---smile 发表于 2016-4-25 10:20
为什么我的测出数据是0.85,一直不变!求解决,谢谢

我有个模块坏了,也是一直读到0.85。你换个试试
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-6-7
在线时间
4 小时
发表于 2016-6-8 08:47:32 | 显示全部楼层
谢谢楼主,顶一下!!!!
回复 支持 反对

使用道具 举报

7

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2016-7-12
在线时间
80 小时
发表于 2016-7-13 13:28:22 | 显示全部楼层
楼主,怎么显示一直是0.85m ,坛友,有没有好的解决方案。
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-5-17
在线时间
43 小时
发表于 2016-7-13 16:55:51 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-7-9
在线时间
15 小时
发表于 2016-7-14 09:36:03 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-7-9
在线时间
15 小时
发表于 2016-7-14 14:51:00 | 显示全部楼层
楼主 能说下你是怎么算距离的吗 ?  怎么利用 TIM_GetCounter() 函数来求距离啊?
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2016-7-22
在线时间
10 小时
发表于 2016-7-22 16:32:54 | 显示全部楼层
一直是0.85CM  求助啊!软件都没改过。什么情况
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-7-27
在线时间
1 小时
发表于 2016-7-27 20:38:22 | 显示全部楼层
冬迹 发表于 2015-5-4 11:29
大神,超声波程序运行过程中会卡死在 while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN));           &n ...

我也是会卡在这一步,我自己写的是这样,用别人的也是这样,在接收echo电平的时候陷入的死循环,朋友你清楚什么原因了吗,能分享一下吗,谢谢了。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2011-11-24
在线时间
5 小时
发表于 2016-9-25 11:01:12 | 显示全部楼层
检测的到的时候等闪得比较快,检测不到的时候1S的闪,请问这现象是怎么实现的?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2016-9-24
在线时间
4 小时
发表于 2016-9-26 13:22:20 | 显示全部楼层
QQ截图20160926131941.png 请问一下这个PC连接ECH0    写了 GPIO_InitStructure.GPIO_Pin = ECHO_PIN;        怎么知道是连接的PC口呢?(初学请指教,谢谢了)
回复 支持 反对

使用道具 举报

5

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2015-9-7
在线时间
82 小时
发表于 2016-9-26 18:06:42 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2016-9-24
在线时间
4 小时
发表于 2016-9-26 19:01:12 | 显示全部楼层
请问一下 Error: L6218E: Undefined symbol UltrasonicWave_Configuration (referred from main.o).,为什么啊?我在main.c中写#include "UltrasonicWave.h"了,还有GPIO_InitStructure.GPIO_Pin = TRIG_PIN;说TRIG_PIN 没定义为什么啊
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2016-8-27
在线时间
1 小时
发表于 2016-10-6 21:52:34 | 显示全部楼层
程序大体好用,但是有bug,就单纯测距计算那句话就有错误,算式明显有问题,应该是x  *0.1  /1000  *340  /2  *100=1.7x    并且程序中有很多没用的东西 可以修改  虽然可以用   把测距计算公式改掉就准了,至于想精简程序的  可以自己好好看看
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2016-11-7
在线时间
3 小时
发表于 2016-11-7 16:48:21 | 显示全部楼层
xiaoyan 发表于 2014-6-3 18:15
谢谢分享,我顶~

你下载这个程序能用吗?
回复 支持 反对

使用道具 举报

10

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1308
金钱
1308
注册时间
2015-3-3
在线时间
127 小时
发表于 2016-11-29 09:02:40 | 显示全部楼层
很明显,他的这个程序是错误的设计,谁会在中断服务函数中加while死循环呢,这个电平检测很多时候就挂在那里了,就死在中断函数的循环里了,采用计时最好选用另外方式。个人看法,仅供参考。
海纳百川者,荣耀伴一生!
回复 支持 反对

使用道具 举报

chenhubo 该用户已被删除
发表于 2017-2-19 13:06:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-12 16:49:34 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-14 08:08:14 | 显示全部楼层
清风莞尔 发表于 2014-8-29 12:22
回复【7楼】申继鹏:
---------------------------------
在UltrasonicWave.c文件里的void EXTI9_5_IRQ ...

谢谢分享
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-14 08:16:01 | 显示全部楼层
wangyan915205 发表于 2014-10-3 14:38
“UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/200.0;”   这里乘以5是啥意思?

我实际测试中用这个公式不是很准确,然后乘了一个1.98的系数过后就精度差不多
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-14 08:16:54 | 显示全部楼层
16号张同学 发表于 2014-11-7 10:54
谢谢分享,有用捕获做的吗?

是哈,输入捕获做也可以呀,有没有参考的呀
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-14 08:18:26 | 显示全部楼层
水滴滴水 发表于 2015-6-4 18:46
数据不怎么准确,请问怎么解决?

通过实践的数据和测得的数据对比,乘以一个系数就可以了
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-14 08:20:18 | 显示全部楼层
sunch214 发表于 2016-10-6 21:52
程序大体好用,但是有bug,就单纯测距计算那句话就有错误,算式明显有问题,应该是x  *0.1  /1000  *340  / ...

有更好的方法吗?
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-15 10:43:31 | 显示全部楼层
family 发表于 2016-9-26 13:22
请问一下这个PC连接ECH0    写了 GPIO_InitStructure.GPIO_Pin = ECHO_PIN;        怎么知道是连接的PC口呢?(初 ...

这个ECHO_PIN在外面定义成了GPIOC的了,你可以右键 go to definition查看
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-15 10:44:36 | 显示全部楼层
sunch214 发表于 2016-10-6 21:52
程序大体好用,但是有bug,就单纯测距计算那句话就有错误,算式明显有问题,应该是x  *0.1  /1000  *340  / ...

有一个疑问就是,如果那个定时器溢出了怎么办,溢出了的话,那个不就没有把溢出的那部分算上去嘛
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-15 10:45:24 | 显示全部楼层
有一个疑问就是,如果那个定时器溢出了怎么办,溢出了的话,那个不就没有把溢出的那部分算上去嘛
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1951
金钱
1951
注册时间
2016-11-4
在线时间
152 小时
发表于 2017-3-30 09:18:29 | 显示全部楼层
代码里的公式有错误,定时器的频率是10KHz,即计数值每增加1,时间就为0.1ms。所以代码里如果以cm为单位,那么计算距离的公式就应该为:TIM_GetCounter(TIM2)*0.1/1000*340/2.0*100;  //0.1/1000 是将时间单位转换为s   因为声速(340)的单位为m/s   最后*100是将计算出来的距离从m转换为cm  
超声波的技术文档上说的最远可以测量450cm 可以大概计算一下  时间为26ms 所以定时器的定时时间超过这个时间应该就可以  楼主这里定时500ms 如果真的进了定时器中断  那说明测量已经没有意义了  舍弃该次测量就行
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-4-27 14:51:08 | 显示全部楼层
shumivan 发表于 2016-11-29 09:02
很明显,他的这个程序是错误的设计,谁会在中断服务函数中加while死循环呢,这个电平检测很多时候就挂在那 ...

你好,你觉得的有什么好的方法没有呀?
回复 支持 反对

使用道具 举报

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2017-3-15
在线时间
33 小时
发表于 2017-7-4 19:24:43 | 显示全部楼层
感谢您的分享
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-7-12
在线时间
1 小时
发表于 2017-7-12 19:28:29 | 显示全部楼层
测出0.85的人们,肯定是超声波模块哪里的问题,看看是不是接的5V电源,接成3.3V会出现这种情况
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-5-8
在线时间
3 小时
发表于 2017-7-13 20:31:12 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2017-6-29
在线时间
11 小时
发表于 2017-7-14 22:30:21 | 显示全部楼层
给力呢
回复 支持 反对

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-7-13
在线时间
6 小时
发表于 2017-7-15 10:25:59 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2017-7-18
在线时间
1 小时
发表于 2017-7-18 09:50:52 | 显示全部楼层
是不是只接超声波就可以了   串口的引脚不需要接吧    我用的是普中stm32F103的板子    为什么我下载进去串口没有任何显示呢  请大家指教
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

高级会员

Rank: 4

积分
916
金钱
916
注册时间
2014-4-28
在线时间
75 小时
 楼主| 发表于 2017-7-24 09:33:32 | 显示全部楼层
依依O 发表于 2017-7-18 09:50
是不是只接超声波就可以了   串口的引脚不需要接吧    我用的是普中stm32F103的板子    为什么我下载进去串 ...

电脑串口连上了吗
来路长   前程湮   待从头拨断琴弦
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2017-7-18
在线时间
1 小时
发表于 2017-7-25 09:34:20 | 显示全部楼层

连上了   现在好了   问题是为什么使用串口的时候一定要勾选一下DTR才可以正常显示呢
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2017-3-1
在线时间
7 小时
发表于 2017-8-3 16:46:31 | 显示全部楼层
真心感谢,测试了一下很好用,这下可以好好参考程序学习一下大神
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-25
在线时间
2 小时
发表于 2017-8-7 18:15:19 | 显示全部楼层
请问一下体现出来的效果是啥呀,led灯反转嘛?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-25
在线时间
2 小时
发表于 2017-8-7 18:15:43 | 显示全部楼层
xiaoyan 发表于 2014-6-3 18:15
谢谢分享,我顶~

最后体现的效果是啥呀
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-6-25
在线时间
11 小时
发表于 2017-8-10 09:14:30 | 显示全部楼层
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-2-21
在线时间
10 小时
发表于 2017-9-27 19:37:51 | 显示全部楼层
谢谢分享,刚好要用这个模块
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-10-24
在线时间
0 小时
发表于 2017-10-24 16:08:33 | 显示全部楼层
我是个新手,想请问下我烧进去代码但是串口没数据出来,请问下为什么
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-10-24
在线时间
0 小时
发表于 2017-10-24 18:58:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-12-21
在线时间
8 小时
发表于 2017-12-21 20:26:36 | 显示全部楼层
楼主,请问,您在开源电子网分享的STM32超声波测距代码中,超声波模块是HC-SR04吗?
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

高级会员

Rank: 4

积分
916
金钱
916
注册时间
2014-4-28
在线时间
75 小时
 楼主| 发表于 2017-12-24 14:11:52 | 显示全部楼层
郁林志韧 发表于 2017-12-21 20:26
楼主,请问,您在开源电子网分享的STM32超声波测距代码中,超声波模块是HC-SR04吗?

Too many years passed, I didn't remember it at all.
来路长   前程湮   待从头拨断琴弦
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-3-29 04:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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