STM32F103CB控制超声波HCSR04可用程序

    xiaoxiao2022-06-29  46

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

    ///.CPP文件/

    #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)  //Êä³ö  #define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //ÊäÈë  extern  float HCSR04_Read(); extern  void HCSR04_init(); //extern  void HC_RS04_Init();

    转载请注明原文地址: https://ju.6miu.com/read-1124813.html

    最新回复(0)