OpenEdv-开源电子网

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

我的超声波实在不知道怎么调了

[复制链接]

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2013-7-26
在线时间
2 小时
发表于 2013-8-24 21:51:45 | 显示全部楼层 |阅读模式
GPIO_SetBits(GPIOA,GPIO_Pin_4);
delay_us(40);
GPIO_ResetBits(GPIOA,GPIO_Pin_4);
TIM3->CNT=0;
while(Echo==0);
TIM_Cmd(TIM3, ENABLE);// TIM3 enable counter TIM3
while((Echo==1)&&(TIM3->CNT<TIM3->ARR-10));
count=TIM3->CNT;
TIM_Cmd(TIM3, DISABLE);
count=TIM3->CNT;
S=0.170*count;
if((S<20)||(S>2500)||(Ultrasonic_flag==1))
{
Ultrasonic_flag=1;
LED_OFF;
printf("不准!");
}
else
{
Ultrasonic_flag=0;
LED_ON;
}











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

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-8-24 23:42:32 | 显示全部楼层
仔细分析下发送到接收这段时间,代码的实现。一般这里没写好会导致误差很大
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2013-7-26
在线时间
2 小时
 楼主| 发表于 2013-8-25 08:22:11 | 显示全部楼层
知道了,我貌似解决了,因为我的定时器的时钟源实在PWM中开的,在调超声波时我把PWM模块管了,所以等于没有开启时钟。初学者真是没经验啊,谢谢提示啊。顺便问问如何在中断服务程序里检测此次触发的为(上升沿或者下降沿),触发方式为任意电平触发EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; 我怎么才能把超声波封装在一个中断里,或一个子函数里让它能实时的更新一个全局变量(距离)。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 14:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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