|
本帖最后由 TLLED 于 2018-9-1 22:40 编辑 : U; ~2 e! V& h7 [' Q 实验4:基于MCSDK5.0 状态的切换。) R7 U/ M [/ R' t i 一、实验内容要求如下:
二、实验代码修改: 修改main.c代码,修改的部分如下(红色字体) M4 b% w( f8 P$ U int main(void)4 k( v7 ^) d3 J5 h/ C' U {( Y' J( U+ J/ w% Q. T /* USER CODE BEGIN 1 */+ m# m1 S! {4 W3 _/ T( u# h" A State_t ste; //定义变量 /* USER CODE END 1 */ ) W* p3 t7 ~" O+ U /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init();0 u% [2 h' \! \- c3 Y2 }1 G /* USER CODE BEGIN Init */ /* USER CODE END Init */3 W" G( M r, Z - V8 z. ]8 l5 h( u /* Configure the system clock */" E# R4 A1 U2 U X( {9 k) u6 W _( G, R SystemClock_Config();$ h( P6 y5 i6 u H6 | 9 E3 E# i) s( V /* USER CODE BEGIN SysInit */$ n/ j9 ?1 [2 w7 a* f8 L /* USER CODE END SysInit */ K6 @2 h' Z6 S5 K* I9 {8 w' M9 u /* Initialize all configured peripherals */ E1 d8 _$ J) i$ W7 U6 Y8 I% ~ MX_GPIO_Init(); MX_ADC1_Init(); MX_DAC_Init();4 K% E# g# I9 K MX_TIM1_Init();5 M: m4 M3 H& C- S( n6 G MX_USART2_UART_Init(); MX_MotorControl_Init(); * {: q; y' e* f' y- D2 Q /* Initialize interrupts */ MX_NVIC_Init();' X) I, d( Z: ], W$ g- M1 f /* USER CODE BEGIN 2 */. \( ^% [2 f9 t: ? i, a MC_StartMotor1(); //启动电机/ M6 }: n( C0 y8 c HAL_Delay(1000); MC_ProgramSpeedRampMotor1(3000/6,1000); //正转3000转 HAL_Delay(10000); //延时10s) T. v/ Y- F, m* ?# [4 Q. B MC_ProgramSpeedRampMotor1(-3000/6,1000); //反转3000转" ]: I* s2 c- w HAL_Delay(2000); 0 D# H% l) c, P9 \2 v /* USER CODE END 2 */ ' \# S" D0 w( ~8 y# o- D /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) {2 a! T) z+ }- O2 w. k ste=MC_GetSTMStateMotor1(); //获取电机任务状态+ k* _) ]! j6 t6 i6 }) i if(ste==FAULT_OVER) //电机报错 { MC_AcknowledgeFaultMotor1(); //清除故障5 M& k# `) `) G3 r" @$ ~6 n, B8 v }' ]) S9 q7 m7 M else if(ste == IDLE) //恢复故障后,电机负3000转运行$ G# \) y# u8 e. o) t+ F/ {$ W { MC_StartMotor1(); MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);2 C: P( Z3 m: s+ b+ k/ [# I# k }: B7 u3 z' @! @2 D* F' [ + E# S6 V6 w! J: H C /* USER CODE END WHILE */7 T% a4 | \5 Y! j7 h$ Y; }. y1 X / E0 J6 F& s$ I7 j! L /* USER CODE BEGIN 3 */ //State t sts_motor1 = MCI_GetSTMStateMotor1(); //STM_GetFaultState(&STM[M1]); : |2 R1 L$ c8 `& e* m } /* USER CODE END 3 */ 7 }. O2 M$ K- j2 ] M } 4 P3 v6 t4 b+ V( e+ j: t8 r; C 三、执行结果:
: {5 _; S" x" x1 x j! z$ _' O . @# D! \1 r( O, W/ B" U: m) L + ?7 |4 q9 r, a; a2 ]' n |
微信公众号
手机版
可以顺利切换,从3000到-3000...