OpenEdv-开源电子网

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

STM32定时器捕获频率(两天的心得)

[复制链接]

38

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2014-8-1
在线时间
6 小时
发表于 2015-5-22 21:01:09 | 显示全部楼层 |阅读模式
如何利用定时器的捕获功能测量频率,主要还是研究溢出中断和捕获中断的数据处理。官方给的历程误差太大了,不值得参考!
void  TIM2_IRQHandler(void)
{
   if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET) 
   {
        cnt_num++;         //溢出中断
   TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
// TIM_ITConfig( TIM2,  TIM_IT_Update , ENABLE);
   }
   if(TIM_GetITStatus(TIM2, TIM_IT_CC2) == SET) 
   {
      new_data = TIM_GetCapture2(TIM2);    //硬件级别的保存
     //  new_data = TIM2->CNT;
    //  TIM2->CNT=new_data; 
        OFnum=cnt_num;
        cnt_num=0;
        if(new_data < old_data)
         {
              data = old_data - new_data;
              Frequency = 72000000.0 / (OFnum*65536 - data);
         }
        else  
        {
                 data =new_data -  old_data;
                 Frequency = 72000000.0 / (OFnum*65536 + data);
         }
         old_data = new_data;
        TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
   }
}
如果你定时的初始化时按照历程来的,可以负责任的告诉你,不行,其中应该改动的是

      TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Trigger);   //不在是复位,复位的话,捕获的时候也会产生更新中断会干扰溢出时候的更新中断的计数

不过遗憾的是,这次计数98%的时候得出的频率误差是0.04Hz以内,没有平均,也没有1S内计数。已经很不错了,但是2%的数据波动,我认为原因是第

二次捕获的时候,还没来得级进中断处理的时候,恰好又发送了溢出中断,导致OFnum多加了一次,打个比方,第二次上升沿保存的是65530,此时的

CNT还在计数,它刚好要进入中断的时候,溢出中断抢先一步,OFnum多了1,   高手们看看。帮本科生做毕设做出的问题觉得有兴趣的可以看看!



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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-22 22:21:51 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-1-24
在线时间
55 小时
发表于 2015-5-23 00:40:41 | 显示全部楼层
我也遇到楼主这问题了,谢谢分享
学无止境
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-5-22
在线时间
0 小时
发表于 2015-5-23 11:00:58 | 显示全部楼层
楼主可以发完整的出来吗?我最近很是头疼这个测频率的问题,都搞了一周了
回复 支持 反对

使用道具 举报

38

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2014-8-1
在线时间
6 小时
 楼主| 发表于 2015-5-25 10:29:38 | 显示全部楼层
回复【4楼】TobyKing:
---------------------------中断是核心,别的都是历程上有的初始化
回复 支持 反对

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-7-22
在线时间
5 小时
发表于 2015-7-23 10:55:41 | 显示全部楼层
谢谢分享。。。
学海无涯!沧海一粟!
回复 支持 反对

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7585
金钱
7585
注册时间
2016-11-30
在线时间
644 小时
发表于 2018-7-17 19:17:18 | 显示全部楼层
mark!!!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-1-22
在线时间
2 小时
发表于 2020-3-10 10:41:23 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 06:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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