访问手机版页面
你的位置:老古开发网 > STM32单片机 > STM32单片机应用 > 正文  
基于STM32单片机对HCSR04超声波的控制
内容导读:

注意:定义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();

标签:STM32单片机,定时器,超声波,
来源:未知 作者:工程师周亮 时间:2018/11/2 15:47:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐