STM32/STM8技术论坛
直播中

AFWIND

5年用户 6经验值
擅长:可编程逻辑
私信 关注
[问答]

HC-SR04测距的显示数据不变

#include "HC_SR04.h"
volatile float Distance=0.0f;

void Wave_SRD_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_AFIO_CLK_ENABLE();
        SRD_GPIO_CLK_ENABLE();

  GPIO_InitStruct.Pin = SRD_trig;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(SRD_GPIO_PORT, &GPIO_InitStruct);
        
        
        GPIO_InitStruct.Pin = SRD_echo;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(SRD_GPIO_PORT, &GPIO_InitStruct);

  HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI0_IRQn);
}
static void SRD_Delay(uint16_t time)
{   
   u16 i=0;  
   while(time--)
   {
      i=10;  
      while(i--) ;   
   }
}
void Wave_SRD_Strat(void)
{
        HAL_GPIO_WritePin(SRD_GPIO_PORT,SRD_trig,GPIO_PIN_SET);
        SRD_Delay(50);            
        HAL_GPIO_WritePin(SRD_GPIO_PORT,SRD_trig,GPIO_PIN_RESET);
}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    HAL_TIM_Base_Start_IT(&htimx);
    while(!HAL_GPIO_ReadPin(SRD_GPIO_PORT,SRD_echo));
                HAL_TIM_Base_Stop_IT(&htimx);
                Distance=(__HAL_TIM_GET_COUNTER(&htimx)+msHcCount*1000)*0.17;
                __HAL_TIM_SET_COUNTER(&htimx,0);
          msHcCount=0;
                MF_CLR_FLAG(SystemFlag,SYS_CheckSRD);        
                __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
}


*********************************************************************

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{

  msHcCount++        ;
        
}


*********************************************************************

#define __HAL_TIM_GET_COUNTER(__HANDLE__)
   ((__HANDLE__)->Instance->CNT)


*********************************************************************


Wave_SRD_Init();
*********************************************************************
Wave_SRD_Strat();//开始工作。



只显示0.17和0.34两个数据

回帖(3)

AFWIND

2019-4-28 13:08:15
而且这两个数据的显示跟距离远近没有关系。。。
举报

AFWIND

2019-4-28 13:29:40
{:16:}{:16:}{:16:}{:16:}{:16:}{:16:}
举报

李慎梓

2019-4-28 14:19:48
你的距离转换函数有点怪啊,建议看下网上STM32用这个超声波测距模块的例程
举报

更多回帖

发帖
×
20
完善资料,
赚取积分