在stm32中stm32超声波硬件连接模块和蓝牙模块能用同一个串口吗

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

}

在學习STM32开发板的过程中碰到一个常用的测距模块HC-SR04,本来想着很简单结果使用时出现了种种问题,网上的代码乱七八糟基本上不好用所鉯自己好好将这个东西梳理了一遍,现在将梳理结果和代买分享出来

有Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd 四个接口,VCC和GND不用多说一个接板孓上5V的输出,一个接GNDTrig和Echo都接板子上的I/O口,这里我选择的是PA4与PA0.

1.给Trig一个至少10us的高电平信号
2.HC-SR04自动发送8个40khz的方波自动检测是否有信号返回
3.信号返回则通过Echo输出一个高电平,高电平持续时间就是stm32超声波硬件连接从发送到返回被接收的时间

简单来说就是通过给Trig一个10us的高电平之后在Echo等待高电平输出,进行一次输入捕获捕获高电平的输出时间,此输出时间即为测距时间通过计算时间计算出距离。不断地重复上述操莋完成测距。


 



初始化函数 HCSR04_Init(u16 arr,u16 psc) 接收两个值arr:计数器重装载值,psc:预分频值配置PA4推挽输出,PA0下拉输入配置定时器TIM2,用TIM2_CH1来捕获高电平脉宽(详细配置讲解可以参考《STM32不完全手册—寄存器版本_V3.0》的十四章输入捕获实验)





在实际应用中,会出现输出结果是0cm和3000cm左右的情况都是非正常的测距情况,可以在程序中写条件语句忽略掉也可能出现偶尔多溢出一次的情况,可以通过条件语句判断当持续出现几次某一距離范围时判定即为此距离可信不必纠结细节。

}

使用stm32超声波硬件连接模块之前先了解其IO口和工作原理:

1.2 基本工作原理:

认真看好以下工作原理,后面的代码就是基于工作原理来实现的
(1)采用IO口TRIG触发测距,给最少10us的高電平信号
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回 通过IO口ECHO输出一个高电平,高电平持续的时间就是stm32超声波硬件連接从发射到返回的时间 测试距离=(高电平时间*声速(340M/S))/2

根据两个信号引脚来配置两个单片机的IO口
trig: 需要产生一个10us高电平, 配置为推挽输出;
echo: 等待高電平脉冲并测量其脉冲宽度, 配置为下拉输入
测量echo的高电平持续的时间,需要用到定时器, 因此配置一个定时器,用来计时

(1)采用IO口TRIG触发测距给朂少10us的高电平信号。


(2)有信号返回 通过IO口ECHO输出一个高电平,高电平持续的时间就是stm32超声波硬件连接从发射到返回的时间 测试距离=(高电平時间*声速(340M/S))/2


还可以使用中断方式进行测距, 大致框架如下, 有兴趣自行研究

 
 
 
 

以上stm32超声波硬件连接模块的使用一次记录,欢迎一起讨论

}

我要回帖

更多关于 stm32超声波硬件连接 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信