【STM32F130RCT6】超声波测距模块思路和代码

目录

【硬件说明】

【理论说明】

【软件设计】

定时器初始化

超声波测距函数

定时器中断函数

主函数


【硬件说明】

        STM32F103内核开发板,超声波模块HC-SR04

 图1 HC-SR04超声波模块实物图

【理论说明】

过程中使用的超声波模块是HC-SR04模块。有四个引脚,分别是Echo、Trig、VCC、GND。Trig触发端:是为了触发超声波测距工作的引脚;Echo接收信号端:超声波返回到单片机一个高电平,而我们就是通过高电平持续的时间计算距离。

超声波原理:(1)采用 IO 触发测距,至少给 10us 的高电平信号;(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;(3)有信号返回,通过 IO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。

测试距离 = ( 高电平时间 * 声速(340 M/S ) ) / 2

  图2 HC-SR04超声波时序图

【软件设计】

定时器初始化

本次使用TIM3、TIM5来负责超声波模块的数据采集。在程序进入while循环之前,需要对TIM3、TIM5进行初始化,由于两个定时器的配置都大同小异,所以只展示一个。

/**************************************************************************
函数功能:定时器5通道输入捕获初始化
入口参数:入口参数:arr:自动重装值  psc:时钟预分频数 
返回  值:无
**************************************************************************/
void TIM5_Cap_Init(u16 arr, u16 psc)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	TIM_ICInitTypeDef TIM_ICInitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);												            
    //使能TIM5时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |           
    RCC_APB2Periph_GPIOC, ENABLE); //使能GPIO时钟
   
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA  输入
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_11;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //2M
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //2M
	GPIO_Init(GPIOB, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
	
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会用魔法的叮当猫

蟹蟹٩('ω')و!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值