OpenEdv-开源电子网

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

关于定时器捕获后输出单脉冲的问题

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-12-10
在线时间
16 小时
发表于 2016-6-19 08:31:41 | 显示全部楼层 |阅读模式
1金钱
各位大神,        我用TIM2配置成输入捕获的模式用来测量脉冲宽度,然后用TIM3输出一个同捕获脉冲一样宽度的单脉冲,具体实现是:配置TIM2的IC1和IC2都映射至TI1,设置IC1上升沿捕获,IC2下降沿捕获,使能中断,配置TIM3单脉冲输出,初始化时不使能TIM3.然后在TIM中断函数里去设置TIM3的脉宽及开启TIM3。但是现在出现的情况是,TIM3单脉冲每次输出的都是前一次的捕获的脉宽。具体说就是,第一次捕获后没有输出,第二次捕获后输出的是第一次捕获的脉宽。感觉是中断函数里有问题,请各位帮我看看:


void Tim2_Pwm_In_Irq(void)
        {
           static u16 ccr1,ccr2,temp_cnt;
           if (TIM_GetITStatus(TIM2,TIM_IT_CC1)==SET)
                {
                  ccr1=TIM->CCR1;
                  TIM_ClearFlag(TIM2,TIM_FALG_CC1);
                }
       if (TIM_GetITStatus(TIM2,TIM_IT_CC1)==SET)
           {
              ccr2=TIM->CCR2;
                  TIM_ClearFlag(TIM2,TIM_FALG_CC1);
                  if(ccr2>ccr1)
                  {
                    temp_cnt=ccr2-ccr1;
                  }
                  else
                  {
                    temp_cnt=oxFFFF-ccr1+ccr2;
                  }
                 TIM_SetAutoreload(TIM3,2000+ temp_cnt);
         TIM_SetCompare1(TIM3,2000);
         TIM_Cmd(TIM3,ENABLE);                 
           }
        }


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-6-22 22:19:53 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 17:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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