【STM32学习】(13)STM32实现超声波测距(HC-SR04)

经过反复的研究和调试,终于搞好了,所以说,只要静下心,肯于研究,问题就会显得没那么复杂。

博文写之前,先要分析一下硬件的基本构造和样式以及它的工作原理:

样式如图:

【STM32学习】(13)STM32实现超声波测距(HC-SR04)

【STM32学习】(13)STM32实现超声波测距(HC-SR04)
工作原理(很重要):

【STM32学习】(13)STM32实现超声波测距(HC-SR04)

【STM32学习】(13)STM32实现超声波测距(HC-SR04)

说明一下工作过程:

单片机型号:STM32F103VET

       1.提供一个10us以上的脉冲

       2.模块会自动发出8个40KHz周期电平,并检测回波

       3.等待输出回响信号,【STM32学习】(13)STM32实现超声波测距(HC-SR04)

             要注意这个电平是自动产生的,测试距离远,这个脉宽就宽,与检测距离成正比

实现步骤:

     1.用按键来调用测距功能,后期可以修改成自动循环测距,但循环测距的周期要在60ms以上,不然会有干扰

              按键接在PC0

     2.打开串口1(USART1),为了在电脑上用串口调试助手看测试的距离值。

     3.打开定时器TIM3,这里设置了5us中断一次,读者也可以用其它定时器完成

     4.开外部中断1,映射到PA1口外部中断

这样就差不多了

接线:

按键接在PC0

超声波测距模块,trig接在PA0

超声波测距模块,Echo接在PA1

超声波测距模块,VCC接在5V上

 

下面看代码,因为代码分的文件比较多。只贴出核心代码:

【STM32学习】(13)STM32实现超声波测距(HC-SR04)

核心代码如下: