Sfoglia il codice sorgente

增加了bitmap投票显示,uart数据校验不过改为0,取消了其余线程的睡眠投票,ps注册函数初始化改到tcptask里面

CHENJIE-PC\QiXiang_CHENJIE 4 anni fa
parent
commit
85e7951e63
1 ha cambiato i file con 32 aggiunte e 16 eliminazioni
  1. 32 16
      src/app.c

+ 32 - 16
src/app.c

@@ -179,6 +179,8 @@ static void Main_Task(void* arg)
     NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
     NetSocDisplay(LED_SOC_3,LED_TURN_OFF);
     FaultDisplay(LED_TURN_OFF);
+    uint32_t bitmap;
+    uint32_t mask;
     NVIC_EnableIRQ(PadWakeup1_IRQn);
     slpManSetPmuSleepMode(true,SLP_HIB_STATE,false);
     slpManApplyPlatVoteHandle("MainSlp",&MainSlpHandler);
@@ -289,11 +291,15 @@ static void Main_Task(void* arg)
                     printf("Main_Sleep\n");
                 #endif
                 FaultDisplay(LED_TURN_ON);
-                slpManDeepSlpTimerStart(deepslpTimerID,300000); 
+                slpManGetDrvBitmap(&bitmap,&mask);
+                #ifdef USING_PRINTF
+                    printf("which bitmap can go check :%x,%x \n",bitmap,mask);
+                #endif
                 slpManSlpState_t slpstate = slpManPlatGetSlpState();
                 #ifdef USING_PRINTF
                     printf("which slpstate can go now :%d \n",slpstate);
                 #endif
+                slpManDeepSlpTimerStart(deepslpTimerID,300000); 
                 while(1)
                 {
                     osDelay(30000/portTICK_PERIOD_MS);
@@ -398,7 +404,7 @@ uint8_t* Uart_Receive_func(Uart_Receive_Type Uart_Receive_Msg,uint8_t* Uart_Rece
             }
             printf("crcchk:%x,%x\n ",CRC_chk_buffer,CRC_Rece_buffer);
         #endif
-            memset(Uart_Rece_buffer,0xff,Data_Len);
+            memset(Uart_Rece_buffer,0x00,Data_Len);
             return Uart_Rece_buffer;
         }
     }
@@ -427,8 +433,8 @@ static void Uart_Task(void* arg)
     Uart_Receive_Type Uart_Receive_Msg;
     memset(&battbuffer[0],0x00,100);
 	PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_IDLE);
-    slpManApplyPlatVoteHandle("UARTSLP",&UartSlpHandler);
-    slpManPlatVoteDisableSleep(UartSlpHandler, SLP_SLP2_STATE); 
+    //slpManApplyPlatVoteHandle("UARTSLP",&UartSlpHandler);
+    //slpManPlatVoteDisableSleep(UartSlpHandler, SLP_SLP2_STATE); 
     Uart_Receive_Msg.Bms_Address = 0x01;
     Uart_Receive_Msg.Bms_Read_Funcode = 0x03;
     uint8_t *Uart_Rece_buffer = NULL;
@@ -440,18 +446,19 @@ static void Uart_Task(void* arg)
         {
             case PROCESS_UART_STATE_IDLE:
             {
-                NetSocDisplay(LED_SOC_1,LED_TURN_OFF);     
+                NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
+                osDelay(10);     
                 Rece_index = 0;
                 break;
             }
             case PROCESS_UART_STATE_CHECK:
             {
-                Uart_Rece_buffer = (uint8_t *)malloc(Uart_Rece_LEN);
                 Uart_Receive_Msg.Reg_Begin_H = 0x00;
                 Uart_Receive_Msg.Reg_Begin_L= 0x02+Batt_Cell_Num;
                 Uart_Receive_Msg.Reg_Num_H = 0x00;
                 Uart_Receive_Msg.Reg_Num_L = 0x01;
                 Data_Len = Uart_Receive_Msg.Reg_Num_L*2+5;
+                Uart_Rece_buffer = (uint8_t *)malloc(Data_Len);
                 memset(Uart_Rece_buffer,0x00,Data_Len);
                 Uart_Rece_buffer = Uart_Receive_func(Uart_Receive_Msg,Uart_Rece_buffer,Data_Len);
                 Uart_Rece_BattI = *(Uart_Rece_buffer+3+0)<<8 |*(Uart_Rece_buffer+3+1);
@@ -579,7 +586,10 @@ static void Uart_Task(void* arg)
             }
             case PROCESS_UART_STATE_SLEEP:
             {
-                slpManPlatVoteEnableSleep(UartSlpHandler, SLP_SLP2_STATE);
+                //slpManPlatVoteEnableSleep(UartSlpHandler, SLP_SLP2_STATE);
+                #ifdef USING_PRINTF
+                    printf("PROCESS_UART_STATE_SLEEP\n");
+                #endif
                 while(1)
                 {
                     osDelay(30000/portTICK_PERIOD_MS);
@@ -622,8 +632,8 @@ static void Can_Task(void* arg)
     HAL_Can_Init(param);
     int send_index = 0;
     uint16_t Batt_Cell_addU = 0x0000;
-    slpManApplyPlatVoteHandle("CanSlp",&CanSlpHandler);
-    slpManPlatVoteDisableSleep(CanSlpHandler, SLP_SLP2_STATE);
+    //slpManApplyPlatVoteHandle("CanSlp",&CanSlpHandler);
+    //slpManPlatVoteDisableSleep(CanSlpHandler, SLP_SLP2_STATE);
     volatile bool Can_Flag=false;
     PROC_CAN_STATE_SWITCH(PROCESS_CAN_STATE_IDLE);
     while(1)
@@ -800,7 +810,10 @@ static void Can_Task(void* arg)
             }
             case PROCESS_CAN_STATE_SLEEP:
             {
-                slpManPlatVoteEnableSleep(CanSlpHandler, SLP_SLP2_STATE); 
+                //slpManPlatVoteEnableSleep(CanSlpHandler, SLP_SLP2_STATE); 
+                #ifdef USING_PRINTF
+                    printf("PROCESS_CAN_STATE_SLEEP\n");
+                #endif
                 while(1)
                 {
                     osDelay(30000/portTICK_PERIOD_MS);
@@ -957,13 +970,14 @@ static void Tcp_Task(void* arg)
     hints.ai_protocol = IPPROTO_TCP;
     psEventQueueHandle = xQueueCreate(APP_EVENT_QUEUE_SIZE, sizeof(eventCallbackMessage_t*));
     int NB_send_len=59+Batt_Cell_Num_2+Batt_Temp_Num;//设定tcp发送的最大数值,以电池数据为上线
-    slpManApplyPlatVoteHandle("TcpSlp",&TcpSlpHandler);
-    slpManPlatVoteDisableSleep(TcpSlpHandler, SLP_SLP2_STATE);
+    //slpManApplyPlatVoteHandle("TcpSlp",&TcpSlpHandler);
+    //slpManPlatVoteDisableSleep(TcpSlpHandler, SLP_SLP2_STATE);
     PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
     uint8_t Tcp_Index = 0;
     uint8_t* TcpSendBuffer=NULL;
     volatile bool Tcp_Flag=false;
     eventCallbackMessage_t *queueItem = NULL;
+    registerPSEventCallback(NB_GROUP_ALL_MASK, socketRegisterPSUrcCallback);
     while(true)
     {
         switch(gProcess_Tcp_Task)
@@ -1050,7 +1064,7 @@ static void Tcp_Task(void* arg)
                                 {
                                     printf("%x ",battbuffer[i]);
                                 }
-                                printf("\n ");
+                                printf("\n");
                             #endif
                             TcpsendID = send(sockfd, TcpSendBuffer, NB_send_len, 0 );
                             //发送失败暂时不写
@@ -1060,7 +1074,7 @@ static void Tcp_Task(void* arg)
                                 {
                                     printf("%x ",*(TcpSendBuffer+i));
                                 }
-                                printf("\n ");
+                                printf("\n");
                             #endif
                             Tcp_Index=2;
                             break;
@@ -1083,9 +1097,12 @@ static void Tcp_Task(void* arg)
             }
             case PROCESS_TCP_STATE_SLEEP:
             {
-                slpManPlatVoteEnableSleep(TcpSlpHandler, SLP_SLP2_STATE); 
+                //slpManPlatVoteEnableSleep(TcpSlpHandler, SLP_SLP2_STATE); 
                 closesocket(sockfd);
                 deregisterPSEventCallback(socketRegisterPSUrcCallback);//注销NB网络事件函数
+                #ifdef USING_PRINTF
+                    printf("PROCESS_TCP_STATE_SLEEP\n");
+                #endif
                 while(1)
                 {
                     osDelay(30000/portTICK_PERIOD_MS);
@@ -1152,7 +1169,6 @@ void Can_Task_Init()
 void Tcp_Task_Init()
 {
     osThreadAttr_t task_attr;
-    registerPSEventCallback(NB_GROUP_ALL_MASK, socketRegisterPSUrcCallback);
     memset(&task_attr,0,sizeof(task_attr));
     memset(gProcess_Tcp_TaskStack, 0xA5, PROC_TCP_TASK_STACK_SIZE);
     task_attr.name = "Tcp_Task";