全志ARM-超声波测距

超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度, 计算出模块到前方障碍物的距离

1.测距原理:

给Trig端口至少10us的高电平发送声波,Echo信号,由低电平跳转到高电平,开始发送波;Echo,由高电平跳转回低电平,表示波回来了

计算时间:Echo引脚维持高电平的时间!声波发出去的那一下,开始启动定时器声波回来的拿一下,我们开始停止定时器,计算出中间经过多少时间

计算距离:

距离=速度(340m/s)*时间/2

2. 时间函数

cpp 复制代码
#include int gettimeofday(struct timeval *tv,struct timezone *tz )

gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中

1. timeval 结构体定义:

cpp 复制代码
struct  timeval{

       long  tv_sec;  /*秒*/

       long  tv_usec; /*微妙*/

};

2. timezone 结构定义:

cpp 复制代码
struct  timezone{

        int tz_minuteswest;/*和greenwich 时间差了多少分钟*/

        int tz_dsttime;    /*type of DST correction*/

}:

代码实现:

cpp 复制代码
//计算程序在当前环境中数数10万次耗时多少
#include <sys/time.h>
 #include <stdio.h>
 //int gettimeofday(struct timeval *tv,struct timezone *tz )
 void mydelay()
 {
 int i,j;
 for(i=0;i<100;i++){
 for(j=0;j<1000;j++);
 }
 }
 int main()
 {
 struct timeval startTime;
 struct timeval stopTime;
 gettimeofday(&startTime,NULL);
 mydelay();
 gettimeofday(&stopTime,NULL);
 long diffTime = 1000000*(stopTime.tv_sec - startTime.tv_sec) + 
 (stopTime.tv_usec - startTime.tv_usec);
 printf("全志H6的Linux数100000耗时%ldus\n",diffTime);
 return 0;
 }
相关推荐
Mr..Jackey3 小时前
瑞佑 RUI Builder 图形化 UI 设计工具
arm开发·人工智能·单片机·ui·人机交互·ra8889·lcd控制芯片
IAR Systems18 小时前
使用IAR Arm工具链开发和调试Zephyr RTOS
arm开发·嵌入式·iar·zephyr
l'm coming1 天前
[linux]内核启动加载驱动文件的流程
linux·arm开发·驱动开发·嵌入式
Code-keys1 天前
ARM NEON SIMD 编程实战:从音频信号处理到AI算子研发实战
arm开发·音视频·信号处理
有什么事2 天前
云手机多开哪个强?ARM架构:云手机多开的信任基石与性能核心
arm开发·智能手机·架构
头枝2 天前
ARM Cortex-M DWT CYCCNT 必须显式初始化,jlink调试时正常,使用时异常的问题
arm开发·stm32·单片机·问题·cyccnt
咖喱年糕2 天前
KEIL5 编译错误解决:MDK 5.37 及以上版本添加 AC5(ARM Compiler 5)编译器
arm开发·单片机·keil·嵌入式软件·ac5
振南的单片机世界2 天前
中央对齐PWM:边沿对齐EMI大,中央对齐更安静
arm开发·stm32·单片机·嵌入式硬件
三佛科技-187366133972 天前
GD32F103VDT6是什么芯片?GD32 ARM Cortex-M3微控制器MCU解析
arm开发·单片机·嵌入式硬件
都在酒里2 天前
【极致低延时】香橙派部署 MediaMTX 实现 WebRTC 推流,延时仅 500-800ms,比局域网 ffmpeg 拉流快近 10 倍!(附踩坑全记录)
linux·arm开发·ffmpeg·webrtc·orangepi·嵌入式软件