访问电脑版页面

导航:老古开发网手机版STM32单片机STM32单片机应用

基于STM32单片机对HCSR04超声波的控制

导读:
关键字:
STM32单片机,定时器,超声波,

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

来源:未知   作者:工程师周亮  2018/11/2 15:47:00
栏目: [ STM32单片机应用]

相关阅读

STM32单片机实现无源蜂鸣器产生音乐声的设计

无人机陀螺仪主控芯片STM32应用详解

STM32单片机的TEA加密通信设计

基于STM32的LF RFID识别系统设计

基于STM32芯片的指纹识别系统设计与实现

基于STM32单片机连接射频si4438模块的方案设计

STM32F103控制AD7606采集模拟信号

STM32单片机以NEC协议实现红外遥控设计

STM32单片机对正交编码器的驱动

STM32音乐播放器,文件查找的实现

基于STM32的便携式二氧化碳监测仪设计

STM32单片机对红外接收系统的设计

如何利用stm32单片机进行超声波测距

基于STM32的简易四轴飞行器系统的设计实现

STM32设计的嵌入式系统的智能控制网络终端方案

stm32红外遥控总结

体感遥控器设计遭遇瓶颈?用STM32 MCU造!

基于stm32f4的高速信号频谱分析仪的设计与实现

基于STM32单片机对HCSR04超声波的控制

一种基于STM32的温室远程监测和控制系统的设计