找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2964|回复: 3
收起左侧

STM32F103+野火指南者+HC-SR04测距源程序

[复制链接]
ID:427774 发表于 2019-8-4 10:33 | 显示全部楼层 |阅读模式
/*********************************************************/
/*主要控制程序,length=(tim+time*1000)*100/58.0;乘100是为了将M转为CM*/

float Senor_Using(void)


    float length=0,sum=0;
    u16 tim;
    unsigned int i=0;
    /*测5次数据计算一次平均值*/
    while(i!=5)
    {
        printf("111");
        GPIO_SetBits(GPIOC,GPIO_Pin_8);
        SysTick_Delay_Us(20);  //高电平信号超过10us
        GPIO_ResetBits(GPIOC,GPIO_Pin_8);
        /*等待回响信号*/
        while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)==0);
        TIM_Cmd(GENERAL_TIM,ENABLE);
        //回响信号到来,开启定时器计数
        while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)==1);
        //回响信号消失
        TIM_Cmd(GENERAL_TIM,DISABLE);
        printf("222");
        //关闭定时器
        tim=TIM_GetCounter(GENERAL_TIM);
        //获取计TIM3数寄存器中的计数值,一边计算回响信号时间
        length=(tim+time*1000)*100/58.0;
        //通过回响信号计算距离
        sum=length+sum;
        GENERAL_TIM->CNT=0;  //将TIM3计数寄存器的计数值清零
        time=0;  //中断溢出次数清零
        SysTick_Delay_Ms(60);
        i+=1; //每收到一次回响信号+1,收到5次就计算均值
    }
    length=sum/5;
    return length;
    //距离作为函数返回值
}
/****************************************************************************/
另外对一些不了解的朋友说一下请千万注意定时器的值。



超声波显示.7z

232.63 KB, 下载次数: 129, 下载积分: 黑币 -5

源码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:585414 发表于 2019-8-4 16:56 | 显示全部楼层
这个思路强啊,靠谱吗,精度有多高
回复

使用道具 举报

ID:427774 发表于 2019-8-4 21:24 | 显示全部楼层
Laplacey 发表于 2019-8-4 16:56
这个思路强啊,靠谱吗,精度有多高

角度在15以上误差在3MM。
回复

使用道具 举报

ID:481538 发表于 2019-12-3 20:34 | 显示全部楼层
测试距离大概在什么范围呢
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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