写一个STM32的HC-SR04测距函数
时间: 2023-05-12 21:03:24 浏览: 111
好的,以下是一个简单的STM32的HC-SR04测距函数的代码:
```
#include "stm32f4xx.h"
#define TRIG_PIN GPIO_Pin_0
#define ECHO_PIN GPIO_Pin_1
#define TRIG_PORT GPIOA
#define ECHO_PORT GPIOA
void delay_us(uint32_t us)
{
uint32_t ticks;
ticks = us * (SystemCoreClock / 1000000);
while(ticks--);
}
float measure_distance(void)
{
GPIO_ResetBits(TRIG_PORT, TRIG_PIN);
delay_us(2);
GPIO_SetBits(TRIG_PORT, TRIG_PIN);
delay_us(10);
GPIO_ResetBits(TRIG_PORT, TRIG_PIN);
while(!GPIO_ReadInputDataBit(ECHO_PORT, ECHO_PIN));
uint32_t start_time = SysTick->VAL;
while(GPIO_ReadInputDataBit(ECHO_PORT, ECHO_PIN));
uint32_t end_time = SysTick->VAL;
float distance = ((start_time - end_time) / 1000000.0) * 340.0 / 2.0;
return distance;
}
```
这个函数使用STM32的GPIO口来控制HC-SR04模块的触发和接收引脚,通过计算声波的传播时间来测量距离。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)