OpenEdv-开源电子网

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

超声波测距输入捕获模式,哪位给看看,哪里错啦?

[复制链接]

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
发表于 2014-3-30 22:51:51 | 显示全部楼层 |阅读模式
初始化时设为上升沿捕获,检测到上升沿时捕获获得value1,设为下降沿捕获,下降沿捕获value2,计算distance。
但运行结果与逻辑不一致,不知道错在哪里!

超声波测距-TIM输入捕获.zip

2.34 MB, 下载次数: 538

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-31 01:44:04 | 显示全部楼层
你用按键模拟超声波的高低电平,测试下,看看可否测量按键的?
你的中断服务函数里面很多printf,而printf是很占时间的,这个你得考虑在里面,如果超声波脉冲很窄,就有问题了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-3-31 09:31:59 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
模拟时能测距,但是加上传感器就不行了,但是传感器没问题啊!
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-3-31 09:46:36 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
--------------------------------
进入主函数
触发测距!
发现障碍物,开启定时器,等待测距结束!
测距结束,关闭定时器!
距离为: 0.017000 米
--------------------------------
进入主函数
触发测距!
发现障碍物,开启定时器,等待测距结束!
测距结束,关闭定时器!
距离为: 0.017000 米
--------------------------------
进入主函数
触发测距!
发现障碍物,开启定时器,等待测距结束!
测距结束,关闭定时器!
距离为: 0.017000 米
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-31 19:28:35 | 显示全部楼层
回复【4楼】风中飞沙:
---------------------------------
用示波器看看你的传感器输出信号,和模拟信号有什么不同?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-3-31 21:52:59 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
问题已经解决,谢谢原子哥
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-3-31 21:56:18 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
在中断里调用库函数:
1-设置全局变量没好用,改为寄存器操作
2-Printf函数占用时间太长,将下拉信号产生的中断过滤掉了
均已改正,原子哥怎么看第一个问题,还不知道为什么不行
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-31 23:53:45 | 显示全部楼层
回复【7楼】风中飞沙:
---------------------------------
1-设置全局变量没好用,改为寄存器操作 ??
这个么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-8-20
在线时间
0 小时
发表于 2014-4-1 16:11:12 | 显示全部楼层
长知识啦!
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-4-2 14:49:18 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
应该是Printf的问题,全局变量应该是可以的。
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-4-2 21:13:12 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥,红外传感器实验if函数里面不让用break跳出函数啊!
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-4-2 21:14:02 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
不是红外传感器,是遥控器红外解码实验
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-2 23:12:13 | 显示全部楼层
回复【11楼】风中飞沙:
---------------------------------
贴代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-4-3 16:20:40 | 显示全部楼层
回复【13楼】正点原子:
---------------------------------
if(width>=5000)//超过5ms------无效高电平
{
received=0;
finished=1;
break;
}
stm32f10x_it.c(70): error:  #116: a break statement may only be used within a loop or switch
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-4 00:04:54 | 显示全部楼层
回复【14楼】风中飞沙:
---------------------------------
额。。。
if是不需要break的啊。。。
while、for,switch才可以用break。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-4-4 18:22:43 | 显示全部楼层
回复【15楼】正点原子:
-------------------------
哥,你的书里边写的break语句!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-4 21:01:02 | 显示全部楼层
回复【16楼】风中飞沙:
---------------------------------
那是因为if是属于while/for/switch里面的。
这个break是跳出它的上一级
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
 楼主| 发表于 2014-4-5 14:29:59 | 显示全部楼层
回复【17楼】正点原子:
-----------------------------
没注意,呵呵C语言都要忘光了,还是要捡起来啊,博大精深啊
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-12 19:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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