QuakeGod
2024-11-25 9aed5d7e7b3c7bf09da712e9c272ece401a7acc9
Radio_LLCC68/Src/main.c
@@ -70,19 +70,37 @@
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
#define RX2BUFSIZE 64
#define TX2BUFSIZE 64
unsigned char Uart1RxBuf[128];
unsigned char Uart1TxBuf[260];
unsigned char Uart2RxBuf[RX2BUFSIZE];
unsigned char Uart2TxBuf[TX2BUFSIZE];
unsigned char Uart1RxBuf1[Uart1RxBufSize];
unsigned char Uart1TxBuf1[260];
unsigned char Uart2RxBuf1[RX2BUFSIZE];
unsigned char Uart2TxBuf1[TX2BUFSIZE];
unsigned short Uart1RxBuf1DataLen = 0;
unsigned short Uart2RxBuf1DataLen = 0;
unsigned char SlowFlicker=0;
unsigned char FastFlicker=0;
unsigned int Uart1IdelTimer = 0;
unsigned char Uart1Mode = 1;         //Uart1工作模式, 0 : 普通, 1 : 透传模式
unsigned int Uart1Baud = DefaultUart1Baud;
unsigned int Uart2Baud = DefaultUart2Baud;
//unsigned char Uart1RecvBuf1[Uart1RecvBufSize];
//unsigned short Uart1RecvBuf1DataLen=0;
//unsigned char Uart2RecvBuf1[128];
//unsigned short Uart2RecvBuf1DataLen=0;
volatile char Uart1BaudGot=0;
volatile char Uart1BaudFirstGot=0;
volatile char Uart1DmaInts=0;
#if (ENABLE_PLC)
stBinProg1 * pProgs = (stBinProg1 *)STORE_PRG_BASE;
#endif
@@ -151,23 +169,45 @@
#endif      
   if (Uart2Stat.bPacketRecved)
   {
      KBusParsePacket(&KBus1, (pKBPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen);
      Uart2RecvBuf1DataLen=0;
      KBusParsePacket(&KBus1, (pKBPacket)Uart2RxBuf1, Uart2RxBuf1DataLen);
      Uart2RxBuf1DataLen=0;
      Uart2Stat.bPacketRecved=0;
      Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1));
      Uart2RecvDMA(Uart2RxBuf1,sizeof(Uart2RxBuf1));
      KMem.WDT[2]++;
   }
      if (Uart1RecvBuf1DataLen >0 && Uart1Stat.bPacketRecved)
      if (Uart1RxBuf1DataLen >0 && Uart1Stat.bPacketRecved)
      {
         int res1 = -1;
         res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen);
         if (res1 !=0)
         if (Uart1RxBuf1DataLen == 3 && Uart1RxBuf1[0]=='+' && Uart1RxBuf1[0]=='+' && Uart1RxBuf1[0]=='+')
         {
            KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen);
            Uart1Mode = 0;      // 切换到命令模式
         }else if (Uart1RxBuf1DataLen == 3 && Uart1RxBuf1[0]=='-' && Uart1RxBuf1[0]=='-' && Uart1RxBuf1[0]=='-')
         {
            Uart1Mode = 1;      // 切换到透传模式
         }else   if (Uart1Mode == 0) {
            res1 = ModBusSlaveParsePkg(1, Uart1RxBuf1, Uart1RxBuf1DataLen);
            if (res1 !=0)
            {
               KLParsePacket(1, Uart1RxBuf1, Uart1RxBuf1DataLen);
            }
         }else if (Uart1Mode == 1) {
            // 透传模式
            if (KwRunStat.sizetosend == 0) {
               memcpy(   KwRunStat.ttTxBuf1,Uart1RxBuf1, Uart1RxBuf1DataLen);
               KwRunStat.sentsize = 0;
               KwRunStat.sizesending = 0;
               KwRunStat.sizetosend = Uart1RxBuf1DataLen;
            }else {
               return;
            }
            //SendPacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen);
         }
         Uart1RecvBuf1DataLen=0;
         Uart1RxBuf1DataLen=0;
         Uart1Stat.bPacketRecved=0;
         Uart1IdelTimer = 0;
         Uart1IdelTimer = 0;
      }   
}
@@ -228,8 +268,8 @@
  /* USER CODE BEGIN 1 */
   KMRunStat.bLEDFlick = 1;
   
   InitUartstat(&Uart1Stat,Uart1RxBuf,sizeof(Uart1RxBuf),Uart1TxBuf,sizeof(Uart1TxBuf));
   InitUartstat(&Uart2Stat,Uart2RxBuf,sizeof(Uart2RxBuf),Uart2TxBuf,sizeof(Uart2TxBuf));
   InitUartstat(&Uart1Stat,Uart1RxBuf1,sizeof(Uart1RxBuf1),Uart1TxBuf1,sizeof(Uart1TxBuf1));
//   InitUartstat(&Uart2Stat,Uart2RxBuf1,sizeof(Uart2RxBuf1),Uart2TxBuf1,sizeof(Uart2TxBuf1));
  /* USER CODE END 1 */
  /* MCU Configuration----------------------------------------------------------*/
@@ -338,7 +378,7 @@
   LL_USART_EnableIT_TC(USART1);
//   LL_USART_EnableIT_RXNE(USART2);
   Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1));
   Uart2RecvDMA(Uart2RxBuf1,sizeof(Uart2RxBuf1));
   LL_USART_EnableIT_IDLE(USART2);
   LL_USART_EnableIT_TC(USART2);