소스 검색

2.3.0.17 优化睡眠进行时阻塞问题

CHENJIE-PC\QiXiang_CHENJIE 3 년 전
부모
커밋
47b887468f
5개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 0
      inc/Signal.h
  2. 1 1
      inc/app.h
  3. 4 1
      src/MainTask.c
  4. 1 0
      src/Signal.c
  5. 2 0
      src/bsp_custom.c

+ 1 - 0
inc/Signal.h

@@ -32,6 +32,7 @@ extern  UINT8   RelayControlState;
 extern  UINT8	BuzzerControl;
 extern  UINT8   CanMsgFlag;
 extern  UINT8	VibrationStatus;
+extern  UINT8   RxInterprut;
 //declear the UINT16 vars
 extern	UINT16	battCellU[28];
 extern	UINT16	minCellVol;

+ 1 - 1
inc/app.h

@@ -51,7 +51,7 @@ extern "C" {
 #define	BLSWVERSION		0x01020000    //BootLoader版本号V1.2.0.0
 #define	DRVSWVERSION		0x01050000     //驱动层版本号V1.4.0.0  驱动层1.5.0.0,增加了三轴
 //#define	APPSWVERSION		0x01020209     
-#define	APPSWVERSION		0x02030010
+#define	APPSWVERSION		0x02030011
 //#define	APPSWVERSION		0x0201000E
 //--------------------------------------------------------------------------------
 

+ 4 - 1
src/MainTask.c

@@ -42,6 +42,8 @@ UINT32 Timer_count;//每100ms加1
 volatile BOOL Sleep_flag = false;//睡眠标志位
 extern UINT32 TcpService;
 extern UINT8 BattChrgEndFlag;
+extern UINT8 Aoi1Event;
+extern UINT8 Aoi2Event;
 AppConfigHeader   AppConfigHr;   //4 bytes
 AppNVMDataType AppNVMData;
 AppDataHeader AppDataHr;
@@ -304,6 +306,7 @@ static void MainTask(void* arg)
                 #endif
                 slpManDeepSlpTimerStart(deepslpTimerID, AppNVMData.sleepTime*1000*60);
                 UINT8 sleeptime_count=0;
+                RxInterprut = 0;
                 while(1)
                 {
                     if(!slpManDeepSlpTimerIsRunning(deepslpTimerID))
@@ -314,7 +317,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||RxInterprut==1||Aoi1Event==1||Aoi2Event==1)
                     {
                         #ifdef DEBUGLOG
                             Debug_printf("405\n");

+ 1 - 0
src/Signal.c

@@ -63,6 +63,7 @@ UINT8   RelayControlState = 0x00;
 UINT8	BuzzerControl = 0x00;
 UINT8   CanMsgFlag = 0x00;
 UINT8	VibrationStatus = 0x00;
+UINT8   RxInterprut = 0x00;
 //declear the UINT16 vars
 UINT16	battCellU[28] = {0xFFFF};
 UINT16	minCellVol = 0xFFFF;

+ 2 - 0
src/bsp_custom.c

@@ -14,6 +14,7 @@
 #include "plat_config.h"
 #include "debug_log.h"
 #include "os_exception.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
@@ -268,6 +269,7 @@ void Pad1_WakeupIntHandler(void)
 {
     if(slpManExtIntPreProcess(PadWakeup1_IRQn)==false)
         return;
+    RxInterprut = 1;
 }
 
 void Pad2_WakeupIntHandler(void)