stm32:定时器,GPIO,hc-sr04
首先说明考察点,如标题: 定时器,GPIO,hc-sr04
第一次接触32板子,我以为这和51一样,在开发板上直接操作,所以第一步是找超声波对应的引脚,当然,这是不可能的,这也为GPIO口的学习奠定了基础;
然后是hc-sr04,查资料,原理很简单,trig发出一个不低于10us的高电平方波,关掉trig,开定时器,等echo接受,关定时器,拿出时间计算距离;
定时器很重要,下面有较详细的解释;
超声波:
使能对应时钟,
trig选输出,echo输入,GPIO口选自己喜欢的
定时器:
[hc-sr04的工作距离是4m,对应声速的时间为23ms…所以我只需要让定时器在23ms以上一个溢出就不需要考虑中断,这里是30ms,时间等于(arr+1)*(psc+1)/频率,单位s,定时器3的频率是84mhz,因此,time=(29999+1)(83+1)/84000000=0.03s=30ms
main:
5次一循环,作为滤波,之后直接打印lengthtemp,阈值只需要在打印前判断数字,然后用if做个记号就可以了.
懒得截图了,这个是获取的时间,TIM_GetCounter可以将定时器当前计的数字拿出来,赋给变量,记得用过后初始化为0;
void GetEchoTimer()
{
t=(TIM_GetCounter(TIM3));
TIM3->CNT=0;
return t;
}