【发布时间】:2021-01-28 15:22:31
【问题描述】:
假设我有一个 STM32F4,系统时钟为 8MHz,时间(TIM3_PSC = 39)。我正在连接超声波传感器 HC-SR04
我正在做定时器中断,想计算距离和可以计算的最大距离。
所以我的工作是:1/8MHz * TIM32_PSC = 0.000000125 * 40 = 5uS 是定时器周期。
假设以下代码:
float distance; // in m
…
void TIM3_IRQHandler(void)
{
static uint16_t left;
if (…)
{
left = TIM3->CCR1;
}
else
{
uint16_t right = TIM3->CCR1;
distance = ______________________________________________
}
TIM3->SR &= ~TIM_SR_CC1IF;
}
所以距离应该是 = (right - left * 340/2)
是吗?
最大距离是 MaxDistance = 340m/s / 5uS = 68Meters ?
【问题讨论】:
-
我对超声波测距不熟悉。
left&rigth是什么? -
@Tagli 左右传感器读数
-
似乎不对。 (左右)应该放在括号中,如果没有别的,你肯定是指
us或usec,而不是uS(微西门子)。但无论如何,如果不深入研究,这个公式似乎是假的; 5us 计时器周期必须以某种方式存在,因为您不会将左右值与任何物理时间单位相乘。如果您将问题稍微去本地化,您可能会更幸运地找到合格的答案。 -
@dialer 我得到了右 - 左传感器读数的差异......然后我乘以物理单位声速 340,因为我有两个传感器,所以我除以 2。跨度>