HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可高达23mm。模块包括超声波发射器、接收器与控制电路
该模块引出四个接口:
VCC和GND为供电端,VCC接5V,GND必须和单片机共地(很重要,给单片机提供一个低电平参考,否则接下来的通信会错乱而导致读取到的数值无规律)
TRIG和ECHO为通信端,TRIG是触发控制信号输入,ECHO是回响信号输出
时钟配置:
分配trig引脚和按键控制输入,echo引脚我们通过tim计数器的ch1分配
设置定时器2并开启中断,
为了能够进行GPIO中断,我们需要配置PA6引脚
超声波时序图
1.发送大于10us的触发信号。
2.检测超声波发出信号时产生的高电平。
3.检测超声波接收到信号时产生的低电平
显示超声波测出的距离,我这里就直接使用串口助手显示了
为了能够用输入电平控制测距的开启或者关闭,我们这里设置当输入为高电平时中断测距,再次输入高电平时重新测距。
main函数代码
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
int a1=0;
int p1=0;
int time=0;
int con=1;
int resu=0;
int good_en=0