51单片机hc-sr04超声波模块控制的c语言编程,基于STM32单片机对HCSR04超声波的控制...

描述

注意:定义GPIOB2为超声输出;GPIOB10为输入,定时器用tim2

9265febed8c546966285ef4631852db6.png

#include “HCSR04.h”

#include “delay.h”

#include “sys.h”

int overcount;

float length=0;

void HCSR04_init()

{

GPIO_InitTypeDef GPIO_InitStructure;

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructer;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

TIM_DeInit(TIM2);

TIM_TimeBaseInitStructer.TIM_Period=4999;

TIM_TimeBaseInitStructer.TIM_Prescaler=7199;

TIM_TimeBaseInitStructer.TIM_ClockDivision=TIM_CKD_DIV1;

TIM_TimeBaseInitStructer.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructer);

TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

TIM_ITConfig(

TIM2,

TIM_IT_Update |

TIM_IT_Trigger,

ENABLE

);

TIM_ClearFlag(TIM2,TIM_FLAG_Update);

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

TIM_Cmd(TIM2,DISABLE);

}

float HCSR04_Read()

{

float sum=0,length1=0;

u8 i=0,j=0;

u16 tim;

{

// while(i!=5)

for(i=0;i《5;i++)

{

PBout(2)=1;

delay_us(20);

PBout(2)=0;

while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==RESET);

TIM_SetCounter(TIM2,0);

TIM_Cmd(TIM2,ENABLE);

while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==SET);

TIM_Cmd(TIM2,DISABLE);

tim=TIM2-》CNT;

length1=tim/58.0*100;

TIM2-》CNT=0;

sum+=length1;

}

}

length=sum/5;

sum=0;

return length;

}

///.h文件//

#include “stm32f10x_lib.h”

#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //ê?3?

#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //ê?è?

extern float HCSR04_Read();

extern void HCSR04_init();

//extern void HC_RS04_Init();

打开APP阅读更多精彩内容

点击阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值