OpenEdv-开源电子网

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

stm32超声波测距

[复制链接]

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
发表于 2017-11-16 14:52:07 | 显示全部楼层 |阅读模式
10金钱
我想写一个超声波测距的程序,但是写好后,显示一直不对,我进行仿真,程序会一直在这句while( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==RESET);我查了很久也不知道怎么回事,用王永标发现PA6(echo)的电平一直没有变化都是低电平。所以想请问一下各位大神,这是什么原因。还有就是我把PA6改为浮空输入,在后面添加GPIO_ResetBits(GPIOA,GPIO_Pin_6),PA6一直是低电平,它就不会再这句循环,会在while( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==SET);循环。

实验13 超声波测距.rar

3.09 MB, 下载次数: 1267

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

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2017-11-16 15:39:43 | 显示全部楼层
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-16 15:51:22 | 显示全部楼层

没有啊
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-16 15:53:31 | 显示全部楼层

我直接用定时器来计时就是啊,PA6一变成高电平就开始计时啊,低电平就关闭定时器
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-16 15:54:36 | 显示全部楼层

我上传了程序附件的,您可以下载下来看一下的
回复

使用道具 举报

15

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2014-11-21
在线时间
48 小时
发表于 2017-11-16 17:28:54 | 显示全部楼层
上原理图,光看代码看不出什么东东来
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-16 18:38:11 | 显示全部楼层
yzhanghe 发表于 2017-11-16 17:28
上原理图,光看代码看不出什么东东来

这个好像不许什么原理图吧,直接一个开发板显示屏,再将超声波的引脚连上去不就行了吗
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-16 18:39:56 | 显示全部楼层
yzhanghe 发表于 2017-11-16 17:28
上原理图,光看代码看不出什么东东来

超声波的TRIG引脚连接PA4,ECHO引脚连接PA6,VCC连5v,GND连GND不就可以了吗
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2017-11-17 09:10:01 | 显示全部楼层
你的这种做法在51中有试过,在STM32中没试过,思路是没有错;但是    sum=(tim+overcount*1000)*58;计算公式是怎么理解的。tim是计数值,overcount*1000相当于1ms,这样相加不合适吧;为什么不是这样:(tim+overcount*65535)*170/1000。另外STM32中超声波测量使用中断捕获会好一些。
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-11-17 10:47:51 | 显示全部楼层
学习32 发表于 2017-11-16 18:39
超声波的TRIG引脚连接PA4,ECHO引脚连接PA6,VCC连5v,GND连GND不就可以了吗

io口配置成了输入,你还去输出没有意义.

某个IO一直为低很有可能是你的配置有为题哦.或者那里公用了.
自己选择的路,成家前走完。
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2017-9-21
在线时间
12 小时
发表于 2017-11-17 12:07:21 | 显示全部楼层
我的电路板上挂了10组超声波测距模块,同时跑没有问题,
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-17 13:06:27 | 显示全部楼层
aiyeba 发表于 2017-11-17 10:47
io口配置成了输入,你还去输出没有意义.

某个IO一直为低很有可能是你的配置有为题哦.或者那里公用了.

我就是将pa4复用为TIM2啊,计时ECHO的引脚的高电平持续时间
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-17 13:08:34 | 显示全部楼层
学习32 发表于 2017-11-17 13:06
我就是将pa4复用为TIM2啊,计时ECHO的引脚的高电平持续时间

说错了,是pa6
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-17 13:11:23 | 显示全部楼层
大瓶子凌凌漆 发表于 2017-11-17 09:10
你的这种做法在51中有试过,在STM32中没试过,思路是没有错;但是    sum=(tim+overcount*1000)*58;计算公 ...

我查了一些资料,发现在一些博客上面就是像我这样写的
回复

使用道具 举报

56

主题

343

帖子

0

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2016-3-8
在线时间
267 小时
发表于 2017-11-17 13:15:06 | 显示全部楼层
设为上拉输入试试,还有超声波模块5V供电一定要足,不要用3.3V。
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-17 13:19:05 | 显示全部楼层
学习32 发表于 2017-11-17 13:06
我就是将pa4复用为TIM2啊,计时ECHO的引脚的高电平持续时间

只要超声波的trig引脚有一个持续10us的高电平,就可以自动发送脉冲,我就可以用PA6来检测是否高电平啊
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-17 13:26:02 | 显示全部楼层
pdwdzz 发表于 2017-11-17 13:15
设为上拉输入试试,还有超声波模块5V供电一定要足,不要用3.3V。

不行,我一直用的5V
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-17 13:49:13 | 显示全部楼层
aiyeba 发表于 2017-11-17 10:47
io口配置成了输入,你还去输出没有意义.

某个IO一直为低很有可能是你的配置有为题哦.或者那里公用了.

还有就是我设置的是读取输入的电平
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2017-11-17 18:09:54 | 显示全部楼层
用定时器的捕获功能,你这样测距 很容易死循环
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-11-17 18:22:27 | 显示全部楼层
Sun_Fly 发表于 2017-11-17 18:09
用定时器的捕获功能,你这样测距 很容易死循环

为什么会死循环?我看了下一些博客,他们上面就是像这样写的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 16:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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