初级会员

- 积分
- 78
- 金钱
- 78
- 注册时间
- 2015-12-10
- 在线时间
- 16 小时
|
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);
}
}
|
|