各位,
我最近设计了一个用STM32G474来驱动4个直流有刷电机的板子,板子能够驱动电机,但是,驱动电机正反转之后,在比较近的时间里再驱动电机,会导致单片机重启。
我的代码是这样写的:
LED_Green_on(); // Turn on green LED to indicate system is running
HAL_Delay(1000);
LED_Green_off(); // Turn off green LED
HAL_Delay(1000);
// DC motor 测试
DcMotor_setSpeed(&dcmotorHandle1, 150); // Set left motor speed to 150
DcMotor_setSpeed(&dcmotorHandle2, 150); // Set right motor speed to 150
DcMotor_run(&dcmotorHandle1, FORWARD); // Run left motor forward
DcMotor_run(&dcmotorHandle2, FORWARD); // Run right motor backward
HAL_Delay(5000); // Run for 5 seconds
DcMotor_run(&dcmotorHandle1, RELEASE); // Release left motor
DcMotor_run(&dcmotorHandle2, RELEASE); // Release right motor
HAL_Delay(5000); // Wait for 1 second
DcMotor_run(&dcmotorHandle1, BACKWARD); // Run left motor backward
DcMotor_run(&dcmotorHandle2, BACKWARD); // Run right motor backward
HAL_Delay(5000); // Run for 5 seconds
DcMotor_run(&dcmotorHandle1, RELEASE); // Release left motor
DcMotor_run(&dcmotorHandle2, RELEASE); // Release right motor
HAL_Delay(5000); // Wait for 5 seconds
HAL_Delay(10000); // Wait for 10 second
DcMotor_setSpeed(&dcmotorHandle1, 100); // Set left motor speed to 100
DcMotor_setSpeed(&dcmotorHandle2, 100); // Set right motor speed to 100
DcMotor_run(&dcmotorHandle1, BACKWARD); // Run left motor forward
DcMotor_run(&dcmotorHandle2, BACKWARD); // Run right motor backward
HAL_Delay(5000); // Run for 5 seconds
DcMotor_run(&dcmotorHandle1, RELEASE); // Release left motor
DcMotor_run(&dcmotorHandle2, RELEASE); // Release right motor
HAL_Delay(5000); // Wait for 1 second
DcMotor_run(&dcmotorHandle1, FORWARD); // Run left motor backward
DcMotor_run(&dcmotorHandle2, FORWARD); // Run right motor backward
HAL_Delay(5000); // Run for 5 seconds
DcMotor_run(&dcmotorHandle1, RELEASE); // Release left motor
DcMotor_run(&dcmotorHandle2, RELEASE); // Release right motor
HAL_Delay(5000); // Wait for 5 seconds
先设2个电机的速度是150,正转5s,停5s,反转5s,停5s, 这是写在while(1)大循环里面的,如果这时就这样的话,大循环可以一直这样电机正转反转。
我想改变一下速度看看,我就将速度改成100, 反转5s,停5s,正转5s,停5s。 中间停止了10s, 中间停止10s的过程,电机已经停止5s了。在这停止10s的过程中,单片机会复位。
我用示波器看了T_NRST的波形,确实会出现一个电压忽然跌到0的跳变,不知道为什么?

请各位帮我看看,为什么会出现这个问题呢?我应该怎么解决?
谢谢!