初级会员

- 积分
- 142
- 金钱
- 142
- 注册时间
- 2018-3-29
- 在线时间
- 17 小时
|
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);
还望大佬能够给予指教,不胜感激!
|
|