OpenEdv-开源电子网

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

超声波测距距离计算的问题

[复制链接]

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-29
在线时间
17 小时
发表于 2019-2-21 18:20:08 | 显示全部楼层 |阅读模式
2金钱
今天看到一段计算超声波测距的程序,没看太懂,来请教各位大佬:
首先,超声波距离计算公式不是这个吗?  距离=高电平时间*声速(340m/s)/2

但是他的程序是如下:
void UltrasonicWave_CalculateTime(void)
{
   UltrasonicWave_Distance=TIM_GetCounter(TIM5)*5*34/2000;
}

用上述公式将m/s单位换算为cm/us后,也跟程序对不上,多了一个乘5,这是问题1 ?


问题2 是到这里距离不是已经算出来了吗,但,后面还有一句:
distance=UltrasonicWave_Distance/256*100+UltrasonicWave_Distance%256;
sprintf(buf,"Distance:%3dcm",distance);
这句就看不懂了,是什么意思呢?


定时器初始化的程序如下:
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
    TIM_DeInit(TIM5);                                                                                 
    TIM_TimeBaseStructure.TIM_Period=65535;                                      
    /* ÀÛ¼Æ TIM_Period¸öƵÂʺó²úÉúÒ»¸ö¸üлòÕßÖÐ¶Ï */
    TIM_TimeBaseStructure.TIM_Prescaler= (360-1);                                //时钟预分频数 72M/360
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;                         //采样分频
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;                   // 向上计数模式
    TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
    TIM_ClearFlag(TIM5, TIM_FLAG_Update);
                                      



还望大佬能够给予指教,不胜感激!


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

使用道具 举报

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-29
在线时间
17 小时
 楼主| 发表于 2019-2-21 20:34:17 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 14:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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