OpenEdv-开源电子网

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

超声波测距中,使用定时器中断的困惑

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2011-5-21
在线时间
0 小时
发表于 2011-5-21 11:16:50 | 显示全部楼层 |阅读模式
最近做超声波测距,就是简单的测量引脚高电平的时间。
思路是这样的
1.使用8MHZ时钟,不分频

 初始化Timerx_Init(235,1);//8Mhz的计数频率,计数到235为1cm距离

2. A0高电平时,打开定时器,测量时间
while(PAin(0))
   { 
       TIM3->CR1|=0x01;    //使能定时器3
   }
    TIM3->CR1|=0x00;    //关闭定时器3
   S=temp/2 //测量距离为总路程一半
   temp=0;//计数值清零

3.计数到235时,产生中断,进入中断函数。执行temp++操作
  void TIM3_IRQHandler(void)
{                 
 if(TIM3->SR&0X0001)//溢出中断
 {
  temp++;                             
 }      
 TIM3->SR&=~(1<<0);//清除中断标志位     
}

4.得出距离值S

初学定时器,这样测距思路对吗
实际测试后,S值一直为0,为什么
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-5-21 14:13:34 | 显示全部楼层
回复【楼主位】kent:
-----------------------------------------------------------------------
   TIM3->CR1|=0x00;    //关闭定时器3
这样根本管不了定时器.
   TIM3->CR1&=~(0x01);    //关闭定时器3
这才对.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2011-7-18
在线时间
0 小时
发表于 2011-8-29 22:38:35 | 显示全部楼层
我的也是,怎么解决?
回复 支持 反对

使用道具 举报

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2011-7-18
在线时间
0 小时
发表于 2011-8-29 22:38:52 | 显示全部楼层
回复【楼主位】kent:
---------------------------------
你的弄好了吗?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 21:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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