你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

外部计数STM32 ETR计算频率问题

[复制链接]
小武555 提问时间:2015-7-22 15:01 /
我用外部计数STM32 ETR计算频率,测量100K频率,用定时器2定时1S,定时器三PD2(TIM3_ETR)计数,计算公式f=n/t;测量出来的结果是9999 HZ,整整少了一位数字,这是什么原因呢,大家分析一下,谢谢,附我的程序
void Time3_Configuration()
{  
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
  TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  // Time base configuration
     
  TIM_ETRClockMode2Config(TIM3, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);  
  //TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);  
  TIM_SetCounter(TIM3, 0);   
  TIM_Cmd(TIM3, ENABLE);
}
        /*1S定时*/
void Tim2_Config(void)
{
   TIM_TimeBaseInitTypeDef   TIM2_TimeBaseStructure;
   NVIC_InitTypeDef NVIC_InitStructure;  
   TIM_DeInit(TIM2);
   TIM2_TimeBaseStructure.TIM_Period =999;
   TIM2_TimeBaseStructure.TIM_Prescaler = (7200-1);
   TIM2_TimeBaseStructure.TIM_ClockDivision = 0x0;//ÉèÖÃʱÖÓϵÊý ²»·ÖƵ
  TIM2_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//ÏòÉϼÆÊýģʽ
   TIM_TimeBaseInit(TIM2, &TIM2_TimeBaseStructure); // Time base configuration
   TIM_ClearFlag(TIM2,TIM_FLAG_Update);//Çå³þ¸üбê־λ
  TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );
   TIM_Cmd(TIM2, ENABLE);
   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);               
}
最后的计算部分:
void TIM2_IRQHandler(void)   
{
       if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
         {
            TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
            CAPTURE1=(u32)TIM_GetCounter(TIM3);        
     }
       sum+=CAPTURE1;
       count++;
       if(count==4)
       {
        Frequency1=sum/4;//求频率公式F=n/t;这里求了4次的计数平均值,结果是1S的频率
       sum=0;
        count=0;
             }
       TIM_SetCounter(TIM3,0);
}
<
收藏 评论18 发布时间:2015-7-22 15:01

举报

18个回答
回答时间:2015-7-22 15:10:33
TIM3中断加IO输出,用示波器测试一下波形。
stary666 回答时间:2015-7-22 15:40:34
没有研究过,顶
Mandelbrot_Set 回答时间:2015-7-22 16:49:21
定时器2定时不是1S吧..
小武555 回答时间:2015-7-23 09:16:42
Mandelbrot_Set 发表于 2015-7-22 16:49
定时器2定时不是1S吧..

那你认为是好多
小武555 回答时间:2015-7-23 09:17:47
安 发表于 2015-7-22 15:10
TIM3中断加IO输出,用示波器测试一下波形。

目的是什么,TIM3只是计数
小武555 回答时间:2015-7-23 09:58:06
Mandelbrot_Set 发表于 2015-7-22 16:49
定时器2定时不是1S吧..

刚才是0.1S,现在是定时1S,
TIM2_TimeBaseStructure.TIM_Period =9999;
  TIM2_TimeBaseStructure.TIM_Prescaler = (7200-1);
测量100K怎么是34456 HZ.大家分析一下
回答时间:2015-7-23 11:44:18
小武555 发表于 2015-7-23 09:17
目的是什么,TIM3只是计数

示波器测试TIM3的实际间隔。
dsjsjf 回答时间:2015-7-23 12:55:01
帮顶      
Mandelbrot_Set 回答时间:2015-7-23 14:01:26
小武555 发表于 2015-7-23 09:58
刚才是0.1S,现在是定时1S,
TIM2_TimeBaseStructure.TIM_Period =9999;
  TIM2_TimeBaseStructure.TIM_P ...

考虑到65536+34456 月月等于 100000 排查下是否存在溢出
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版