OpenEdv-开源电子网

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

TIM做频率计

[复制链接]

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2011-9-28
在线时间
1 小时
发表于 2011-10-31 14:15:19 | 显示全部楼层 |阅读模式

近来学了定时器,想用它做个频率计,请教下实现的具体思想~

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-31 17:14:13 | 显示全部楼层
1,中断.
2,定时器的输入捕获
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-10-31 21:27:05 | 显示全部楼层
用定时器估计可以吧,STM32的定时器很强大,你使能两个定时器,用其中一个作为另外一个的参数标准,把另外那个触发时钟设置为外部时钟,当那个作为标准的定时器溢出产生中断的时候,你读取另外那个外部时钟的定时器的计数值,然后就可以算出外部时钟源的频率了,这种方法比较弱智,我学51时候为了方便,不愿动脑,经常使用的方法,另外,这种方法因为存在比较大的干扰,所以有时候所测得的频率不是那么准确(不准确的原因很多种,除法所产生的浮点数,参数定时器的频率过低,或者也有可能在参数计时器产生中断了,外部被测时钟还没跑完半个时钟周期等等)
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2011-9-28
在线时间
1 小时
 楼主| 发表于 2011-11-1 15:26:01 | 显示全部楼层
回复【3楼】Tardis:
---------------------------------
那有没有什么方法能提高测量的精度呢,我参考了一下库3.5的例子,例子也是像原子哥说的那样用中断和输入捕获,但是我按它的方法却出现在调试的时候进入不了中断,现在正纳闷着~~
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-1 15:43:31 | 显示全部楼层
回复【4楼】满地的流浪:
---------------------------------
STM32的中断比较蛋痛的,你要先开启定时器的中断,还要在ISER寄存器里开启相应的定时器全局中断,这样还不够,你还得写对中断服务函数,中断服务函数错一个字母都进不了,,在中断服务函数里,对于定时器,一定要用if语句读取SR寄存器中的状态,不读状态他是不操作的,至于为神马一定要读状态,我和原子哥都表示不解。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 05:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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