初级会员

- 积分
- 85
- 金钱
- 85
- 注册时间
- 2014-6-3
- 在线时间
- 2 小时
|

楼主 |
发表于 2015-9-8 16:45:43
|
显示全部楼层
回复【5楼】正点原子:
---------------------------------
PWM输入模式溢出中断怎么处理,为什么我的没有计数溢出的时候,溢出中断里CapStruct.PeriodOverflowCnt 还是等于2呢,
void TIM2_IRQHandler(void)
{
if(FreqMeasureFlag ==FreqMeasure_ON && CapEnd==0) //????????????
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
CapStruct.PeriodOverflowCnt++;
}
if(TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)//????1·??ú????????
{
CollectFlag++;
if(CollectFlag==1)//??????????
{
CapEnd =0; //????
CapStruct.Duty = TIM_GetCapture1(TIM2); //????????±?
CapStruct.Period = TIM_GetCapture2(TIM2); //????????
snprintf((char *)ReturnCommand,64,"CapStruct.Duty:%d\n",CapStruct.Duty);
SendStr(ReturnCommand);
snprintf((char *)ReturnCommand,64,"CapStruct.Period:%d\n",CapStruct.Period);
SendStr(ReturnCommand);
}
if(CollectFlag>=2)//????????
{
// snprintf((char *)ReturnCommand,64,"INPUT\n");
// SendStr(ReturnCommand);
CapStruct.Duty = TIM_GetCapture1(TIM2); //????????±?
CapStruct.Period = TIM_GetCapture2(TIM2); //????????
TIM_ITConfig(TIM2, TIM_IT_CC2|TIM_IT_Update, DISABLE); //????????
TIM_Cmd(TIM2, DISABLE);
// snprintf((char *)ReturnCommand,64,"CapStruct.Duty:%d\n",CapStruct.Duty);
// SendStr(ReturnCommand);
// snprintf((char *)ReturnCommand,64,"CapStruct.Period:%d\n",CapStruct.Period);
// SendStr(ReturnCommand);
// snprintf((char *)ReturnCommand,64,"CapStruct.DutyOverflowCnt:%d\n",CapStruct.DutyOverflowCnt);
// SendStr(ReturnCommand);
// snprintf((char *)ReturnCommand,64,"CapStruct.PeriodOverflowCnt:%d\n",CapStruct.PeriodOverflowCnt);
// SendStr(ReturnCommand);
CollectFlag=0;
CapEnd = 1; //??????????????????
}
}
}
TIM_ClearITPendingBit(TIM2, TIM_IT_CC2|TIM_IT_Update); //????????±ê????
} |
|