初级会员

- 积分
- 173
- 金钱
- 173
- 注册时间
- 2015-3-17
- 在线时间
- 22 小时
|
发表于 2017-6-29 14:02:02
|
显示全部楼层
/*******************************************************************************
* Function Name : TIM2_IRQHandler
* Description : This function handles TIM2 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM2_IRQHandler(void)
{
if(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC4)) // capture cnt of period
{ TIM_SetCounter(TIM2, 0x0);
Turn_Off_PhA(); // for security,
/////////////////////
if (TIM2_Overflow==1)
{ TIM2_Overflow=0;
APC_On=0;
APC_Nxt=0;
}
else
{ Pos_Prd_Buf= TIM_GetCapture4(TIM2);
// for debug
if (Pos_Prd-Pos_Prd_Buf>(Pos_Prd) )
Debug_Ctrl=1;
else
Pos_Prd=Pos_Prd_Buf;
if (Pos_Prd<7500) // >500rpm, 200rpm-37500, 300rpm-25000, 500rpm-15000, 1000rpm-7500,1500rpm-5000
APC_Nxt=1;
else if (Pos_Prd>9000) //
APC_Nxt=0;
else APC_Nxt=APC_On;
if (APC_Nxt==1)
{ Th_On= (Pos_Prd>>1)+100; //(Pos_Prd>>14); //10
Th_Off=Pos_Prd-(Pos_Prd>>4); // 4
TIM_SetCompare2(TIM2, Th_On);
TIM_SetCompare3(TIM2, Th_Off);
APC_On=1;
}
else
APC_On=0;
}
TIM_ClearFlag(TIM2, TIM_FLAG_CC4);
TIM_ClearITPendingBit(TIM2,TIM_IT_CC4);
}
else if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update))
{ TIM2_Overflow=1;
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
/////////////////////
}
else if (TIM_GetFlagStatus(TIM2, TIM_FLAG_CC2))
{ if (APC_On) Turn_On_PhA();
TIM_ClearFlag(TIM2, TIM_FLAG_CC2);
TIM_ClearITPendingBit(TIM2,TIM_IT_CC2);
/////////////////////
}
else if (TIM_GetFlagStatus(TIM2, TIM_FLAG_CC3))//
{ if (APC_On) Turn_Off_PhA();
TIM_ClearFlag(TIM2, TIM_FLAG_CC3);
TIM_ClearITPendingBit(TIM2,TIM_IT_CC3);
/////////////////////
}
/*
else if (TIM_GetFlagStatus(TIM2, TIM_FLAG_CC1))// chop_A
{
TIM_ClearFlag(TIM2, TIM_FLAG_CC1);
TIM_ClearITPendingBit(TIM2,TIM_IT_CC1);
/////////////////////
Debug_Ctrl=1;
}
*/
}
这个是stm32f10x_it.c文件里面定义的,重复定义了
|
|