Bläddra i källkod

整理motor.c

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 år sedan
förälder
incheckning
c240c7b5be
1 ändrade filer med 20 tillägg och 18 borttagningar
  1. 20 18
      Applications/foc/motor/motor.c

+ 20 - 18
Applications/foc/motor/motor.c

@@ -22,8 +22,8 @@
 #include "foc/limit.h"
 
 static bool mc_is_hwbrake(void);
-static void _pwm_brake_timer_handler(shark_timer_t *);
-static shark_timer_t _brake_timer = TIMER_INIT(_brake_timer, _pwm_brake_timer_handler);
+static void _pwm_brake_prot_timer_handler(shark_timer_t *);
+static shark_timer_t _brake_prot_timer = TIMER_INIT(_brake_prot_timer, _pwm_brake_prot_timer_handler);
 
 
 static motor_t motor = {
@@ -60,6 +60,17 @@ static u32 _self_check_task(void *p) {
 	return 0;
 }
 
+static void _mc_internal_init(u8 mode, bool start) {
+	motor.mode = mode;
+	motor.throttle = 0;
+	motor.b_start = start;
+	motor.b_runStall = false;
+	motor.runStall_time = 0;
+	motor.b_epm = false;
+	motor.b_epm_cmd_move = false;
+	motor.epm_dir = EPM_Dir_None;
+	motor.n_autohold_time = 0;
+}
 void mc_init(void) {
 	adc_init();
 	pwm_3phase_init();
@@ -115,7 +126,9 @@ bool mc_start(u8 mode) {
 		return false;
 	}
 	pwm_up_enable(false);
-	motor.mode = mode;
+
+	_mc_internal_init(mode, true);
+
 	eCtrl_init(CONFIG_ACC_TIME, CONFIG_DEC_TIME);
 	motor_encoder_start(motor.s_direction);
 	PMSM_FOC_Start(mode);
@@ -126,14 +139,6 @@ bool mc_start(u8 mode) {
 	adc_start_convert();
 	phase_current_calibrate_wait();
 
-	motor.throttle = 0;
-	motor.b_start = true;
-	motor.b_runStall = false;
-	motor.runStall_time = 0;
-	motor.b_epm = false;
-	motor.b_epm_cmd_move = false;
-	motor.epm_dir = EPM_Dir_None;
-	motor.n_autohold_time = 0;
 	if (phase_curr_offset_check()) {
 		PMSM_FOC_SetCriticalError(FOC_CRIT_CURR_OFF_Err);
 		mc_stop();
@@ -167,15 +172,12 @@ bool mc_stop(void) {
 		sys_debug("throttle error\n");
 		return false;
 	}
-	motor.mode = CTRL_MODE_OPEN;
+	_mc_internal_init(CTRL_MODE_OPEN, false);
 	adc_stop_convert();
 	pwm_stop();
 	PMSM_FOC_Stop();
 	pwm_up_enable(true);
-	motor.b_start = false;
-	motor.b_epm = false;
-	motor.epm_dir = EPM_Dir_None;
-	gpio_led2_enable(false);
+	
 	return true;
 }
 
@@ -502,13 +504,13 @@ void MC_Brake_IRQHandler(void) {
 	sys_debug("brake %d\n", motor.b_break);
 }
 
-static void _pwm_brake_timer_handler(shark_timer_t *t){
+static void _pwm_brake_prot_timer_handler(shark_timer_t *t){
 	pwm_brake_enable(true);
 }
 
 void MC_Protect_IRQHandler(void){
 	pwm_brake_enable(false);
-	shark_timer_post(&_brake_timer, 1000);
+	shark_timer_post(&_brake_prot_timer, 1000);
 	if (!motor.b_start) {
 		return;
 	}