您的位置 首页 电路

根据STM32单片机对HCSR04超声波的操控

基于STM32单片机对HCSR04超声波的控制-注意:定义GPIOB2为超声输出;GPIOB10为输入,定时器用tim2

留意:界说GPIOB2为超声输出;GPIOB10为输入,定时器TIm2

#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();

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/347007.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部