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

请教:各位前备,如何用定时计数器的溢出作为TRGO 【悬赏问答】

[复制链接]
uniqueeefocus37 提问时间:2012-9-11 11:17 /
我要用测量定时器仪脉冲周期从而计算频率,计数器的时钟在72M时使用一个定时器捕获,只能测量长910us的脉冲周期, 我需要测量的脉冲宽度最大时为20MS,所以一个定时器不够用,所以我想用定时器(TIM2)作为主从模式, 当脉冲宽度超过910US时(计数器溢出)里用这溢出触发输出TRGO, 然后定时器(TIM3)作为从定时器, TIM3采用外部时钟ITR1(TIM2的TRGO)作为时钟,
现在的问题是脉冲宽度低于910US时 TIM3定时器也在计数。
定时器配置函数如下:  请前辈指导下。
void TIM_Configuration(void)
{
 /* 定义 TIM_ICInit 初始化结构体 TIM_ICInitStructure */
 TIM_ICInitTypeDef  TIM_ICInitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        /*计数器基本配置*/
        TIM_TimeBaseStructure.TIM_Period = 65535; //
        TIM_TimeBaseStructure.TIM_Prescaler = 0;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
 /*
 *  选择 TIM2 第2通道
 *  捕获输入上升沿
 *  TIM输入2与IC2相连
 *  TIM 捕获在捕获输入上每探测到一个边沿执行一次
 *  选择输入比较滤波器0x0
 */
 
     TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; //选则通道2,
    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;//上升沿触发
    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //引脚对应关系
    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //不分屏
    TIM_ICInitStructure.TIM_ICFilter = 0x0;   //不虑波
    TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);  //使用PWM输入模式
 
 /* 选择TIM2输入触发源: TIM 经滤波定时器输入 2  */
   TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);//IC2为触发源
 
 /* 选择从机模式:复位模式 */
    TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); //
 
 /* 开启主从模式模式 */
   TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);
                      //生成更新事件
  TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular);
          //更新事件输出触发//
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);  
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //    TIM3   配置 从定时器, 外部时钟,(TIM2的溢出更新事件输出
 //   用于转速脉冲的扩展计数。当转速低于1100转时
        /*tim3 为从模式  外部时钟 TIM2 的TRG0 */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        TIM_TimeBaseStructure.TIM_Period = 65535; //
        TIM_TimeBaseStructure.TIM_Prescaler = 0;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
        TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1);//ITR1触发源(定时器TIM2的TRO
         TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_External1); //从模式外部时钟模式1
         /* 使能 TIM2  TIM3计数器 */
       TIM_Cmd(TIM2, ENABLE);
      TIM_Cmd(TIM3, ENABLE);
 
       /*  开启TIM2的CC2 中断*/
       TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE);
}
 
收藏 评论6 发布时间:2012-9-11 11:17

举报

6个回答
uniqueeefocus37 回答时间:2012-9-11 17:38:08

RE:请教:各位前备,如何用定时计数器的溢出作为TRGO

顶一下, 望前辈们指导下,试过时钟分频,  可是误差比较大,
zykzyk-93033 回答时间:2012-9-11 20:28:20

RE:请教:各位前备,如何用定时计数器的溢出作为TRGO

我觉得你用两个定时器,误差肯定是大的。
caesar_song 回答时间:2012-10-18 09:07:16

回复:请教:各位前备,如何用定时计数器的溢出作为TRGO

 顶楼主 我要遇到这个问题 你解决了吗 能了2天了 吃不好睡不着的 都快疯掉了,你有没有试过那种计数器 ,就是用一个定时器当溢出中断时标志位+1  来计算
 
        if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
        {
                TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
                ifalg++;
        }
        if(TIM_GetITStatus(TIM4,  TIM_FLAG_CC2) != RESET)
        {
          TIM_ClearITPendingBit(TIM4, TIM_FLAG_CC2);
                PWM_count.ut_PWM_Period = TIM_GetCapture2(TIM4);
                itemp=ifalg;
                ifalg=0;
        }   
 
但是我这样不知道是什么原因  程序一直在溢出中断中出不来 ,清标志位不管用 ,清不了 我能加你QQMa 我的事279125140
xiaodc88 回答时间:2012-10-30 20:29:13

RE:请教:各位前备,如何用定时计数器的溢出作为TRGO 【悬赏问答】

可以用两个定时器接力计数的,以前调过,可是忘了例程放哪了,找到了再贴上来
xieyuanfu 回答时间:2012-11-12 12:38:02

RE:请教:各位前备,如何用定时计数器的溢出作为TRGO 【悬赏问答】

你这样子使用的话 要把定时器进行同步才行  要不肯定有很大误差,
单个定时器 你不用定时器溢出 模式  用 捕获比较 模式 的精度 会高一点的
因为那样是自动装载 不用你软件处理
k_er 回答时间:2012-11-13 16:51:39

回复:请教:各位前备,如何用定时计数器的溢出作为TRGO 【悬赏问答】

同求答案

所属标签

相似问题

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