while (HAL_GPIO_ReadPin(ECHO_GPIO_Port, ECHO_Pin) == GPIO_PIN_RESET); // 启动定时器 HAL_TIM_Base_Start(&htim2); // 等待Echo引脚变为低电平 while (HAL_GPIO_ReadPin(ECHO_GPIO_Port, ECHO_Pin) == GPIO_PIN_SET); // 停止定时器 HAL_TIM_Base_Stop(&htim2); // 读取定时器的计数值...
HC-SR04是一款广泛使用的超声波测距模块,它能够提供2cm至400cm的非接触式距离测量,精度高达3mm。本项目将介绍如何使用STM32微控制器通过HAL库来驱动HC-SR04模块,并附上详细的代码实现。 1. 硬件连接 HC-SR04模块通过三个引脚与STM32连接: VCC:连接到STM32的5V电源。 GND:连接到STM32的地线。 Trig(触发):连接...
链接:https://blog.csdn.net/as480133937/article/details/99407485 一、HC-SR04简单介绍 HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的. 实物图: 接口定义: 新版的HC-SR04增加UART和IIC...
AI代码解释 //单次获取测量距离floatHCSR04_Get_Distant(void){HCSR04StartTrigStart();while(!HCSR_ECHO());HCSR04_TimerFunc(1);//start timerwhile(HCSR_ECHO());HCSR04_TimerFunc(0);//stop timerreturn(__HAL_TIM_GetCounter(&htim2))/58.0;}//均值滤波减小测量误差floatDistance(uint8_t cnt){...
STM32(HAL库)驱动HC-SR04测距模块 1、简介 本文介绍通过STM32F103C8T6单片机对HC-SR04测距模块进行驱动,并且通过串口对数据进行打印。 2、操作流程 2.1 Cubemax初始化配置 首先进行初始化配置,点击进行跳转。 接着对PA0引脚进行TM2_CH1配置,最为Echo管脚,并且使能定时器中断如下图所示。
* @param hc_sr04_device the pointer of the hc_sr04_device_t object * @return none */staticvoidHC_SR04_Start(hc_sr04_device_t*hc_sr04_device){/* output high level */HAL_GPIO_WritePin(hc_sr04_device->trig_port,hc_sr04_device->trig_pin,GPIO_PIN_SET);/* maintain high level at leas...
硬件:STM32F103C8T6微控制器、HC_SR04超声波测距模块软件:CubeMX用于配置微控制器、Keil5用于编写和调试代码、FlyMCU用于烧录程序、野火串口调试助手用于观察数据传输 实验关键代码 uint32_t csb_get_distance(void){ uint32_t CSB_value = 0; // 使能Trig引脚输出高电平 HAL_GPIO_WritePin(Trig_GPIO...
一、HC-SR04超声波模块介绍 二、HC-SR04超声波模块原理 三、代码编写 四、程序测试 总结 前言 本篇文章将带大家使用HAL库驱动HC-SR04超声波模块。超声波模块作为智能小车必备的模块,要学习智能小车的同学是必须掌握好这个模块的使用的。 一、HC-SR04超声波模块介绍 ...
HC-SR Gokit STM32 方法/步骤 1 使用STM32CubeMX配置PA0为输出,PA1为下拉输入,PA0连接Trig脚,PA1连接Echo脚。2 开启定时器2,添加代码:if(HAL_TIM_Base_Start(&htim2)!=HAL_OK){printf("Error!\r\n");}HAL_GPIO_WritePin(Trig_GPIO_Port,Trig_Pin,GPIO_PIN_SET);HAL_Delay(1);//20...
sr04.c: #include "sr04.h" int distance_cm = 0; extern TIM_HandleTypeDef htim2; extern TIM_HandleTypeDef htim3; /* 延时函数(单位 us) */ void Delay_us(uint16_t us) { uint16_t time = 0xffff - us - 5; __HAL_TIM_SET_COUNTER(&htim2,time); // 设置 定时器2 的值 ...