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