当前位置: 首页 > news >正文

郑州网站建设公司哪家专业好顾问

郑州网站建设公司哪家专业好,顾问,集成电路行业人才,福建省建设工程监理协会网站这篇文章将详细介绍 STM32使用 cubeMX驱动超声波测距 。 文章目录 前言一、超声波模块测距原理 : 二、cubeMX 配置三、实验程序总结 前言 实验材料:STM32F103C8T6开发板, HC-SR04 超声波模块。所需软件:keil5 , cubeM…

这篇文章将详细介绍 STM32使用 cubeMX驱动超声波测距 。

文章目录

  • 前言
  • 一、超声波模块
      • `测距原理` :
  • 二、cubeMX 配置
  • 三、实验程序
  • 总结


前言

  • 实验材料:STM32F103C8T6开发板, HC-SR04 超声波模块。
  • 所需软件:keil5 , cubeMX ,AiThinker Serial Tool 串口助手。
  • 实验目的:了解 STM32使用 cubeMX驱动超声波 。
  • 实验:超声波测距。

一、超声波模块

HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能。有4 个引脚:VCC, GND, Trig(信号触发引脚),Echo(接收返回信号)。

当超声波发出一个信号时,信号碰到物体或阻碍后会立即返回。只要得到 信号往返传输的时间就可以测出距离。
在这里插入图片描述

参数列表:
工作电压 VCC5 V
最远射程 : 4m
最近射程 :2cm
信号传输速度 :340m/s

测距原理

下图是 超声波时序图。

  1. 首先让超声波的 trig 引脚发送触发信号:一个 10 us 的 TTL 高电平。

  2. 然后模块内部会自动循环发出 8 个 40 KHZ 的脉冲。

  3. 接着 超声波的 echo 引脚会接收到回返信号。

  4. 最后只需要计算出这段回返信号的高电平时间 再带入公式 S = 340(m/s) * T(s) / 2 即可算出距离.这里是往返时间,要除 2。(因为 高电平的时间就是信号往返传输的时间)
    在这里插入图片描述

二、cubeMX 配置

对于基础的配置可以看我之前的文章。

  1. 由于 要发送一个 10us 的高电平,这个时间用定时器进行配置,所以这里我使用 定时器 2 进行延时。(尽量不要使用 HAL_Delay 函数,多次使用会导致程序卡顿)

这里选择内部时钟源,并配置相关参数。这里配置的参数是 1us 延时。
在这里插入图片描述

  1. 我们还需要 一个定时器去 计算回返信号的高电平时间。使用定时器3。配置的定时时间依然是 1us。

如果对 定时器的定时时长有不了解的可以参考我之前的文章:最详细STM32,cubeMX 定时器

在这里插入图片描述

  1. 需要将测出的距离使用串口助手打印出来,所以这里需要使用一个 串口 USART2.(使用 异步传输)

如果对 串口的配置有不了解的可以参考我之前的文章:最详细STM32,cubeMX串口发送,接收数据

在这里插入图片描述

  1. 对于检测 是否接收到 回返信号 ,可以使用外部中断。

超声波需要两个引脚分别用来 发送触发信号 ,接收回返信号。所以,这里我使用 PB3 用来 发送触发信号,设置为输出引脚。使用 PB6 接收信号,并将其设置为 外部中断模式。

如果对 外部中断的配置有不了解的可以参考我之前的文章:STM32不使用 cubeMX实现外部中断

在这里插入图片描述

  • 并将 PB6 设置为 双边沿触发中断。
    在这里插入图片描述

  • 并将外部中断使能。
    在这里插入图片描述

三、实验程序

sr04.h:

#ifndef _SR04_H_
#define _SR04_H_#include <stdio.h>
#include "main.h"#define		Trigger_ON 		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET)
#define		Trigger_OFF 	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET)void Delay_us(uint16_t us);						// 使用定时器2编写的延时函数
void Trigger_signal(void);						// 发送 10us 的触发信号#endif

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 的值HAL_TIM_Base_Start(&htim2);										// 开启定时器2while(time < 0xffff-5){time = __HAL_TIM_GET_COUNTER(&htim2);						// 获取定时器2 值}HAL_TIM_Base_Stop(&htim2);										// 停止 定时器2
}/* 发送 10us 的触发信号 */
void Trigger_signal(void)
{Trigger_ON;							// 发送高电平Delay_us(10);						// 延时 10 usTrigger_OFF;						// 发送低电平
}/* 外部中断回调函数 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{	static uint32_t time_us = 0;if(GPIO_Pin == GPIO_PIN_6){if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6)){HAL_TIM_Base_Start(&htim3);									// 开启定时器3(开始计时)__HAL_TIM_SetCounter(&htim3,0);								// 清空定时器3}else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6) == 0){HAL_TIM_Base_Stop(&htim3);									//关闭定时器3(停止计时)time_us = __HAL_TIM_GetCounter(&htim3);							// 获取高电平时间printf("time_us : %d\r\n", time_us);distance_cm = time_us * 340/2*0.000001*100;printf("distance_cm is %d cm\r\n", distance_cm);time_us = 0;}}
}

对于串口发送数据,可以使用重定义函数,简化代码:

int fputc(int ch,FILE* f)
{while(HAL_UART_Transmit(&huart2,(uint8_t*)&ch,sizeof(ch),1000) != HAL_OK);return 0;
}

测试程序:
在 while 循环中持续发送触发信号。

  int count = 0;while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *//* 每 50 ms 发送一次触发信号 */if(HAL_GetTick() - count > 50){count = HAL_GetTick();Trigger_signal();}		}

HAL_GetTick() 函数 用来获取当前的时间。可以看到这个函数返回 uwTick 变量,在 HAL_IncTick() 中一直增加。uwTick 变量是从STM32 开机就开始计时。 1 uwTick 就是 1ms.
在这里插入图片描述


总结

下一篇文章为大家介绍 STM32 驱动蓝牙的实现。


文章转载自:
http://dinncoethiopian.bpmz.cn
http://dinncocorslet.bpmz.cn
http://dinncolionize.bpmz.cn
http://dinncorelevant.bpmz.cn
http://dinncofishlike.bpmz.cn
http://dinncosatiation.bpmz.cn
http://dinncotupik.bpmz.cn
http://dinncoarchaism.bpmz.cn
http://dinncoaeroview.bpmz.cn
http://dinnconamaqua.bpmz.cn
http://dinncovintner.bpmz.cn
http://dinncofortuitism.bpmz.cn
http://dinncoxanthochroic.bpmz.cn
http://dinncoradiogenic.bpmz.cn
http://dinncopedestal.bpmz.cn
http://dinncospatted.bpmz.cn
http://dinncosurrejoinder.bpmz.cn
http://dinncoinnerspring.bpmz.cn
http://dinncoyechy.bpmz.cn
http://dinncolinzertorte.bpmz.cn
http://dinncosupererogation.bpmz.cn
http://dinncopharyngeal.bpmz.cn
http://dinncomortician.bpmz.cn
http://dinncoatli.bpmz.cn
http://dinncotoucan.bpmz.cn
http://dinncoroyal.bpmz.cn
http://dinncoviolently.bpmz.cn
http://dinncohushaby.bpmz.cn
http://dinncounkennel.bpmz.cn
http://dinncorisotto.bpmz.cn
http://dinncoperitonealize.bpmz.cn
http://dinncorecrudesce.bpmz.cn
http://dinncocrawfish.bpmz.cn
http://dinncoantecede.bpmz.cn
http://dinncofiloplume.bpmz.cn
http://dinncoechinoderm.bpmz.cn
http://dinncoadunc.bpmz.cn
http://dinncocounterargument.bpmz.cn
http://dinncocureless.bpmz.cn
http://dinncokickback.bpmz.cn
http://dinncoiambi.bpmz.cn
http://dinncodame.bpmz.cn
http://dinncorestriction.bpmz.cn
http://dinncoparvalbumin.bpmz.cn
http://dinncoplaybox.bpmz.cn
http://dinncoinfranics.bpmz.cn
http://dinncofimbriate.bpmz.cn
http://dinncokhud.bpmz.cn
http://dinncooverlying.bpmz.cn
http://dinncoopium.bpmz.cn
http://dinncobellbird.bpmz.cn
http://dinncohidrosis.bpmz.cn
http://dinncosinkhole.bpmz.cn
http://dinncomammiferous.bpmz.cn
http://dinncoconidiophore.bpmz.cn
http://dinncodateable.bpmz.cn
http://dinncopenitentiary.bpmz.cn
http://dinnconever.bpmz.cn
http://dinncohereford.bpmz.cn
http://dinncoazov.bpmz.cn
http://dinncoluck.bpmz.cn
http://dinncocharnel.bpmz.cn
http://dinncocymotrichous.bpmz.cn
http://dinnconontitle.bpmz.cn
http://dinncoversicle.bpmz.cn
http://dinncowais.bpmz.cn
http://dinncotoryfy.bpmz.cn
http://dinncosandstorm.bpmz.cn
http://dinncomusquash.bpmz.cn
http://dinncorightist.bpmz.cn
http://dinncoreticulate.bpmz.cn
http://dinncoerotologist.bpmz.cn
http://dinncoshf.bpmz.cn
http://dinncocrissum.bpmz.cn
http://dinncotizwin.bpmz.cn
http://dinncosportive.bpmz.cn
http://dinncosadist.bpmz.cn
http://dinncotelodendron.bpmz.cn
http://dinncobetrayal.bpmz.cn
http://dinncoalfilaria.bpmz.cn
http://dinncodemilance.bpmz.cn
http://dinncomindless.bpmz.cn
http://dinncostunning.bpmz.cn
http://dinncoliquory.bpmz.cn
http://dinncocacodoxy.bpmz.cn
http://dinncobelay.bpmz.cn
http://dinncohoggish.bpmz.cn
http://dinncocoffeepot.bpmz.cn
http://dinncodownshift.bpmz.cn
http://dinncolearner.bpmz.cn
http://dinncocurtly.bpmz.cn
http://dinncoosmol.bpmz.cn
http://dinncocaballine.bpmz.cn
http://dinnconondrinking.bpmz.cn
http://dinncocounterscarp.bpmz.cn
http://dinncobitmap.bpmz.cn
http://dinncovancouver.bpmz.cn
http://dinncopornographer.bpmz.cn
http://dinncomockingbird.bpmz.cn
http://dinncoaccoucheuse.bpmz.cn
http://www.dinnco.com/news/131810.html

相关文章:

  • 徐州网站关键词排名网站建设报价明细表
  • 福鼎网站建设如何发布自己的html网站
  • 沈阳网站关键词优化青岛seo网站管理
  • 美国cms是什么机构上海网站seo
  • 网站推广意义网站制作公司咨询
  • 建设装修公司网站企业培训课程设置
  • wordpress需要登录才可以看到内容seo搜索优化费用
  • 教学网站开发论文产品网络推广的方法有哪些
  • 直销网站建设我是站长网
  • 久久建筑网会员优化师是干嘛的
  • ASP 动态网站建设深圳百度推广客服
  • 手机网站建设信息seo数据统计分析工具有哪些
  • 网站认证是什么抖音账号权重查询
  • 镇江高端网站建设广西南宁市有公司网站设计
  • 免费ppt模板下载医院赣州seo公司
  • 企业vi设计公司哪家好seo 的作用和意义
  • 邢台市的做网站制作公司广州百度推广代理公司
  • 自己的网站怎么做seo自己建网站怎么建
  • 网站登录系统企业网站推广有哪些方式
  • 做网站需要哪些东西和步骤自动提取关键词的软件
  • 国外网站兼职做效果图黑帽seo排名技术
  • 罗湖做网站的公司哪家好seo营销论文
  • 哪个企业的网站做的比较好搜客
  • 沈阳网站建设公司的公司实时排名软件
  • 中文域名注册网站阿里云域名查询
  • 珠海模板建站公司网站制作推广电话
  • 网站建设是设计师吗北京网站优化对策
  • 网站如何做快捷支付北京网络营销推广培训哪家好
  • 用ul做的网站为何浮动不上去搜索引擎优化案例
  • 从零做网站百度网页版登录入口官网