From 842bb64195f958b050867c50db66fc0aa413dafb Mon Sep 17 00:00:00 2001
From: QuakeGod <quakegod@sina.com>
Date: 星期六, 27 七月 2024 10:42:56 +0800
Subject: [PATCH] KBus upgrade

---
 ComLib/Src/functions.c |   71 ++++++++++++++++++-----------------
 1 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/ComLib/Src/functions.c b/ComLib/Src/functions.c
index 64bc59e..e1fb73a 100644
--- a/ComLib/Src/functions.c
+++ b/ComLib/Src/functions.c
@@ -9,7 +9,7 @@
 #include "string.h"
 #include "stm32f0xx_hal.h"
 #if (BOARD_TYPE == 14)
-#include "fp0.h"
+#include "fpx.h"
 #endif
 extern __IO uint32_t uwTick;
 //#include "Myprotocol.h"
@@ -23,6 +23,22 @@
 //volatile unsigned int TotalRunTime=0; 	//鎬诲紑鏈烘椂闂�
 //volatile unsigned int PwrCount=0;				//寮�鏈烘鏁�
 unsigned short ClkuS;				//姣忎釜Clk鐨刵S鏁帮紝
+
+unsigned char SPI1RecvBuf[64]; 
+unsigned char SPI1SendBuf[64];
+
+volatile unsigned char bSPI1Recving=0;
+volatile unsigned char bSPI1RecvDone =0;
+
+volatile unsigned char nSPI1RecvPos =0;
+volatile unsigned char nSPI1RecvLenInBuf=0;
+
+volatile unsigned char nSPI1ToSendLen=0;
+volatile unsigned char nSPI1SentLen=0;
+
+volatile unsigned char bSPI1Sending=0;
+volatile unsigned char bSPI1SendDone=0;
+
 
 int InituS(int TickFreq1)
 {
@@ -57,10 +73,11 @@
 
 void logData(unsigned char d)
 {
-			KMem.WDB[128+KMem.WDT[123]] = d;
-			KMem.WDT[123]++; 	 if (KMem.WDT[123]>=100) {KMem.WDT[123]=81;}			
+			KMem.WDB[128+KMem.WDT[7]] = d;
+			KMem.WDT[7]++; 	 if (KMem.WDT[7]>=100) {KMem.WDT[7]=81;}			
 }
 
+/*
 const unsigned short crc16_table[256] = {
 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
@@ -132,7 +149,7 @@
 	}
 	return(crc);
 }
- 
+ */
 /* Table of CRC values for high-order byte */
 const uint8_t crctablehi[] = {
 	0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
@@ -189,7 +206,7 @@
 	}
 	return (crchi << 8 | crclo);
 }
- 
+ /*
 void modbuscrc16test()
 {
 	printf("\n");
@@ -200,12 +217,12 @@
 //	printf(" modbus crc16tablefast test, expected value : 0xd825, calculate value : 0x%x\n", crc16tablefast(crc16_data, sizeof(crc16_data)));
 	printf(" modbus crc16bitbybit test, expected value : 0xd825, calculate value : 0x%x\n", crc16bitbybit(crc16_data, sizeof(crc16_data)));
 }
-
+*/
 int InitUartstat(stUartStat * pUartstat,void * pBufRx, int nSizeRx, void * pBufTx, int nSizeTx)
 {
 	memset(pUartstat,sizeof(stUartStat),0);
-	initQueue(&pUartstat->QRx,pBufRx,nSizeRx);
-	initQueue(&pUartstat->QTx,pBufTx,nSizeTx);
+	if (pBufRx) initQueue(&pUartstat->QRx,pBufRx,nSizeRx);
+	if (pBufTx) initQueue(&pUartstat->QTx,pBufTx,nSizeTx);
 	return 0;
 }
 
@@ -297,26 +314,6 @@
 	  SCB->ICSR=SCB_ICSR_PENDSVSET_Msk; //1<<SCB_ICSR_PENDSVSET_Pos;
 }
 
-void PendSvCallBack()
-{
-#if (BOARD_TYPE == 14)
-///*	
-		if (bSPI1RecvDone)
-		{
-			bSPI1RecvDone=0;
-			ParseFP0Pkg(SPI1RecvBuf,nSPI1RecvLenInBuf);
-		}
-//*/	
-#endif		
-	if (Uart2Stat.bPacketRecved)
-	{
-		KBusParsePacket(2, (pKBPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen);		
-		Uart2RecvBuf1DataLen=0;
-		Uart2Stat.bPacketRecved=0;
-		Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1));		
-	}
-}
-
 void SPI1_IRQ_CallBack()
 {
 		uint8_t value;
@@ -360,7 +357,7 @@
 				 bSPI1SendDone=1;
 				 bSPI1Recving=1;
 				 nSPI1RecvPos=0;
-				 SetFP0DEPin_0();
+				 SetFPxDEPin_0();
 			 }
 			 else {
 				 value = SPI1SendBuf[nSPI1SentLen];
@@ -368,7 +365,9 @@
 				logData(value);
 			 }
 		 }
-#endif		 
+#else
+			UNUSED(value);
+#endif
 	 }	 
 }
 
@@ -400,6 +399,8 @@
 #else
 Uart2UnsetDE();
 #endif
+	Uart2Stat.bSendDone = 1;
+	TriggerPendSV();
 }
 void Uart2RecvDone()
 {
@@ -427,6 +428,7 @@
 //	LL_USART_EnableIT_TXE(USART1);   
 //	LL_USART_EnableIT_TC(USART1); 	
 	Uart1TriggerSendDMA();
+	Uart1Stat.SentPacket++;
 	return len1;
 }
 int PutStr2(char * str1, int len1)
@@ -436,6 +438,7 @@
 //	LL_USART_EnableIT_TXE(USART1);   
 //	LL_USART_EnableIT_TC(USART1); 	
 //	Uart2TriggerSendDMA();
+		Uart2Stat.SentPacket++;			
 	return len1;
 }
 
@@ -445,12 +448,12 @@
 		PutStr1((char *)pBuf,len1);
 //	PushIn(&Uart1Stat.QTx,p1,len1);
 //	Uart1TriggerSendDMA();
-		Uart1Stat.SentPacket++;		
+
 	}else if (nChn==2){
 		PutStr2((char *)pBuf,len1);	
 //	PushIn(&Uart2Stat.QTx,p1,len1);
 //	Uart2TriggerSendDMA();	
-		Uart2Stat.SentPacket++;		
+
 	}
 		return len1;
 }
@@ -653,7 +656,7 @@
 		case 13:
 						return Input165_R(16);
 		case 14:
-						return 0;	//FP0
+						return 0;	//FPx
 		case 15:
 						return Input165_R(16);
 		case 16:
@@ -748,7 +751,7 @@
 		case 13:
 					 return ReadConfig_5();
 		case 14:
-					 return (~(LL_GPIO_ReadInputPort(GPIOA)>>4))&0x0f;	//FP0
+					 return (~(LL_GPIO_ReadInputPort(GPIOA)>>4))&0x0f;	//FPx
 		case 15:
 		case 16:
 					 return ReadConfig_5();	//Wireless Master Slave 8 in 8 o

--
Gitblit v1.9.1