新手上路
- 积分
- 21
- 金钱
- 21
- 注册时间
- 2020-4-15
- 在线时间
- 8 小时
|
10金钱
买的智能车套件,商家不提供代码解释,看不懂了,是个超声波测距模块,测距用下面公式
- UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/200.0; //计算距离&&UltrasonicWave_Distance<150
复制代码 然后主控室stm32f103,用了一个计时器驱动,初始化是这样的
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //时钟使能
- TIM_TimeBaseStructure.TIM_Period = 5000; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms
- TIM_TimeBaseStructure.TIM_Prescaler =(7200-1); //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率
- TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
- TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
复制代码 我不理解他是怎么计算出来距离的,我的理解是
库函数TIM_GetCounter(TIM2)得到计数值,计时器初始化的一个计数值时长是1/10KHz = 0.1ms
声速340m/s = 340mm/ms
所以总的时间t = TIM_GetCounter(TIM2) * 0.1ms
距离s = t * v / 2
= 340mm/ms * (TIM_GetCounter(TIM2) * 0.1ms) / 2 = TIM_GetCounter(TIM2) * 34 / 2但与他的不同呀
希望大佬解答!万分感谢!
|
|