stm32F103+HC-SR04 超声波测距程序编程

1、产品特点
HC-SR04  超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能, 距精度可达高到3mm.
2、基本工作原理:
(1)采用 IO 口 TRIG 触发测距,给最少 10us 的高电平信呈。
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声
波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;
3、主函数代码

 int main(void)
 {		
  float Dis;
	delay_init();	    	 //ÑÓʱº¯Êý³õʼ»¯	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
	uart_init(115200);	 //´®¿Ú³õʼ»¯Îª115200
 	LED_Init();			     //LED¶Ë¿Ú³õʼ»¯
	TIM3_Int_Init(); 
   	while(1)
	{
		Dis=Distance_test();
		printf("\r\n²âÊÔ¾àÀëΪ£º%.2fcm  \r\n",Dis);
		LED0=!LED0;
		delay_ms(1000);		   
	}	 

 
}	 
void TIM3_Int_Init(void)
{
     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	
	 GPIO_InitTypeDef  GPIO_InitStructure;
 	
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 
	
	
	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				
	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
	 GPIO_Init(GPIOC, &GPIO_InitStructure);					 
	 GPIO_ResetBits(GPIOC,GPIO_Pin_0);						 

	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;	
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 	
	 GPIO_Init(GPIOC, &GPIO_InitStructure);	  				
	 						   
	
	TIM_TimeBaseStructure.TIM_Period = 65535; 
	TIM_TimeBaseStructure.TIM_Prescaler =72-1; 
	TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 
 
	
					 
}


float Distance_test(void)
{
    
	TRIG_H;
	delay_us(20);
	TRIG_L;
	
	while(ECHO_Read==0);
	TIM_SetCounter(TIM3,0); 
	TIM_Cmd(TIM3, ENABLE);  //ʹÄÜTIMx	
    while(ECHO_Read==1);
	TIM_Cmd(TIM3, DISABLE);
	
	return (float)(TIM_GetCounter(TIM3))/1000000*340/2*100;
	
}

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值