📄 stm32f10x_it.c
字号:
* Function Name : DMA1_Channel5_IRQHandler
* Description : This function handles DMA1 Channel 5 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel5_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : DMA1_Channel6_IRQHandler
* Description : This function handles DMA1 Channel 6 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel6_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : DMA1_Channel7_IRQHandler
* Description : This function handles DMA1 Channel 7 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel7_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : ADC1_2_IRQHandler
* Description : This function handles ADC1 and ADC2 global interrupts requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void ADC1_2_IRQHandler(void) //AD中断有三种情况:AD_EOC、AD_JEOC、AD_AWD
//下面分别处理这3种情况。
{
//if(ADC_GetITStatus(ADC1, ADC_IT_JEOC) == SET))
if((ADC1->SR & ADC_FLAG_JEOC) == ADC_FLAG_JEOC)
{
//It clear JEOC flag
ADC1->SR = ~(u32)ADC_FLAG_JEOC;
if (SVPWMEOCEvent()) //得到直流母线电压、散热器温度的AD转换结果。关闭ADC1转换。
{
#ifdef DAC_FUNCTIONALITY
#if (defined OBSERVER_GAIN_TUNING || defined NO_SPEED_SENSORS)
MCDAC_Update_Value(LO_ANGLE,(s16)(STO_Get_Electrical_Angle()));
MCDAC_Update_Value(LO_I_A, STO_Get_wIalfa_est());
MCDAC_Update_Value(LO_I_B, STO_Get_wIbeta_est());
MCDAC_Update_Value(LO_BEMF_A, STO_Get_wBemf_alfa_est());
MCDAC_Update_Value(LO_BEMF_B,STO_Get_wBemf_beta_est());
#endif
#endif
MCL_Calc_BusVolt(); //计算母线电压值。
switch (State)
{
case RUN:
FOC_Model(); // 正常运行时,进行矢量控制,包括: PMSM torque and flux 调整。
break;
case START:
#ifdef NO_SPEED_SENSORS
#ifdef VIEW_ENCODER_FEEDBACK
ENC_Start_Up(); // 无传感器模式开始启动,启动时间为:hStart_Up_TimeLeft_500us,初始为:10S
if ( (wGlobal_Flags & FIRST_START) != FIRST_START)
{
STO_Start_Up();
}
#else
STO_Start_Up(); // 无传感器模式开始启动,启动时间为:hStart_Up_TimeLeft_500us,初始为:10S
#endif
#elif defined ENCODER
ENC_Start_Up();
#elif defined HALL_SENSORS // 霍尔元件没有启动过程。
State = RUN;
#endif
break;
default:
break;
}
#ifdef BRAKE_RESISTOR
if((wGlobal_Flags & BRAKE_ON) == BRAKE_ON)
{
u16 aux;
#ifdef THREE_SHUNT
aux = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2);
#elif defined SINGLE_SHUNT
aux = ADC_GetInjectedConversionValue(ADC2, ADC_InjectedChannel_2);
#endif
if (aux < BRAKE_HYSTERESIS)
{
wGlobal_Flags &= ~BRAKE_ON;
MCL_Set_Brake_Off();
}
}
#endif
#ifdef DAC_FUNCTIONALITY
MCDAC_Update_Value(I_A,Stat_Curr_a_b.qI_Component1);
MCDAC_Update_Value(I_B,Stat_Curr_a_b.qI_Component2);
MCDAC_Update_Value(I_ALPHA,Stat_Curr_alfa_beta.qI_Component1);
MCDAC_Update_Value(I_BETA,Stat_Curr_alfa_beta.qI_Component2);
MCDAC_Update_Value(I_Q,Stat_Curr_q_d.qI_Component1);
MCDAC_Update_Value(I_D,Stat_Curr_q_d.qI_Component2);
MCDAC_Update_Value(I_Q_REF,hTorque_Reference);
MCDAC_Update_Value(I_D_REF,hFlux_Reference);
MCDAC_Update_Value(V_Q,Stat_Volt_q_d.qV_Component1);
MCDAC_Update_Value(V_D,Stat_Volt_q_d.qV_Component2);
MCDAC_Update_Value(V_ALPHA,Stat_Volt_alfa_beta.qV_Component1);
MCDAC_Update_Value(V_BETA,Stat_Volt_alfa_beta.qV_Component2);
#if (defined ENCODER || defined VIEW_ENCODER_FEEDBACK)
MCDAC_Update_Value(SENS_ANGLE,ENC_Get_Electrical_Angle());
#elif (defined HALL_SENSORS)
if (State != RUN)
{HALL_IncElectricalAngle();}
MCDAC_Update_Value(SENS_ANGLE,HALL_GetElectricalAngle());
#elif (defined VIEW_HALL_FEEDBACK)
HALL_IncElectricalAngle();
MCDAC_Update_Value(SENS_ANGLE,HALL_GetElectricalAngle());
#endif
#if ((defined OBSERVER_GAIN_TUNING) && (!defined(NO_SPEED_SENSORS)))
STO_Calc_Rotor_Angle(Stat_Volt_alfa_beta,Stat_Curr_alfa_beta,MCL_Get_BusVolt());
#endif
MCDAC_Update_Output();
#endif
}
} // 上面是正常注入AD转换后,需要处理的。前2种中断类别。
else
{ // 这里是AWD模拟看门狗被激活了。
#ifdef THREE_SHUNT
if(ADC_GetITStatus(ADC1, ADC_IT_AWD) == SET)
#elif defined SINGLE_SHUNT
if(ADC_GetITStatus(ADC2, ADC_IT_AWD) == SET)
#endif
{
#ifdef BRAKE_RESISTOR
//Analog watchdog interrupt has been generated
MCL_Set_Brake_On();
wGlobal_Flags |= BRAKE_ON;
#else
MCL_SetFault(OVER_VOLTAGE);
#endif
#ifdef THREE_SHUNT
ADC_ClearFlag(ADC1, ADC_FLAG_AWD);
#elif defined SINGLE_SHUNT
ADC_ClearFlag(ADC2, ADC_FLAG_AWD);
#endif
}
} //这是AD模拟看门狗被触发了。看门狗是由于直流母线过压所致,过流和过热是硬件检测
} // 后触发TIM1_BRK_IRQHandler紧急停车中断,响应级别最高。
/*******************************************************************************
* Function Name : USB_HP_CAN_TX_IRQHandler
* Description : This function handles USB High Priority or CAN TX interrupts
* requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USB_HP_CAN_TX_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : USB_LP_CAN_RX0_IRQHandler
* Description : This function handles USB Low Priority or CAN RX0 interrupts
* requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USB_LP_CAN_RX0_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : CAN_RX1_IRQHandler
* Description : This function handles CAN RX1 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void CAN_RX1_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : CAN_SCE_IRQHandler
* Description : This function handles CAN SCE interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void CAN_SCE_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : EXTI9_5_IRQHandler
* Description : This function handles External lines 9 to 5 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI9_5_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : TIM1_BRK_IRQHandler
* Description : This function handles TIM1 Break interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_BRK_IRQHandler(void)
{
// MCL_Fault_Reset_On();
MCL_SetFault(OVER_CURRENT);
TIM_ClearITPendingBit(TIM1, TIM_IT_Break);
}
/*******************************************************************************
* Function Name : TIM1_UP_IRQHandler
* Description : This function handles TIM1 overflow and update interrupt
* request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_UP_IRQHandler(void)
{
// Clear Update Flag
TIM_ClearFlag(TIM1, TIM_FLAG_Update);
#ifndef ICS_SENSORS
SVPWMUpdateEvent();
#endif
}
/*******************************************************************************
* Function Name : TIM1_TRG_COM_IRQHandler
* Description : This function handles TIM1 Trigger and commutation interrupts
* requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_TRG_COM_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : TIM1_CC_IRQHandler
* Description : This function handles TIM1 capture compare interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_CC_IRQHandler(void)
{
}
/*******************************************************************************
* Function Name : TIM2_IRQHandler
* Description : This function handles TIM2 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
#ifndef TIMER2_HANDLES_ENCODER
#ifndef TIMER2_HANDLES_HALL
void TIM2_IRQHandler(void)
{
}
#endif
#endif
/*******************************************************************************
* Function Name : TIM3_IRQHandler
* Description : This function handles TIM3 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
#ifndef TIMER3_HANDLES_ENCODER
#ifndef TIMER3_HANDLES_HALL
void TIM3_IRQHandler(void)
{
}
#endif
#endif
/*******************************************************************************
* Function Name : TIM4_IRQHandler
* Description : This function handles TIM4 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
#ifndef TIMER4_HANDLES_ENCODER
#ifndef TIMER4_HANDLES_HALL
void TIM4_IRQHandler(void)
{
}
#endif
#endif
/*******************************************************************************
* Function Name : I2C1_EV_IRQHandler
* Description : This function handles I2C1 Event interrupt request.
* Input : None
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -