OpenEdv-开源电子网

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

超声波模块能否在外部中断里多次检测与障碍物的距离

[复制链接]

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-11-19
在线时间
20 小时
发表于 2019-4-24 20:31:15 | 显示全部楼层 |阅读模式
4金钱
超声波模块能否在外部中断里多次检测与障碍物的距离?

void EXTI9_5_IRQHandler(void)
{
        delay_us(10);

        if(EXTI_GetITStatus(EXTI_Line6)!=RESET)
        {
                while(i != 5)
                {
                        TIM_SetCounter(TIM3,0);
                        TIM_Cmd(TIM3,ENABLE);
                       
                        while(GPIO_ReadInputDataBit(GPIOE,Echo));  //等待低电平 等待到以后停止计时
                       
                        TIM_Cmd(TIM3,DISABLE);
                       
                        i += 1;  //每次检测到回响型号,+1,五次取平均
                        Distance=TIM_GetCounter(TIM3)*340/2000.0;   //72M预分频,所以得到的计时器的1等于1ms
                        sum = Distance + sum;
                        delay_ms(1);
                }
                Distance  = sum / 5;
               
               
                if(Distance > 15) //15
                        {
                               
                                LED0=1;  //        1         >50
                                ENA=1;
                                ENB=1;
                                delay_ms(500);
                        }
                        else
                        {
                                LED0=0;   //距离小于15则红灯亮,同时电机只保留一个转动      1 >50

                                ENA=0;   //通过控制一个电机停止,另一个电机继续转动实现转弯
                                delay_s(1);

                        }
               
                EXTI_ClearITPendingBit(EXTI_Line6);
        }
}


如图,在外部中断的基础上使用while循环进行多次测量,不知道这么写对不对,哪里缺了吗?
现在超声波检测到的结果是一直都是小于设定值。求帮助。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-4-25 02:12:19 | 显示全部楼层
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-4-19
在线时间
15 小时
发表于 2019-5-24 20:50:14 | 显示全部楼层
我也在做循迹小车超声测距,在原子哥那买的循迹小车,给的源程序,测距的公式是这样写的:UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/200.0;     预分频系数是7200,所以记一个数是0.1ms,但是那个*5我不知道是怎么回事,所以你试试*5,是不是就对了,同时也希望懂得大神帮忙解释一下。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 11:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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