STM32(HAL库)驱动HC-SR04测距模块
1、简介
本文介绍通过STM32F103C8T6单片机对HC-SR04测距模块进行驱动,并且通过串口对数据进行打印。
2、操作流程
2.1 Cubemax初始化配置
首先进行,点击进行跳转。
接着对PA0引脚进行TM2_CH1配置,最为Echo管脚,并且使能定时器中断如下图所示。
接着对PA1引脚进行配置,作为Trig引脚驱动,配置图如下所示。
接着对串口1进行配置,如下所示。
最后生成文件,进行程序书写。
2.2 keil端程序书写
- 添加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("
检测距离为:%.2fcm
",distant);
HAL_Delay(1500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
输出结果如下所示:
上文如有错误恳请各位大佬指正。
1、简介 本文介绍通过STM32F103C8T6单片机对HC-SR04测距模块进行驱动,并且通过串口对数据进行打印。 2、操作流程 2.1 Cubemax初始化配置 首先进行,点击进行跳转。 接着对PA0引脚进行TM2_CH1配置,最为Echo管脚,并且使能定时器中断如下图所示。 接着对PA1引脚进行配置,作为Trig引脚驱动,配置图如下所示。 接着对串口1进行配置,如下所示。 最后生成文件,进行程序书写。 2.2 keil端程序书写 添加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(" 检测距离为:%.2fcm ",distant); HAL_Delay(1500); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } 输出结果如下所示: 上文如有错误恳请各位大佬指正。