研究生
最后登录1970-1-1
在线时间 小时
注册时间2016-6-11
|
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。
|
|