#include "led_app.h" #include "tasks.h" uint8_t walk_press_flag; uint32_t GetErrorCode(void) { uint32_t ErrorCodeTemp=0; if(MC_ErrorCode.ERROR_Bit.Protect_OverCurrent == 1) {ErrorCodeTemp=10; MC_ErrorCodeBackup.ERROR_Bit.Protect_OverCurrent = 1;} else if(MC_ErrorCode.ERROR_Bit.Protect_UnderVoltage == 1) {ErrorCodeTemp=11; MC_ErrorCodeBackup.ERROR_Bit.Protect_UnderVoltage = 1;} else if(MC_ErrorCode.ERROR_Bit.Protect_OverVoltage == 1) {ErrorCodeTemp=12; MC_ErrorCodeBackup.ERROR_Bit.Protect_OverVoltage = 1;} else if(MC_ErrorCode.ERROR_Bit.Protect_LockRotor == 1) {ErrorCodeTemp=13; MC_ErrorCodeBackup.ERROR_Bit.Protect_LockRotor = 1;} else if(MC_ErrorCode.ERROR_Bit.Protect_OverTemp == 1) {ErrorCodeTemp=14; MC_ErrorCodeBackup.ERROR_Bit.Protect_OverTemp = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_NtcSensor == 1) {ErrorCodeTemp=15; MC_ErrorCodeBackup.ERROR_Bit.Fault_NtcSensor = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_SpeedSensor == 1) {ErrorCodeTemp=16; MC_ErrorCodeBackup.ERROR_Bit.Fault_SpeedSensor = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_TorqueSensor == 1) {ErrorCodeTemp=17; MC_ErrorCodeBackup.ERROR_Bit.Fault_TorqueSensor = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_HallSensor == 1) {ErrorCodeTemp=18; MC_ErrorCodeBackup.ERROR_Bit.Fault_HallSensor = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_BMS_Check == 1) {ErrorCodeTemp=19; MC_ErrorCodeBackup.ERROR_Bit.Fault_BMS_Check = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_PBU_Check == 1) {ErrorCodeTemp=20; MC_ErrorCodeBackup.ERROR_Bit.Fault_PBU_Check = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_HMI_Check == 1) {ErrorCodeTemp=21; MC_ErrorCodeBackup.ERROR_Bit.Fault_HMI_Check = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_PhaseLine == 1) {ErrorCodeTemp=22; MC_ErrorCodeBackup.ERROR_Bit.Fault_PhaseLine = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_CadenceSensor == 1) {ErrorCodeTemp=23; MC_ErrorCodeBackup.ERROR_Bit.Fault_CadenceSensor = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_GasSensor == 1) {ErrorCodeTemp=24; MC_ErrorCodeBackup.ERROR_Bit.Fault_GasSensor = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_MOS == 1) {ErrorCodeTemp=25; MC_ErrorCodeBackup.ERROR_Bit.Fault_MOS = 1;} else if(MC_ErrorCode.ERROR_Bit.Protect_VoltageChange == 1) {ErrorCodeTemp=26; MC_ErrorCodeBackup.ERROR_Bit.Protect_VoltageChange = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_MCU == 1) {ErrorCodeTemp=27; MC_ErrorCodeBackup.ERROR_Bit.Fault_MCU = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_Circuit == 1) {ErrorCodeTemp=28; MC_ErrorCodeBackup.ERROR_Bit.Fault_Circuit = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_TE_MCU == 1) {ErrorCodeTemp=29; MC_ErrorCodeBackup.ERROR_Bit.Fault_TE_MCU = 1;} else if(MC_ErrorCode.ERROR_Bit.Fault_TE_Circuit == 1) {ErrorCodeTemp=30; MC_ErrorCodeBackup.ERROR_Bit.Fault_TE_Circuit = 1;} else if(PBU_ErrorCode.ERROR_Bit.Key_Add == 1) {ErrorCodeTemp=60; PBU_ErrorCodeBackup.ERROR_Bit.Key_Add = 1;} else if(PBU_ErrorCode.ERROR_Bit.Key_Dec == 1) {ErrorCodeTemp=61; PBU_ErrorCodeBackup.ERROR_Bit.Key_Dec = 1;} else if(PBU_ErrorCode.ERROR_Bit.Key_Set == 1) {ErrorCodeTemp=62; PBU_ErrorCodeBackup.ERROR_Bit.Key_Set = 1;} else if(PBU_ErrorCode.ERROR_Bit.Key_Light == 1) {ErrorCodeTemp=63; PBU_ErrorCodeBackup.ERROR_Bit.Key_Light = 1;} else if(PBU_ErrorCode.ERROR_Bit.Key_Walk == 1) {ErrorCodeTemp=64; PBU_ErrorCodeBackup.ERROR_Bit.Key_Walk = 1;} else if(PBU_ErrorCode.ERROR_Bit.Key_Power == 1) {ErrorCodeTemp=65; PBU_ErrorCodeBackup.ERROR_Bit.Key_Power = 1;} else if(PBU_ErrorCode.ERROR_Bit.MCU_Fault == 1) {ErrorCodeTemp=66; PBU_ErrorCodeBackup.ERROR_Bit.MCU_Fault = 1;} else if(PBU_ErrorCode.ERROR_Bit.MOS_Fault == 1) {ErrorCodeTemp=67; PBU_ErrorCodeBackup.ERROR_Bit.MOS_Fault = 1;} else if(PBU_ErrorCode.ERROR_Bit.Hardware_Fault == 1) {ErrorCodeTemp=68; PBU_ErrorCodeBackup.ERROR_Bit.Hardware_Fault = 1;} else if(PBU_ErrorCode.ERROR_Bit.Communication_HMI_Fault == 1) {ErrorCodeTemp=69; PBU_ErrorCodeBackup.ERROR_Bit.Communication_HMI_Fault = 1;} else if(PBU_ErrorCode.ERROR_Bit.Communication_MC_Fault == 1) {ErrorCodeTemp=70; PBU_ErrorCodeBackup.ERROR_Bit.Communication_MC_Fault = 1;} else ErrorCodeTemp=77; return ErrorCodeTemp; } void ErrorCode_LEDDisplay( uint32_t ErrorCodeTemp ) //500ms { switch(ErrorCodeTemp) { case 10: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); break; case 11: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 12: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); break; case 13: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 14: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); break; case 15: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 16: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); break; case 17: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 18: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); break; case 19: HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 20: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); break; case 21: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 22: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); break; case 23: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 24: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); break; case 25: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 26: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); break; case 27: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 28: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); break; case 29: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 30: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); break; case 33: HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; // case 40: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // break; // case 41: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); // break; // case 42: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); // break; // case 43: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); // HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); // break; // case 44: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); // break; // case 45: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); // HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); // break; // case 46: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); // HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); // break; // case 47: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); // HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); // HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); // break; case 48: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); break; // case 49: // HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); // // HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); // HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); // break; case 60: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); break; case 61: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 62: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); break; case 63: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 64: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); break; case 65: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 66: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); break; case 67: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(SPORT_GPIO_Port, SPORT_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 68: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); break; case 69: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(NORM_GPIO_Port, NORM_Pin); HAL_GPIO_TogglePin(SMART_GPIO_Port, SMART_Pin); break; case 70: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); break; case 72: HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); HAL_GPIO_TogglePin(OFF_GPIO_Port, OFF_Pin); HAL_GPIO_TogglePin(ECO_GPIO_Port, ECO_Pin); HAL_GPIO_TogglePin(TURBO_GPIO_Port, TURBO_Pin); break; default: break; } } void Led_Process(void) { static uint32_t Delay1TimeCnt = 0; static uint8_t Flag1 = 0, ErrorFirstFlag=0; static uint32_t Error_TimeCnt =0; if((PBU_hardwareErrorCode.Code!=0) || (PBU_commErrorCode.Code!=0) || (MC_ErrorCode.Code!=0)) { if(ErrorFirstFlag == 0) //获取第一个故障码,故障码指示灯清零 { ErrorFirstFlag = 1; ErrorCodeFinal = GetErrorCode(); Error_TimeCnt = SysTime_5ms; LED_INIT(); } if( MC_ErrorCodeBackup.Code != 0) //第一个故障是否恢复 { if( (MC_ErrorCodeBackup.Code&&MC_ErrorCode.Code) == 0) {ErrorFirstFlag = 0; MC_ErrorCodeBackup.Code = 0;} } else { if( (PBU_ErrorCodeBackup.Code&&PBU_ErrorCode.Code) == 0) {ErrorFirstFlag = 0; PBU_ErrorCodeBackup.Code = 0;} } if(TimeCntDiff_5ms(Error_TimeCnt) >= 100) //根据故障码显示故障 { Error_TimeCnt = SysTime_5ms; ErrorCode_LEDDisplay(ErrorCodeFinal); } } else { ErrorFirstFlag=0; if( BMS_ChargingFlag == TRUE ) { LED_INIT(); } else if(PBU_AssitMode_Status.PBU_AssistMode_Flag == PBU_AssistMode_Flag_WalkSby) { LED_INIT_GearSt(); if(Flag1 == 0) { Delay1TimeCnt = SysTime_5ms; HAL_GPIO_WritePin(WALK_GPIO_Port, WALK_Pin, GPIO_PIN_SET); Flag1 = 1; } if(TimeCntDiff_5ms(Delay1TimeCnt) >= 100) { HAL_GPIO_TogglePin(WALK_GPIO_Port, WALK_Pin); Delay1TimeCnt = SysTime_5ms; } } else { Flag1 = 0; if(PBU_RunMode!=PBU_RunMode_PowerOff) { switch(ControlCode.GearSt) { case 0x00: LED_INIT(); HAL_GPIO_WritePin(OFF_GPIO_Port, OFF_Pin, GPIO_PIN_RESET); break; case 0x01: LED_INIT(); HAL_GPIO_WritePin(ECO_GPIO_Port, ECO_Pin, GPIO_PIN_RESET); break; case 0x02: LED_INIT(); HAL_GPIO_WritePin(NORM_GPIO_Port, NORM_Pin, GPIO_PIN_RESET); break; case 0x03: LED_INIT(); HAL_GPIO_WritePin(SPORT_GPIO_Port, SPORT_Pin, GPIO_PIN_RESET); break; case 0x04: LED_INIT(); HAL_GPIO_WritePin(TURBO_GPIO_Port, TURBO_Pin, GPIO_PIN_RESET); break; case 0x22: LED_INIT(); HAL_GPIO_WritePin(WALK_GPIO_Port, WALK_Pin, GPIO_PIN_RESET); break; case 0x33: LED_INIT(); HAL_GPIO_WritePin(SMART_GPIO_Port, SMART_Pin, GPIO_PIN_RESET); break; default: break; } } } } }