浏览代码

版本号:2.1.0.18,修复了睡眠等待时Rx无法唤醒的bug

CHENJIE-PC\QiXiang_CHENJIE 3 年之前
父节点
当前提交
0a26c9ce73
共有 5 个文件被更改,包括 14 次插入6 次删除
  1. 1 1
      inc/Signal.h
  2. 1 1
      inc/app.h
  3. 3 2
      src/MainTask.c
  4. 1 1
      src/Signal.c
  5. 8 1
      src/bsp_custom.c

+ 1 - 1
inc/Signal.h

@@ -29,7 +29,7 @@ extern	UINT8	reservedSignal6;
 extern	UINT8	reservedSignal7;
 extern	UINT8	reservedSignal8;
 extern  UINT8	CanMsgFlag;
-
+extern  UINT8   RxFlag;
 
 
 //declear the UINT16 vars

+ 1 - 1
inc/app.h

@@ -52,7 +52,7 @@ extern "C" {
 #define	DRVSWVERSION		0x01050000     //驱动层版本号V1.4.0.0  驱动层1.5.0.0,增加了三轴
 //#define	APPSWVERSION		0x01020209     
 //#define	APPSWVERSION		0x02000103
-#define	APPSWVERSION		0x02010011
+#define	APPSWVERSION		0x02010012
 //--------------------------------------------------------------------------------
 
 #define APP_CONFIG_FILE_LATEST_VERSION 0

+ 3 - 2
src/MainTask.c

@@ -204,7 +204,6 @@ static void MainTask(void* arg)
                     osDelay(1000);
                     EC_SystemReset();
                 }
-                WDT_Kick();//喂狗
                 osDelay(1000);
                 if(Work_timer_end)
                 {
@@ -303,6 +302,8 @@ static void MainTask(void* arg)
                 #endif
                 slpManDeepSlpTimerStart(deepslpTimerID, AppNVMData.sleepTime*1000*60);
                 UINT8 sleeptime_count=0;
+                RxFlag=0;
+                NVIC_EnableIRQ(PadWakeup1_IRQn);
                 while(1)
                 {
                     if(!slpManDeepSlpTimerIsRunning(deepslpTimerID))
@@ -313,7 +314,7 @@ static void MainTask(void* arg)
                     #ifdef USING_PRINTF
                         printf("sleeptime_count :%d \n",sleeptime_count);
                     #endif
-                    if(sleeptime_count>10)
+                    if(sleeptime_count>10 ||RxFlag==1)
                     {
                         #ifdef DEBUGLOG
                             Debug_printf("405\n");

+ 1 - 1
src/Signal.c

@@ -69,7 +69,7 @@ UINT16	battPackVol = 0xFFFF;
 UINT16	battI = 0xFFFF;
 UINT16	nbHwVersion = 0xFFFF;
 UINT8	CanMsgFlag = 0x00;
-
+UINT8   RxFlag = 0;
 UINT8 Lockstatus = 0;
 UINT8 Error_count=0;
 

+ 8 - 1
src/bsp_custom.c

@@ -14,6 +14,7 @@
 #include "plat_config.h"
 #include "os_exception.h"
 #include "debug_log.h"
+#include "Signal.h"
 #if (WDT_FEATURE_ENABLE==1)
 #include "wdt_ec616.h"
 #define WDT_TIMEOUT_VALUE     (20)            // in unit of second, shall be less than 256s
@@ -221,7 +222,7 @@ void BSP_CustomInit(void)
 
 	PMU_WakeupPadInit();
 	NVIC_EnableIRQ(PadWakeup0_IRQn);//can
-	NVIC_EnableIRQ(PadWakeup1_IRQn);//rx
+	NVIC_DisableIRQ(PadWakeup1_IRQn);//rx
 	NVIC_EnableIRQ(PadWakeup2_IRQn);//lock
 	NVIC_EnableIRQ(PadWakeup3_IRQn);//gsensor
 	NVIC_EnableIRQ(PadWakeup4_IRQn);//gsensor
@@ -265,7 +266,13 @@ void Pad0_WakeupIntHandler(void)
 void Pad1_WakeupIntHandler(void)
 {
     if(slpManExtIntPreProcess(PadWakeup1_IRQn)==false)
+    {
         return;
+    }
+    else
+    {
+        RxFlag = 1;
+    }
 }
 
 void Pad2_WakeupIntHandler(void)