高级会员

- 积分
- 817
- 金钱
- 817
- 注册时间
- 2016-2-5
- 在线时间
- 163 小时
|
10金钱
本帖最后由 夜乄歌 于 2016-4-27 23:33 编辑
使用战舰的板子移植的论坛的超声程序,但是超出一定范围或者距离很近时模块就是会死机非要手抖一下才回复正常,我搜索了下说这个现象是没有接受到回波,echo这个脚一直保持着保持高电平,请问各位用过的大神都怎么处理这个问题的
#include"ultrasonic.h"
#include"delay.h"
void ultra_init()
{
RCC->APB2ENR|=1<<7;
GPIOF->CRL&=0XFFFFFF00;
GPIOF->CRL|=0X00000043;
TRIG_Send=0;
}
void Ultra_Ranging(float *p)
{
u8 i;
u32 j;
float Ultr_Temp;
for(i=0;i<5;i++)
{
TRIG_Send=1;
delay_ms(10);
TRIG_Send=0;
while(!ECHO_Reci);
while(ECHO_Reci)
{
delay_us(10);
j++;
if(j>1000) //超出一定时间跳出
{
j=0;
break;
}
}
Ultr_Temp+=340/2*j*10;// 模块最大可测距3m
j=0;
delay_ms(60);//防止发射信号对回响信号的影响
}
*p=Ultr_Temp/5/1000000;
}
|
|