野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10832|回复: 2

火哥火哥,你的历程发现bug

[复制链接]
发表于 2017-2-20 23:44:59 | 显示全部楼层 |阅读模式
TIM—通用定时器-输入捕获-测量脉冲宽度 M3-霸道历程出现bug。反馈如下:

printf ( "\r\n测得高电平脉宽时间:%d.%d s\r\n", time/ TIM_PscCLK, time% TIM_PscCLK); //打印高电平脉宽时间
这是开发板历程。今天做超声波距离检测,发现测量距离和实际距离差得很多(在我这次试验中time为11401)。排查其他问题之后,只可能在高电平脉冲时间测量这里,不仅如此,距离越近,时间还越长,我就觉得很纳闷。仔细分析了一下之后发现历程bug。
小数部分,火哥的历程怎么能直接使用 time% TIM_PscCLK这个求余的方式呢,如同我的11401数据,本应该是0.011401而用火哥历程将出现0.11401,这个在火哥按键演示或者一般情况下可能不太凸显,但是在超声波测距中就明显了,导致我数据比真实数据大了10倍,本来近距离300多的数据,在火哥历程中将出现0.3这样数据,这也就是为什么我之前发现距离越近,时间还越长。更改后的代码为:
                        distance=(double)time/TIM_PscCLK*340/2;
                        // 打印距离
                        printf ( "\r\n测得距离为:%f m\r\n",distance);

直接转成double就行,终于解决了困惑我一下午的问题。超声波测距KO。

捕获.PNG
回复

使用道具 举报

发表于 2017-2-21 13:43:33 | 显示全部楼层
漂亮                                
回复 支持 反对

使用道具 举报

发表于 2017-2-21 19:58:30 | 显示全部楼层
这个代码确实写得有点恶劣,就为了不想用浮点数运算,搞这么麻烦,还搞错了
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-27 16:48 , Processed in 0.037288 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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