Browse Source

平峰第一版正式样件程序

LAPTOP-KB7QFH2U\ChenJie-PC 2 years ago
parent
commit
400b60f3f0
5 changed files with 36 additions and 25 deletions
  1. 2 2
      src/AppGlobalVar.h
  2. 4 3
      src/AppTaskUart0.c
  3. 17 15
      src/AppTaskUart1.c
  4. 10 2
      src/hal_adapter.c
  5. 3 3
      src/main.c

+ 2 - 2
src/AppGlobalVar.h

@@ -64,8 +64,8 @@ extern char IccidNum[20];
 extern uint8 TcpWorkState;
 typedef struct _AppEppType
 {
-	uint32 battDischrgAccCap;
-	uint32 battDischrgAccEnrg;
+	uint32 battDischrgAccCap; //单位maH
+	uint32 battDischrgAccEnrg;//单位wh
 	uint16 battCycleTimes;
 }AppEppBody;
 typedef struct _AppConfigType

+ 4 - 3
src/AppTaskUart0.c

@@ -41,6 +41,7 @@ void Uart0Task(void *pvParameters)
 		}
 		case PROCESS_UART_STATE_READ:
 		{
+
 			static uint16 readCnt = 0;
 			/*电压电流数据读取(第一次读取)*/
 			uint8 *UartDataRecv = NULL;
@@ -484,14 +485,14 @@ void battDataCalFunc(void)
 	}
 	if(battI>10000)
 	{
-		battCapTempOnce = ((battI - 10000)/10.0)*(timediff/1000/3600.0);
+		battCapTempOnce = ((battI - 10000)/10.0)*(timediff/3600.0);
 		battCapTemp =  battCapTempOnce + battCapTemp;
 		battEnrgTemp = (battCapTempOnce*battPackVol)/10000.0 + battEnrgTemp;
-		if(battEnrgTemp>1)
+		if(battEnrgTemp>10)
 		{
 			AppConfigInfo.AppDataInfo.battDischrgAccCap = AppConfigInfo.AppDataInfo.battDischrgAccCap + (uint32)battCapTemp;
 			AppConfigInfo.AppDataInfo.battDischrgAccEnrg = AppConfigInfo.AppDataInfo.battDischrgAccEnrg + (uint32)battEnrgTemp;
-			AppConfigInfo.AppDataInfo.battCycleTimes = AppConfigInfo.AppDataInfo.battDischrgAccEnrg/49;
+			AppConfigInfo.AppDataInfo.battCycleTimes = AppConfigInfo.AppDataInfo.battDischrgAccEnrg/49000;
 			AppConfigInfo.appSaveFlg = true;
 			battEnrgTemp = 0;
 			battCapTemp = 0;

+ 17 - 15
src/AppTaskUart1.c

@@ -158,13 +158,12 @@ void Uart_4G_Task(void *pvParameters)
 			if (pReadLen > 0 && SocketId >= 0)
 			{
 				TcpDataInfoRecvHandle(UartRecvPtr, pReadLen);
-
-				if(UartRecvPtr != NULL)
-				{
-					free(UartRecvPtr);
-				}
-				UartRecvPtr = NULL;
 			}
+			if(UartRecvPtr != NULL)
+			{
+				free(UartRecvPtr);
+			}
+			UartRecvPtr = NULL;
 			PROC_TCP_STATE_SWITCH(PROCESS_TCP_IDLE);
 			break;
 		}
@@ -745,7 +744,7 @@ void TcpDataEncode(uint32 *PtrSendAddr, uint16 *SendLen)
 	static uint32 TcpSendTimeCounter = 0;
 	TcpSendTimeCounter++;
 
-	if (TcpSendTimeCounter%60 == 1)
+	if (TcpSendTimeCounter == 1)
 	{
 		DataIdx = VerMsg; //°ćąžĐĹϢˇ˘ËÍ
 	}
@@ -1112,18 +1111,21 @@ void TcpDataEncode(uint32 *PtrSendAddr, uint16 *SendLen)
 		AccInfoToTcpMsg.AccMsg.accChrgEng[1] = 0;
 		AccInfoToTcpMsg.AccMsg.accChrgEng[2] = 0;
 		AccInfoToTcpMsg.AccMsg.accChrgEng[3] = 0;
-		AccInfoToTcpMsg.AccMsg.accDischrgEng[0] = AppConfigInfo.AppDataInfo.battDischrgAccEnrg>>24;
-		AccInfoToTcpMsg.AccMsg.accDischrgEng[1] = AppConfigInfo.AppDataInfo.battDischrgAccEnrg>>16;
-		AccInfoToTcpMsg.AccMsg.accDischrgEng[2] = AppConfigInfo.AppDataInfo.battDischrgAccEnrg>>8;
-		AccInfoToTcpMsg.AccMsg.accDischrgEng[3] = AppConfigInfo.AppDataInfo.battDischrgAccEnrg>>0;
+		uint32 temp = 0;
+		temp = AppConfigInfo.AppDataInfo.battDischrgAccEnrg/1000;
+		AccInfoToTcpMsg.AccMsg.accDischrgEng[0] = temp>>24;
+		AccInfoToTcpMsg.AccMsg.accDischrgEng[1] = temp>>16;
+		AccInfoToTcpMsg.AccMsg.accDischrgEng[2] = temp>>8;
+		AccInfoToTcpMsg.AccMsg.accDischrgEng[3] = temp>>0;
 		AccInfoToTcpMsg.AccMsg.accChrgCap[0] = 0;
 		AccInfoToTcpMsg.AccMsg.accChrgCap[1] = 0;
 		AccInfoToTcpMsg.AccMsg.accChrgCap[2] = 0;
 		AccInfoToTcpMsg.AccMsg.accChrgCap[3] = 0;
-		AccInfoToTcpMsg.AccMsg.accDischrgCap[0] = AppConfigInfo.AppDataInfo.battDischrgAccCap>>24;
-		AccInfoToTcpMsg.AccMsg.accDischrgCap[1] = AppConfigInfo.AppDataInfo.battDischrgAccCap>>16;
-		AccInfoToTcpMsg.AccMsg.accDischrgCap[2] = AppConfigInfo.AppDataInfo.battDischrgAccCap>>8;
-		AccInfoToTcpMsg.AccMsg.accDischrgCap[3] = AppConfigInfo.AppDataInfo.battDischrgAccCap;
+		temp = AppConfigInfo.AppDataInfo.battDischrgAccCap/1000;
+		AccInfoToTcpMsg.AccMsg.accDischrgCap[0] = temp>>24;
+		AccInfoToTcpMsg.AccMsg.accDischrgCap[1] = temp>>16;
+		AccInfoToTcpMsg.AccMsg.accDischrgCap[2] = temp>>8;
+		AccInfoToTcpMsg.AccMsg.accDischrgCap[3] = temp;
 		AccInfoToTcpMsg.AccMsg.accOverChrgTimes= 0;
 		AccInfoToTcpMsg.AccMsg.accOverDischrgTimes = 0;
 		AccInfoToTcpMsg.AccMsg.accCycleTimes[0] = AppConfigInfo.AppDataInfo.battCycleTimes>>8;

+ 10 - 2
src/hal_adapter.c

@@ -248,6 +248,7 @@ Std_ReturnType UART_Send_Data(uint8 transChannel, const uint8 *txBuffer, uint32
 	 UartMsg_t UartMsg;
 	 UartHalMsg_t UartHalMsgRecv;
 	 BaseType_t ret = pdFALSE;
+	 BaseType_t ret_send = pdFALSE;
 	 uint32 T_bytesRemaining[3] = {0};
 	 uint16 T_timeout[3] = {0};
 	 volatile Uart_StatusType Uart_ReceiveStatus[3] = {UART_STATUS_TIMEOUT,UART_STATUS_TIMEOUT,UART_STATUS_TIMEOUT};
@@ -285,9 +286,16 @@ Std_ReturnType UART_Send_Data(uint8 transChannel, const uint8 *txBuffer, uint32
 					{
 					UartMsg.DataLen = UartHalMsgRecv.value;
 					UartMsg.dataPrt = calloc(UartMsg.DataLen,sizeof(UINT8));
-					memset(UartMsg.dataPrt,0,UartMsg.DataLen);
 					memcpy(UartMsg.dataPrt,RX_Buffer[UartHalMsgRecv.Channel],UartMsg.DataLen);
-					xQueueSend(UartRecvQueue[UartHalMsgRecv.Channel],&UartMsg,10);
+					ret_send = xQueueSend(UartRecvQueue[UartHalMsgRecv.Channel],&UartMsg,10);
+					if(ret_send==pdFALSE)
+					{
+						if(UartMsg.dataPrt!=NULL)
+						{
+							free(UartMsg.dataPrt);
+						}
+						UartMsg.dataPrt = NULL;
+					}
 					}
 					T_timeout[UartHalMsgRecv.Channel] = 0;
 					UartState[UartHalMsgRecv.Channel] = UartRecvComplete;

+ 3 - 3
src/main.c

@@ -159,7 +159,7 @@ int main(void)
 	IP_LPUART1->CTRL |= LPUART_CTRL_ILT(1);
 	IP_LPUART2->CTRL |= LPUART_CTRL_ILT(1);
 	IP_LPUART0->CTRL |= LPUART_CTRL_IDLECFG(5);
-	IP_LPUART1->CTRL |= LPUART_CTRL_IDLECFG(5);
+	IP_LPUART1->CTRL |= LPUART_CTRL_IDLECFG(3);
 	IP_LPUART2->CTRL |= LPUART_CTRL_IDLECFG(3);
 
 	Dio_WriteChannel(DioConf_DioChannel_PTE0_GPIO_OUT_MCU_LED1, STD_OFF);
@@ -170,8 +170,8 @@ int main(void)
 
 	UartInit();
 	xTaskCreate(MainTask, (const char *const)"MainTask", 512, (void *)0, main_TASK_PRIORITY + 3, NULL);
-	xTaskCreate(Uart0Task, (const char *const)"Uart0_Bms_Task", 512, (void *)0, main_TASK_PRIORITY + 2, NULL);
-	xTaskCreate(CanTask, (const char *const)"CanTask", 512, (void *)0, main_TASK_PRIORITY + 2, NULL);
+	xTaskCreate(Uart0Task, (const char *const)"Uart0_Bms_Task", 1024, (void *)0, main_TASK_PRIORITY + 2, NULL);
+//	xTaskCreate(CanTask, (const char *const)"CanTask", 512, (void *)0, main_TASK_PRIORITY + 2, NULL);
 	xTaskCreate(GpsTask, (const char *const)"GpsTask", 512, (void *)0, main_TASK_PRIORITY + 1, NULL);
 	xTaskCreate(Uart_4G_Task, (const char *const)"Uart_4G_Task", 2048, (void *)0, main_TASK_PRIORITY + 0, NULL);
 	vTaskStartScheduler();