HC-SR04模块有4个管脚,分别是VCC、GND、Trij、Echo。
原理:
启动超声波模块需要对Trij管脚进行拉高操作然后延时至少10us之后在拉低,此时超声波模块才能启动,并开始计时。启动之后超声波模块的一个向外发送8次40Khz的声波,如果超声波接收到了声波返回的信号之后此时Echo会拉高并停止计时,最后通过声波在空气中的速度,就可以计算距离。
时序图:
超声波在空气中大概速度:
计算公式:距离=(速度*时间)/2声波从发送到接收是距离的两倍,所以我们需要除以2。
CubeMX的配置选择自己的芯片型号:STM32F407VE
选择外部高速时钟:
配置时钟树:
打开SYS选择下载方式:
配置管脚:
打开串口(可打开可不打开,可以查看实时数据)选择异步通信:
打开定时器:
生成程序:
代码:
main里的代码:
#include "tim.h"
#include "stdio.h"
int fputc(int ch, FILE *f)//重定向
{
while((USART1->SR & 0x40)==0);
USART1->DR = (uint8_t) ch;
return ch;
}
void for_delay_us(uint16_t nus)//微秒级延时(循环)
{
uint16_t i;
for(i=0;i
结果:



