基于STM32的HC-SR04超声波测距模块实验 硬件环境 STM32F407探索板(其他开发板皆可以) HC-SR04超声波模块 软件环境 KEIL5 CUBEMX 串口调试助手(sscom或其他) 实验目标 了解HC-SR04超声波模块工作原理 实现超声波模块测距 1、超声波模块介绍 1.1 超声波测距原理及系统组成 超声波测距是借助于超声脉冲回波渡越时间法...
这里的计算需要除2,因为超声波发出的信号是需要往返的。 三、代码编写 创建HC-R04.c和HC-R04.h两个文件: HC-R04.h #ifndef_HC_SR04_H#define_HC_SR04_H#include"sys.h"#include"delay.h"#include"stm32f4xx_hal.h"voidHCSR04_Init(void);#defineTrig_ONHAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_P...
首先引用头文件以及对串口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...
#include"stm32f1xx.h"#include"core_delay.h"typedef struct hc_sr04_device_st{GPIO_TypeDef*trig_port;uint16_t trig_pin;GPIO_TypeDef*echo_port;uint16_t echo_pin;TIM_HandleTypeDef*tim;//us级硬件定时器double distance;//测算距离}hc_sr04_device_t;/* us级延时函数 */#defineHC_SR04_Delay_Us...
使用的硬件:STM32F103C8T6,HC-SR04,ST-Link(其他烧录器也可以),0.96寸OLED屏幕(非必须,仅供显示测距结果,可以使用串口助手代替),若干杜邦线。 涉及操作stm32的GPIO口,外部中断,定时器,本文中不会详细解释,仅提供代码思路。 HC-SR04: HC-SR04超声波测距模块提供2cm~400cm的测距功能,精度达3mm。
u32 temp; temp=TIM2CH1_CAPTURE_STA&0X3F; temp*=65536;//溢出时间总和temp+=TIM2CH1_CAPTURE_VAL;//得到总的高电平时间TIM2CH1_CAPTURE_STA=0;//开启下一次捕获returntemp; } u32 aHC_SR04(void) { u32 atemp=0;inti;for(i=0;i<9;i++) ...
三、代码编写 创建HC-R04.c和HC-R04.h两个文件: HC-R04.h #ifndef _HC_SR04_H#define _HC_SR04_H#include "sys.h"#include "delay.h"#include "stm32f4xx_hal.h"void HCSR04_Init(void);#define Trig_ON HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET)#define Trig_OFF HAL_GPIO_Writ...
基于STM32F103C8T6的0.96寸OLED屏显示HC-SR04超声波传感器测距程序 (keil编译+C语言标准库) 小盐-嵌入式学习生 3126 0 超声波测距小于30cm报警 想搞科技 826 0 HC-SR04超声波测距模块说明与基于STM32驱动代码程序的设计与下载验证 e-Play 2.8万 6 ...
代码编程 代码语言:javascript 复制 #include"stm32f1xx_hal.h"#include"ssd1306.h"#defineTRIG_PINGPIO_PIN_0#defineECHO_PINGPIO_PIN_1#defineTRIG_PORTGPIOA#defineECHO_PORTGPIOAuint32_t distance=0;char display_buffer[16];voidSystemClock_Config(void);voidGPIO_Init(void);voidI2C_Init(void);voidUl...
2代码分析 1时序图 步骤1 以上时序图表明你只需要提供一个10uS 以上脉冲触发信号。 所以我们得到第一段代码。 voidWave_SRD_Strat(void){GPIO_SetBits(GPIOB,Trig);//将Trig设置为高电平delay_us(20);//持续大于10us触发,触发超声波模块工作GPIO_ResetBits(GPIOB,Trig);} ...