Parcourir la source

车灯工作模式更改:模式3-仅刹车时高亮,模式4-仅刹车时闪烁;BUG修改,接收指令关机时刷新关机时间由接收指令时刷新更改为进入POWER_OFF模式后刷新,避免重复接收指令而导致关机失败。

Ye Jin il y a 1 an
Parent
commit
4c29a0933a

+ 25 - 10
User project/3.BasicFunction/Source/bikelight.c

@@ -308,29 +308,44 @@ void bikelight_voBikeLightControl(UWORD switchAction, BOOL Brate_Sta,UWORD uwLig
         }
         case Three_byte:
         {
-            if(switchAction==1)
+            if(Brate_Sta==TRUE) //刹车
               {
-                //IO_BACKLED_ON();
-                BikeLedGloFun.blBike_BackLedSta=TRUE;
+                 // IO_BACKLED_ON();
+                  BikeLedGloFun.blBike_BackLedSta=TRUE;
               }
-              else
-              {
+            else
+            {
                // IO_BACKLED_OFF();
                 BikeLedGloFun.blBike_BackLedSta=FALSE;
-              }
+            }
               break;
         }
         case four_byte:
         {
             if(Brate_Sta==TRUE) //刹车
-              {
-                 // IO_BACKLED_ON();
-                  BikeLedGloFun.blBike_BackLedSta=TRUE;
-              }
+           {
+              // IO_BACKLED_ON();
+             BikeLedPara.uwLedAddcnt++;
+             if(BikeLedPara.uwLedAddcnt > BikeLedFlickerCycle)
+             {
+                 BikeLedPara.uwLedAddcnt=0;
+             }
+             if(BikeLedPara.uwLedAddcnt<BikeLedFlickerDuty)
+             {
+                // IO_BACKLED_ON();
+                 BikeLedGloFun.blBike_BackLedSta=TRUE;
+             }
+             else
+             {
+                // IO_BACKLED_OFF();
+                 BikeLedGloFun.blBike_BackLedSta=FALSE;
+             }
+           }
             else
             {
                // IO_BACKLED_OFF();
                 BikeLedGloFun.blBike_BackLedSta=FALSE;
+                BikeLedPara.uwLedAddcnt=0;
             }
               break;
         }

+ 0 - 4
User project/3.BasicFunction/Source/can.c

@@ -402,7 +402,6 @@ void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]) /* parasoft-supp
             //电池关闭电源前控制器存储数据
             power_stPowStateOut.powerstate = POWER_OFF;
             power_stPowStateOut.blPowerStartupFlg = FALSE;
-            PowerOffDTimeOut = cp_ulSystickCnt;
             //发送关机就绪信号
             SendData(ID_MC_BC, MODE_REPORT, 0x1305, (UBYTE *)"READY");
             break;
@@ -423,7 +422,6 @@ void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]) /* parasoft-supp
             //仪表关闭电源前控制器存储数据
             power_stPowStateOut.powerstate = POWER_OFF;
             power_stPowStateOut.blPowerStartupFlg = FALSE;
-            PowerOffDTimeOut = cp_ulSystickCnt;
             //发送关机就绪信号
             SendData(ID_MC_BC, MODE_REPORT, 0x1305, (UBYTE *)"READY");
             break;
@@ -663,7 +661,6 @@ void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]) /* parasoft-supp
                 //执行关机,需硬件重启
                 power_stPowStateOut.powerstate = POWER_OFF;
                 power_stPowStateOut.blPowerStartupFlg = FALSE;
-                PowerOffDTimeOut = cp_ulSystickCnt;
                 SendData(ID_MC_TO_CDL, MODE_REPORT, 0xA903, (uint8_t *)"ACK");
             }
             else if (strncmp("RESET", (char *)Data, DataLength) == 0)
@@ -671,7 +668,6 @@ void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]) /* parasoft-supp
                 //执行复位,跳转进入Bootloader
                 power_stPowStateOut.powerstate = POWER_RESET;
                 power_stPowStateOut.blPowerStartupFlg = FALSE;
-                PowerOffDTimeOut = cp_ulSystickCnt;
                 SendData(ID_MC_TO_CDL, MODE_REPORT, 0xA903, (uint8_t *)"ACK");
             }
             break;

+ 5 - 3
User project/3.BasicFunction/Source/power.c

@@ -113,7 +113,6 @@ void power_voPowerManagement(UWORD uwPowerPara, ULONG SysTickCnt, ULONG OBC_Butt
                 {
                     power_stPowStateOut.powerstate = POWER_OFF;
                     power_stPowStateOut.blPowerStartupFlg = FALSE;
-                    PowerOffDTimeOut = SysTickCnt;
                     //Send power off command
                     SendData(ID_MC_BC, MODE_REPORT, 0x1808, (uint8_t *)"SHUTDOWN");
                 }
@@ -135,7 +134,6 @@ void power_voPowerManagement(UWORD uwPowerPara, ULONG SysTickCnt, ULONG OBC_Butt
                 {
                     power_stPowStateOut.powerstate = POWER_OFF; 
                     power_stPowStateOut.blPowerStartupFlg = FALSE;
-                    PowerOffDTimeOut = SysTickCnt;
                     //Send power off command
                     SendData(ID_MC_BC, MODE_REPORT, 0x1808, (uint8_t *)"SHUTDOWN");
                 }
@@ -147,7 +145,11 @@ void power_voPowerManagement(UWORD uwPowerPara, ULONG SysTickCnt, ULONG OBC_Butt
             break;
         }  
         case POWER_OFF: // 关机处理,等待数据存储完成,关闭LOCK
-        { 
+        {
+            if(0 == PowerOffDTimeOut)
+            {
+                PowerOffDTimeOut = SysTickCnt;
+            }
             //Finish save and wait 1s, or delay for 3s
             if (((EESaveFinishFlg == TRUE) && (ParaSaveEEFlg == FALSE) && ((SysTickCnt - PowerOffDTimeOut) > 1000)) || 
                 ((SysTickCnt - PowerOffDTimeOut) > 3000))