在进行初始化的时候我们首先要了解超声波模块的工作原理
VCC 供 5V电源,GND 为地线,TRIG 触 发 控 制 信 号 输入,ECHO 回响信号输出等四个接口端
最后看时序图,也就是模块初始化的重点
从时序图结合他的工作原理我们可以得到以下结论:
1.首先需要有一个不少于10uS的触发信号(建议20uS)
2.然后等待模块内部发出信号(ECHO变为高电平的时候),这时候就会发出8个脉冲信号,此时的ECHO为低电平(最好加上超时处理)。
3.等到回响信号变为高电平的时候,计算时间即可,加上超时处理
以下是博主在stm32f4开发板上的代码
#include "stm32f4xx.h"
#include "sys.h"
void sr04_init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
//打开端口B的硬件时钟 PB6 PE6
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
//打开端口E的硬件时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
//端口B的6号配置为输出模式 TRIG (根据自己喜欢的引脚配置 不固定)
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;//输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStruct.GPIO_Speed = GPIO_Fast_Speed;//50MHz
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;//无上下拉
GPIO_InitS