⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_it.c

📁 ARM_CORTEX-M3应用实例开发详解光盘
💻 C
📖 第 1 页 / 共 3 页
字号:
* 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 + -