OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6299|回复: 2

关于HCSR04超声波模块的精度问题

[复制链接]

33

主题

80

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2016-10-19
在线时间
30 小时
发表于 2017-2-15 14:56:02 | 显示全部楼层 |阅读模式
1金钱
我不知道是不是程序写错了。
发回来的输出,在7cm以内是都能正确识别的,然后当障碍物超过7cm后,就一直显示7cm了,不知道为什么,求助啊。

程序如下:
#include "sys.h"
#include "delay.h"  
#include "usart.h"  
#include "led.h"
#include "timer.h"
//ALIENTEK 探索者STM32F407开发板 实验10
//输入捕获实验  
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司

extern u8  TIM5CH1_CAPTURE_STA;                //输入捕获状态                                                   
extern u32        TIM5CH1_CAPTURE_VAL;        //输入捕获值  
int main(void)
{  
        long long temp=0;  
        u8 dis;
        Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
        delay_init(168);                        //延时初始化   
        uart_init(84,115200);                //初始化串口波特率为115200
        //TIM14_PWM_Init(1000-1,168-1);        //1Mhz的计数频率,1Khz的PWM.     
        TIM5_CH1_Cap_Init(0XFFFFFFFF,84-1);//以1Mhz的频率计数
       
        RCC->AHB1ENR|=1<<5;           //使能PORTF时钟       
        GPIO_Set(GPIOF,PIN6,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PD);//复用功能,下拉输出
       
           while(1)
        {
                //LED0_PWM_VAL=0;
                //delay_ms(10);
                //LED0_PWM_VAL=40;
                //delay_ms(1);
                //LED0_PWM_VAL=0;
                PFout(6)=0;
                delay_ms(20);
                PFout(6)=1;
                delay_us(10);
                PFout(6)=0;
               
                while(!(TIM5CH1_CAPTURE_STA&0X80));       //等到捕获一次高电平
                //if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次高电平
                //{
                        temp=TIM5CH1_CAPTURE_STA&0X3F;
                        temp*=0XFFFFFFFF;                                 //溢出时间总和
                        temp+=TIM5CH1_CAPTURE_VAL;                //得到总的高电平时间
                        printf("HIGH:%lld us\r\n",temp);             //打印总的高点平时间
                        dis=temp*340*100/2000000;                        //cm
                        printf("DIS:%d cm\r\n",dis);
                        TIM5CH1_CAPTURE_STA=0;                        //开启下一次捕获
                        delay_ms(189);
                //}
               
        }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

80

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2016-10-19
在线时间
30 小时
 楼主| 发表于 2017-2-23 19:00:51 | 显示全部楼层
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-7-17
在线时间
19 小时
发表于 2021-10-16 14:19:53 | 显示全部楼层
给模块的电压可能不行,我直接接在战舰板上的5V可以,单独给模块5V就你这个现象
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表