STM32(HAL库)驱动HC-SR04测距模块

简介: STM32(HAL库)驱动HC-SR04测距模块

1、简介

本文介绍通过STM32F103C8T6单片机对HC-SR04测距模块进行驱动,并且通过串口对数据进行打印。


2、操作流程

2.1 Cubemax初始化配置

首先进行初始化配置,点击进行跳转。

接着对PA0引脚进行TM2_CH1配置,最为Echo管脚,并且使能定时器中断如下图所示。


f15bf0c34b9be759b9370d7764810920.png

af607f9487bce97c5189e58a2b4e8fcd.png

51f42659f56d35c57644a2cc4f210080.png


接着对PA1引脚进行配置,作为Trig引脚驱动,配置图如下所示。



接着对串口1进行配置,如下所示。



最后生成文件,进行程序书写。


2.2 keil端程序书写

1.添加HC-SR04库文件

在生成的文件夹中建议新文件夹icode如下所示。


接着在新文件夹中复制gy-906库文件如下所示。



库文件文件链接如下所示。

链接:https://pan.baidu.com/s/1LpYvlQzCSa8HRgtUxiLu4g 
提取码:85sl 
--来自百度网盘超级会员V3的分享


接着在Keil中对驱动文件进行添加,过程如下所示。



如上图所示,将HC-SR04.c文件添加,接着对GY906.h文件进行添加。



2、代码书写

首先引用头文件以及对串口1进行重映射,可以实现printf函数进行数据发送,代码如下所示:

#include "stdio.h"
#include "HC-SR04.h"
//#include "Uart_printf.h"
int fputc(int ch, FILE *f)
{
 uint8_t temp[1] = {ch};
 HAL_UART_Transmit(&huart1, temp, 1, 2);
 //HAL_UART_Transmit(&huart2, temp, 1, 2);
 return ch;
}


接着在主函数中对该模块进行数据读取与打印,代码如下所示:

/* USER CODE BEGIN WHILE */
  while (1)
  {
        SR04_GetData();
        printf("\r\n检测距离为:%.2fcm\r\n",distant); 
        HAL_Delay(1500);
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }


输出结果如下所示:



上文如有错误恳请各位大佬指正。

相关文章
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
403 14
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
1055 13
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
317 10
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
1876 10
STM32CubeMX OLED驱动
STM32CubeMX OLED驱动
336 10
|
芯片
STM32CubeMX TM1637驱动数码管
STM32CubeMX TM1637驱动数码管
1287 6
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
1830 1
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
463 0
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
820 0
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
1284 0