ソースを参照

增加IF和零度控制,目前版本TIM中断开启后会导致单片机复位,采用FOC中断中更新虚拟位置。

Dail 1 年間 前
コミット
22dd565d07

+ 2 - 0
Core/Src/main.c

@@ -128,6 +128,7 @@ int main(void)
 	MX_TIM1_Init();
   MX_TIM2_Init();
 	MX_TIM3_Init();
+	MX_TIM4_Init();
   MX_DMA_Init();
   MX_ADC1_Init();
   MX_ADC2_Init();
@@ -143,6 +144,7 @@ int main(void)
 	
 	//定时器2启动计数
 	HAL_TIM_Base_Start(&htim2);
+	//HAL_TIM_Base_Start_IT(&htim4);
 	
 	//变量初始化
 	Var_Init();

+ 5 - 2
Core/Src/stm32f1xx_it.c

@@ -40,6 +40,7 @@
 #include "power12V_driver.h"
 #include "motor_control.h"
 #include "gpio.h"
+#include "tim.h"
 #include "main.h"
 /* USER CODE END 0 */
 
@@ -51,6 +52,7 @@ extern ADC_HandleTypeDef hadc1;
 extern ADC_HandleTypeDef hadc2;
 extern TIM_HandleTypeDef htim1;
 extern TIM_HandleTypeDef htim3;
+extern TIM_HandleTypeDef htim4;
 
 /******************************************************************************/
 /*            Cortex-M3 Processor Interruption and Exception Handlers         */ 
@@ -262,12 +264,13 @@ void TIM1_UP_IRQHandler(void)
 /**
   * @brief This function handles TIM3 global interrupt.
   */
-void TIM3_IRQHandler(void)
+void TIM4_IRQHandler(void)
 {
   /* USER CODE BEGIN TIM3_IRQn 0 */
 
   /* USER CODE END TIM3_IRQn 0 */
-  HAL_TIM_IRQHandler(&htim3);
+  //HAL_TIM_IRQHandler(&htim4);
+	TIM4_Update_Isr();
   /* USER CODE BEGIN TIM3_IRQn 1 */
 
   /* USER CODE END TIM3_IRQn 1 */

+ 5 - 11
J-scope.jscope

@@ -10,7 +10,7 @@
             <DataFile Name="" />
             <RawFile Name="" />
             <Scope>
-                <Options TimeResolutionUs="2000000" />
+                <Options TimeResolutionUs="50000" />
             </Scope>
         </Configuration>
         <Windows>
@@ -19,22 +19,16 @@
         </Windows>
         <SelectedSymbols>
             <Symbol>
-                <Options Name="SVM_Angle" Address="0x200005E8" Type="ushort" TypeID="7" Size="2" GraphColorRed="255" GraphColorGreen="215" GraphColorBlue="0" YMinSampled="5460" YMaxSampled="60074" YAvgSampled="16383" Offset="4" ShowInGraph="1" YOffset="200" IsAutoConfig="0" YResolution="20000" MaxValue="91800" File="..\User\Src\hall_sensor.c" Scope="0" DrawStyle="0" />
+                <Options Name="SVM_Angle" Address="0x200005F0" Type="ushort" TypeID="7" Size="2" GraphColorRed="255" GraphColorGreen="215" GraphColorBlue="0" YMinSampled="0" YMaxSampled="65493" YAvgSampled="34114" Offset="4" ShowInGraph="1" YOffset="200" IsAutoConfig="0" YResolution="20000" MaxValue="91800" File="..\User\Src\hall_sensor.c" Scope="0" DrawStyle="0" />
             </Symbol>
             <Symbol>
-                <Options Name="uwElecThetaPu" Address="0x20001DEC" Type="ushort" TypeID="7" Size="2" GraphColorRed="255" GraphColorGreen="0" GraphColorBlue="0" YMinSampled="2" YMaxSampled="32767" YAvgSampled="17532" Offset="6" ShowInGraph="0" YOffset="200" IsAutoConfig="1" YResolution="10000" MaxValue="45900" File="C:\Users\wangzy49\Desktop\ebike\obser\observer.c" Scope="0" DrawStyle="0" />
+                <Options Name="Angle_Ref" Address="0x2000002C" Type="uint" TypeID="8" Size="4" GraphColorRed="0" GraphColorGreen="191" GraphColorBlue="255" YMinSampled="0" YMaxSampled="16894603" YAvgSampled="27536" Offset="6" ShowInGraph="0" YOffset="200" IsAutoConfig="1" YResolution="705032704" MaxValue="1410065400" File="..\User\Src\MC_FOC_Driver.c" Scope="1" DrawStyle="0" />
             </Symbol>
             <Symbol>
-                <Options Name="uw_phase_a" Address="0x2000045C" Type="short" TypeID="11" Size="2" GraphColorRed="160" GraphColorGreen="32" GraphColorBlue="240" YMinSampled="32664" YMaxSampled="32664" YAvgSampled="32664" Offset="8" ShowInGraph="1" YOffset="200" IsAutoConfig="1" YResolution="20000" MaxValue="40000" File="..\Core\Src\adc.c" Scope="0" DrawStyle="0" />
+                <Options Name="SVM_Angle" Address="0x20000342" Type="ushort" TypeID="7" Size="2" GraphColorRed="0" GraphColorGreen="0" GraphColorBlue="176" YMinSampled="0" YMaxSampled="65504" YAvgSampled="32289" Offset="10" ShowInGraph="1" YOffset="200" IsAutoConfig="1" YResolution="20000" MaxValue="108600" File="..\User\Src\hall_sensor.c" Scope="0" DrawStyle="0" />
             </Symbol>
             <Symbol>
-                <Options Name="uw_phase_b" Address="0x2000045E" Type="short" TypeID="11" Size="2" GraphColorRed="255" GraphColorGreen="0" GraphColorBlue="0" YMinSampled="32545" YMaxSampled="32545" YAvgSampled="32545" Offset="10" ShowInGraph="1" YOffset="200" IsAutoConfig="1" YResolution="20000" MaxValue="40000" File="..\Core\Src\adc.c" Scope="0" DrawStyle="0" />
-            </Symbol>
-            <Symbol>
-                <Options Name="uw_phase_c" Address="0x20000460" Type="short" TypeID="11" Size="2" GraphColorRed="0" GraphColorGreen="191" GraphColorBlue="255" YMinSampled="-4508" YMaxSampled="32664" YAvgSampled="37" Offset="12" ShowInGraph="1" YOffset="200" IsAutoConfig="1" YResolution="20000" MaxValue="40000" File="..\Core\Src\adc.c" Scope="0" DrawStyle="0" />
-            </Symbol>
-            <Symbol>
-                <Options Name="Angle_Ref" Address="0x20000028" Type="uint" TypeID="8" Size="4" GraphColorRed="0" GraphColorGreen="191" GraphColorBlue="255" YMinSampled="0" YMaxSampled="2132869300" YAvgSampled="54140" Offset="14" ShowInGraph="1" YOffset="200" IsAutoConfig="1" YResolution="1000000000" MaxValue="295032704" File="..\User\Src\MC_FOC_Driver.c" Scope="1" DrawStyle="0" />
+                <Options Name="PeriodTest" Address="0x20000448" Type="ushort" TypeID="7" Size="2" GraphColorRed="160" GraphColorGreen="32" GraphColorBlue="240" YMinSampled="0" YMaxSampled="299" YAvgSampled="148" Offset="12" ShowInGraph="0" YOffset="200" IsAutoConfig="1" YResolution="5000" MaxValue="27150" File="..\User\Src\tim.c" Scope="1" DrawStyle="0" />
             </Symbol>
         </SelectedSymbols>
     </Project>

+ 2 - 2
MDK-ARM/QD007A_CTL_APP.uvprojx

@@ -146,7 +146,7 @@
             <UsePdscDebugDescription>1</UsePdscDebugDescription>
           </Target>
           <RunDebugAfterBuild>0</RunDebugAfterBuild>
-          <TargetSelection>12</TargetSelection>
+          <TargetSelection>6</TargetSelection>
           <SimDlls>
             <CpuDll></CpuDll>
             <CpuDllArguments></CpuDllArguments>
@@ -160,7 +160,7 @@
             <PeripheralDll></PeripheralDll>
             <PeripheralDllArguments></PeripheralDllArguments>
             <InitializationFile></InitializationFile>
-            <Driver>BIN\CMSIS_AGDI.dll</Driver>
+            <Driver>Segger\JL2CM3.dll</Driver>
           </TargetDlls>
         </DebugOption>
         <Utilities>

ファイルの差分が大きいため隠しています
+ 2380 - 2380
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 1 - 1
User/Inc/MC_FOC_Driver.h

@@ -10,7 +10,7 @@ extern int32_t UqVoltFlt;
 extern int32_t UdVoltFlt;
 extern uint8_t ShiftOBS_Flag;
 
-extern void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_Flag_Struct_t OBS_Flag);
+extern void FOC_Model(int16_t IqRef, int16_t IdRef, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_Flag_Struct_t OBS_Flag);
 extern void FOC_Enable(void);
 extern void FOC_Disable(void);
 #endif

+ 3 - 0
User/Inc/tim.h

@@ -49,6 +49,7 @@
 extern TIM_HandleTypeDef htim1;
 extern TIM_HandleTypeDef htim2;
 extern TIM_HandleTypeDef htim3; 
+extern TIM_HandleTypeDef htim4; 	 
 /* USER CODE BEGIN Private defines */
 #define PWM_TIMER				htim1
 #define PWM_FREQ        ((uint16_t)15000)
@@ -63,7 +64,9 @@ extern TIM_HandleTypeDef htim3;
 void MX_TIM1_Init(void);
 void MX_TIM2_Init(void);
 void MX_TIM3_Init(void);
+void MX_TIM4_Init(void);
 void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
+void TIM4_Update_Isr(void);
 /* USER CODE BEGIN Prototypes */
 
 /* USER CODE END Prototypes */

+ 13 - 7
User/Src/MC_FOC_Driver.c

@@ -20,7 +20,7 @@ int32_t UdVoltFlt = 0;
 uint8_t ShiftOBS_Flag = 0;
 
 //Õý³£µçÁ÷»·
-void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_Flag_Struct_t OBS_Flag)
+void FOC_Model(int16_t IqRef, int16_t IdRef, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_Flag_Struct_t OBS_Flag)
 {
 	int32_t UqVoltTmp;
 	int16_t UdVoltTmp;
@@ -83,12 +83,12 @@ void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_
 	
 	IdFdbFlt += (((int32_t)(Stat_Curr_q_d.qI_Component2 << 10)) - IdFdbFlt)>>10;   // KFlt = 2ms
 	IdFdb = IdFdbFlt >> 10;
-
+  
 	if((MC_HallSensorData.BackwardFlag==True)&&(MC_CalParam.AssistRunMode == MC_AssistRunMode_GAS))
 	{
 		if( ADC1_Result[ADC1_RANK_VIN] < 3000) //53853mV  17.951  3000
 		{
-			IqFluxLessRef = Ref;
+			IqFluxLessRef = IqRef;
 			if(IdFluxLessRef<(-4))
 			{
 				IdFluxLessRef += 4;
@@ -98,7 +98,7 @@ void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_
 		else if( ADC1_Result[ADC1_RANK_VIN] < 3210 ) //57622mV 3210
 		{
 			FOC_IqLim = 1050 - (ADC1_Result[ADC1_RANK_VIN] - 3000)*5;
-			IqFluxLessRef = Ref<FOC_IqLim ? Ref : FOC_IqLim;
+			IqFluxLessRef = IqRef<FOC_IqLim ? IqRef : FOC_IqLim;
 			IdFluxLessRef -= 2;
 			if(IdFluxLessRef<-420) IdFluxLessRef = -420;
 		}
@@ -112,7 +112,7 @@ void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_
 	{
 		if( ADC1_Result[ADC1_RANK_VIN] < 3100) //55648mV  17.951  3100
 		{
-			IqFluxLessRef = Ref;
+			IqFluxLessRef = IqRef;
 			if(IdFluxLessRef<(-4))
 			{
 				IdFluxLessRef += 4;
@@ -122,7 +122,7 @@ void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_
 		else if( ADC1_Result[ADC1_RANK_VIN] < 3310 ) //59417mV 3310
 		{
 			FOC_IqLim = 1050 - (ADC1_Result[ADC1_RANK_VIN] - 3100)*5;
-			IqFluxLessRef = Ref<FOC_IqLim ? Ref : FOC_IqLim;
+			IqFluxLessRef = IqRef<FOC_IqLim ? IqRef : FOC_IqLim;
 			IdFluxLessRef -= 2;
 			if(IdFluxLessRef<-420) IdFluxLessRef = -420;
 		}
@@ -131,7 +131,7 @@ void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_
 			IqFluxLessRef=0;
 			IdFluxLessRef = -420;		
 		}	
-	}
+	}	
 	
 	UqVoltTmp =  PID_Regulator(IqFluxLessRef,\
 														 IqFdb,\
@@ -154,6 +154,12 @@ void FOC_Model(int16_t Ref, int16_t MotorSpeed, uint16_t SVM_Angle, TrueOrFalse_
 	
 	UqVoltTmp = (UqVoltTmp > ((int32_t)MAX_MODULE)) ? MAX_MODULE : UqVoltTmp;
 	Stat_Volt_q_d.qV_Component1 = UqVoltTmp;
+	
+	if(IqRef == 0)
+	{
+	  Stat_Volt_q_d.qV_Component1 = 0;
+		IdFluxLessRef = IdRef;
+	}
 
 	UdVoltTmp = PID_Regulator(IdFluxLessRef,\
 														IdFdb,\

+ 1 - 1
User/Src/hall_sensor.c

@@ -32,7 +32,7 @@ uint8_t Hall_ReadState(void)
   uint8_t ReadValue;
   if(MC_HallSensorData.InverterExistFlag == True)  //´æÔÚ·´ÏàÆ÷
 	{
-		ReadValue  = (uint8_t)(HAL_GPIO_ReadPin(HALL_C_GPIO_Port, HALL_C_Pin));        //HALL C  
+		ReadValue  = (uint8_t)(HAL_GPIO_ReadPin(HALL_C_GPIO_Port, HALL_C_Pin));       //HALL C  
 		ReadValue |= (uint8_t)(HAL_GPIO_ReadPin(HALL_B_GPIO_Port, HALL_B_Pin)) << 1;  //HALL B
 		ReadValue |= (uint8_t)(HAL_GPIO_ReadPin(HALL_A_GPIO_Port, HALL_A_Pin)) << 2;  //HALL A   			
 	}

+ 103 - 13
User/Src/tim.c

@@ -51,6 +51,7 @@
 TIM_HandleTypeDef htim1;
 TIM_HandleTypeDef htim2;
 TIM_HandleTypeDef htim3;
+TIM_HandleTypeDef htim4;
 
 /* TIM1 init function */
 void MX_TIM1_Init(void)
@@ -213,6 +214,21 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
   
   /* USER CODE END TIM2_MspInit 1 */
   }
+	
+	else if(htim_base->Instance==TIM4)
+	{
+	/* USER CODE BEGIN TIM4_MspInit 0 */
+
+  /* USER CODE END TIM4_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_TIM4_CLK_ENABLE();
+    /* TIM4 interrupt Init */
+    HAL_NVIC_SetPriority(TIM4_IRQn, 2, 2);
+    HAL_NVIC_EnableIRQ(TIM4_IRQn);
+  /* USER CODE BEGIN TIM4_MspInit 1 */
+    
+  /* USER CODE END TIM4_MspInit 1 */
+	}
 }
 
 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
@@ -263,6 +279,22 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
 
   /* USER CODE END TIM2_MspDeInit 1 */
   }
+	
+	if(htim_base->Instance==TIM4)
+  {
+  /* USER CODE BEGIN TIM4_MspDeInit 0 */
+
+  /* USER CODE END TIM4_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_TIM4_CLK_DISABLE();
+
+    /* TIM4 interrupt DeInit */
+    HAL_NVIC_DisableIRQ(TIM4_IRQn);
+  /* USER CODE BEGIN TIM4_MspDeInit 1 */
+
+  /* USER CODE END TIM4_MspDeInit 1 */
+  }
+	
   /* USER CODE BEGIN TIM1_MspDeInit 1 */
 
   /* USER CODE END TIM1_MspDeInit 1 */
@@ -278,7 +310,7 @@ void MX_TIM3_Init(void)
   htim3.Instance = TIM3;
   htim3.Init.Prescaler = 0;
   htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim3.Init.Period = 1098 / MC_VirtualPosition.Fren - 1; //电角度频率f = 72MHz / (分频系数 + 1) / 65535
+  htim3.Init.Period = 71;
   htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
   htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
   if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
@@ -294,7 +326,7 @@ void MX_TIM3_Init(void)
   }
 
   sConfigOC.OCMode = TIM_OCMODE_PWM1;
-  sConfigOC.Pulse = (1098 / MC_VirtualPosition.Fren) >> 1;
+  sConfigOC.Pulse = 36;
   sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
   if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
@@ -317,9 +349,7 @@ void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
     /* TIM3 clock enable */
     __HAL_RCC_TIM3_CLK_ENABLE();
   /* USER CODE BEGIN TIM3_MspInit 1 */
-    HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
-    HAL_NVIC_EnableIRQ(TIM3_IRQn);
-		//__HAL_TIM_ENABLE_IT(&htim3, TIM_IT_UPDATE);
+
   /* USER CODE END TIM3_MspInit 1 */
   }
 }
@@ -366,17 +396,49 @@ void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle)
   }
 } 
 
+void MX_TIM4_Init(void)
+{
+  /* USER CODE BEGIN TIM4_Init 0 */
+
+  /* USER CODE END TIM4_Init 0 */
+
+  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
+  TIM_MasterConfigTypeDef sMasterConfig = {0};
+
+  /* USER CODE BEGIN TIM4_Init 1 */
+
+  /* USER CODE END TIM4_Init 1 */
+  htim4.Instance = TIM4;
+  htim4.Init.Prescaler = 0;
+  htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
+  htim4.Init.Period = 1098 / MC_VirtualPosition.Fren - 1; //电角度频率f = 72MHz / (分频系数 + 1) / 65535
+  htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+  htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
+  if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
+  if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN TIM4_Init 2 */
+
+  /* USER CODE END TIM4_Init 2 */
+}
 
 /* USER CODE BEGIN 1 */
 
 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 {
-  if(htim->Instance == htim3.Instance)
-	{
-	  if(MC_VirtualPosition.SVM_Angle++ >= 65535)
-			MC_VirtualPosition.SVM_Angle = 0;
-	}
-	else if(htim->Instance == htim1.Instance)
+  if(htim->Instance == TIM1)
 	{	
 		static uint8_t ADC_PreCnt = 0;
 		static TrueOrFalse_Flag_Struct_t IsPwmEnableFlag = False;
@@ -412,6 +474,13 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 			MC_HallSensorData.Delta_AngleSum += MC_HallSensorData.Delta_Angle;
 		}
 		
+		//虚拟角度更新
+		MC_VirtualPosition.SVM_Angle += 32;
+		if(MC_VirtualPosition.SVM_Angle >= 65535)
+		{
+			MC_VirtualPosition.SVM_Angle = 0;
+		}
+		
 		//计算电机转速
 		MC_RunInfo.MotorSpeed = MotorSpeedCal(MC_HallSensorData.SVM_Angle, MC_HallSensorData.IsStopFlag);
 		
@@ -450,12 +519,18 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 					{
 						case MC_AssistRunMode_TORQUE://力矩模式
 						{
-							FOC_Model(MC_CalParam.Ref_Torque, MC_RunInfo.MotorSpeed, MC_HallSensorData.SVM_Angle, False);
+							FOC_Model(MC_CalParam.Ref_Torque, 0, MC_RunInfo.MotorSpeed, MC_HallSensorData.SVM_Angle, False);
 							break;
 						}
 						case MC_AssistRunMode_WALK: case MC_AssistRunMode_CADENCE: case MC_AssistRunMode_GAS://速度模式
 						{
-							FOC_Model(MC_CalParam.Ref_Speed, MC_RunInfo.MotorSpeed, MC_HallSensorData.SVM_Angle, False);
+							#if 0 //正常速度环
+							FOC_Model(MC_CalParam.Ref_Speed, 0, MC_RunInfo.MotorSpeed, MC_HallSensorData.SVM_Angle, False);
+							#elif 1 //If拖动
+							FOC_Model(200, 0, MC_RunInfo.MotorSpeed, MC_VirtualPosition.SVM_Angle, False);							
+							#elif 1 //零度
+							FOC_Model(0, 200, MC_RunInfo.MotorSpeed, 0, False);							
+							#endif
 							break;
 						}
 						default:break;
@@ -473,6 +548,21 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 	}
 }
 
+void TIM4_Update_Isr(void)
+{
+  if(__HAL_TIM_GET_FLAG(&htim4, TIM_FLAG_UPDATE) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(&htim4, TIM_IT_UPDATE) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(&htim4, TIM_IT_UPDATE);
+			MC_VirtualPosition.SVM_Angle += 4;
+      if(MC_VirtualPosition.SVM_Angle >= 65535)
+			{
+				MC_VirtualPosition.SVM_Angle = 0;
+			}
+    }
+  }	
+}
 /* USER CODE END 1 */
 
 /**

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません