123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- #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;
- }
- }
- }
- }
- }
|