今天在编写Stm32 Ardunio控制L6203时发现的引脚信号输出导致STM32死机。
ARDUNIO 引脚定义如下
#define Speeker_Out PB15 //蜂鸣器信号输出数字引脚38
#define DCREALY_ON PB14 //输出信号继电器低电平打开 高电平时断开继电器
#define DCMotorer_EN PA7 //L6203-PIN(11) ENABLE 高电平有效
#define L6203_IN1 PB0 //L6203-PIN(5) IN1
#define L6203_IN2 PA6 //L6203-PIN(7) IN2
#define BOARD_LED_PIN PC13 //定义板载LED(呼吸灯,运行中信号)为数字引脚
实际编写时将引脚的输出信号类型搞错了
void Stop_DC_Motor() { //停止直流马达
analogWrite(L6203_IN1, 0);
analogWrite(L6203_IN2, 0);
analogWrite(DCMotorer_EN, LOW);
delay(500);
digitalWrite(DCREALY_ON, HIGH); //高电平时中断对电机的能量供应
digitalWrite(Speeker_Out, HIGH);
delay(200);
digitalWrite(Speeker_Out, LOW);
}
只要执行停止马达信号输出刚开始没什么问题,但多执行几次就死机了。检查了大约2个小时才发现本该是digitalWrite(DCMotorer_EN, LOW);写错了。
虽然问题找到,但没有深入了解为什么有时确能正确执行。