QuakeGod
2024-04-12 5dd1b7fdcc52a43867f924e8d220de8467af372a
提交 | 用户 | age
8b51c7 1
Q 2 /**
3   ******************************************************************************
4   * @file           : main.c
5   * @brief          : Main program body
6   ******************************************************************************
7   ** This notice applies to any and all portions of this file
8   * that are not between comment pairs USER CODE BEGIN and
9   * USER CODE END. Other portions of this file, whether 
10   * inserted by the user or by software development tools
11   * are owned by their respective copyright owners.
12   *
13   * COPYRIGHT(c) 2018 STMicroelectronics
14   *
15   * Redistribution and use in source and binary forms, with or without modification,
16   * are permitted provided that the following conditions are met:
17   *   1. Redistributions of source code must retain the above copyright notice,
18   *      this list of conditions and the following disclaimer.
19   *   2. Redistributions in binary form must reproduce the above copyright notice,
20   *      this list of conditions and the following disclaimer in the documentation
21   *      and/or other materials provided with the distribution.
22   *   3. Neither the name of STMicroelectronics nor the names of its contributors
23   *      may be used to endorse or promote products derived from this software
24   *      without specific prior written permission.
25   *
26   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
30   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36   *
37   ******************************************************************************
38   */
39 /* Includes ------------------------------------------------------------------*/
40 #include "main.h"
41 #include "stm32f0xx_hal.h"
42
43 /* USER CODE BEGIN Includes */
44 #include "Globaldef.h"
45 #include "debug.h"
46 #include "Functions.h"
47 #include "KMachine.h"
48 #include "PLCfunctions.h"
49 //#include "KBus.h"
50 #include "KLink.h"
51 #include "string.h"
52 #include "BSP.h"
53 #include "ModbusRTU.h"
54 #if (BOARD_TYPE == 13)
55 #include "w5500_port.h"
56 #include "../src/Ethernet/socket.h"
57 #include "../src/Ethernet/loopback.h"
58 #elif (BOARD_TYPE == 14)
5dd1b7 59 #include "FPx.h"
8b51c7 60 #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16)
Q 61 #include "KWireless.h"
62 //#include "user.h"
63 //#include "../src/radio/inc/sx126x-board.h"
64 #endif
65 #include "SLP.h"
5dd1b7 66 //#include "YDLidar.h"
Q 67 #include "OrdLidar.h"
8b51c7 68
Q 69 /* USER CODE END Includes */
70
71 /* Private variables ---------------------------------------------------------*/
72
73 /* USER CODE BEGIN PV */
74 /* Private variables ---------------------------------------------------------*/
75
76 #define RX2BUFSIZE 64
77 #define TX2BUFSIZE 64
78
79
5dd1b7 80 unsigned char Uart1RxBuf[RX1BUFSIZE];
Q 81 unsigned char Uart1TxBuf[TX1BUFSIZE];
8b51c7 82
Q 83 unsigned char Uart2RxBuf[RX2BUFSIZE];
84 unsigned char Uart2TxBuf[TX2BUFSIZE];
85
86 unsigned char SlowFlicker=0;
87 unsigned char FastFlicker=0;
88
89 unsigned int Uart1IdelTimer = 0;
90 stBinProg1 * pProgs = (stBinProg1 *)STORE_PRG_BASE;
91
92 uint32_t us1,us2,us3,us4,us5,us6;
93
94 /* USER CODE END PV */
95
96 /* Private function prototypes -----------------------------------------------*/
97
98
99 /* USER CODE BEGIN PFP */
100 /* Private function prototypes -----------------------------------------------*/
101
102 const unsigned char LEDSEGTAB[]={
103 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,    //0-F
104 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1,  //0.-F.
105 0x00,0x40,            //  ,-,_,~,o,n,N,<,>,J,r,
106 };
107
108 /* USER CODE END PFP */
109
110 /* USER CODE BEGIN 0 */
111
112 int HexToInt(char ch)
113 {
114     if (ch>='0' && ch <='9') return ch-'0';
115     if (ch>='A' && ch <='F') return ch-'A'+10;
116     if (ch>='a' && ch <='f') return ch-'a'+10;
117     return 0;
118 }
119
120 void HAL_SYSTICK_Callback(void)
121 {
122 static int Count=0;
123     CurTickuS += 100;    
124     nCurTick++;
125     nSlaveTick++;
126     Count++;
127     if (Count>=10000) 
128     {
129         Count=0; 
130         KMem.CurTimeSec++;
131         KMem.ThisRunTime++; KMem.TotalRunTime++;
132         if (KMRunStat.bLEDFlick) KMRunStat.bLEDFlick--;
133         if (KMRunStat.bLEDFlick >120) KMRunStat.bLEDFlick=120;
134     }
135
136     return;
137 }
138
5dd1b7 139 void * KBusCallBackFunc(int nChn, int nEvent, void *pBuf, int nLen1)
Q 140 {
141     switch (nEvent){
142         
143         case KBusEvNone:
144             break;
145         case KBusEvCreate:
146             break;
147         case KBusEvConnected:
148             break;
149         case KBusEvDisConnected:
150             break;
151         case KBusEvClosed:
152             break;
153         case KBusEvStateChange:
154             break;
155         case KBusEvTimeSync:
156             break;
157         case KBusEvDataUpdate:
158             KMem.WY[0]=KBusMem.WLY[0];            //KBus Slave
159             KBusMem.WLX[0]=KMem.WX[0];
160             KBusMem.WLX[1]=KMem.WX[1];
161             KBusMem.WLX[2]=KMem.WX[2];
162             KBusMem.WLX[3]=KMem.WX[3];    
163             break;
164         case KBusEvCmdResponse:
165             break;
166         
167         default:
168             break;
169     }
170     return 0;
171 }
172
173 //#define RAM_START_ADDR 0x20000000    // SRAM_BASE
8b51c7 174 #define VECTOR_SIZE 46 
Q 175 #define  ApplicationAddress  0x08001000  //应用程序首地址定义
5dd1b7 176 /*
8b51c7 177 static void RemapIrqVector(void)
Q 178 {
179     memcpy((void*)RAM_START_ADDR, (void *)ApplicationAddress, VECTOR_SIZE * 4);
180     LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYSCFG);
181     LL_SYSCFG_SetRemapMemory(LL_SYSCFG_REMAP_SRAM);
182 }
5dd1b7 183 */
8b51c7 184 /* USER CODE END 0 */
Q 185
186 /**
187   * @brief  The application entry point.
188   *
189   * @retval None
190   */
191 int main(void)
192 {
193   /* USER CODE BEGIN 1 */
194 //    RemapIrqVector();
195       __set_PRIMASK(0);    //打开全局中断
196     
197     KMRunStat.bLEDFlick = 1;
198     
199     InitUartstat(&Uart1Stat,Uart1RxBuf,sizeof(Uart1RxBuf),Uart1TxBuf,sizeof(Uart1TxBuf));
200     InitUartstat(&Uart2Stat,Uart2RxBuf,sizeof(Uart2RxBuf),Uart2TxBuf,sizeof(Uart2TxBuf));
201   /* USER CODE END 1 */
202
203   /* MCU Configuration----------------------------------------------------------*/
204
205   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
206   HAL_Init();
207
208   /* USER CODE BEGIN Init */
209
210     
211         KMem.LastScanTime=0;
212         KMem.ScanTimeuS=0;
213         KMem.MinScanTimeuS=99999;
214         KMem.MaxScanTimeuS=0;
215
216 //        KMem.SDD[14]=(unsigned int)&KMStoreSysCfg;
217 //        KMem.SDD[15]=(unsigned int)&KMStoreSysCfg1;
218         KMem.SDD[12]=((uint32_t *)UID_BASE)[0];
219 //        KMem.SDD[13]=((uint32_t *)UID_BASE)[1];
220 //        KMem.SDD[14]=((uint32_t *)UID_BASE)[2];
221         KMem.SDD[13]=PendSvCount;
222         KMem.SDD[14]=RCC->CSR;
223 //        KMem.SDD[15]=*(uint32_t *)FLASHSIZE_BASE;
224 //        KMem.SDD[16]=(unsigned int)&KMSysCfg;
225     
226   /* USER CODE END Init */
227
228   /* Configure the system clock */
229   SystemClock_Config();
230
231   /* USER CODE BEGIN SysInit */
232     TickFreq=10000;        //Tick频率
233     InituS(TickFreq);    
234  // HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/TickFreq);    //重新定义SysTick的频率
235
236   /* USER CODE END SysInit */
237
238   /* Initialize all configured peripherals */
239   MX_GPIO_Init();
240   LL_GPIO_InitTypeDef GPIO_InitStruct;
241   GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
242   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
243   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
244   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
245   LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
246
247   MX_DMA_Init();
248     
249     KMachineInit();
250     ReadSysCfgFromFlash(&storedKMSysCfg);
251     
252     KMRunStat.bLEDFlick = 1;
253     
254     KMem.CurJumperSW=ReadJumperSW();
255     KMem.EffJumperSW=KMem.CurJumperSW;
256     
257     bSLPMaster = 1; // KMem.EffJumperSW&0x20 ; //master?
258     nStation = 1;
259     
260 //    Uart2Baud = AlterUart2Baud;
261     
5dd1b7 262
Q 263     
8b51c7 264 #if (BOARD_TYPE == 14)
Q 265     KMem.EffJumperSW|=0x10;
266     nStationID=KMem.EffJumperSW&0x0f;
267   if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;}
268     else{bKBusMaster=0;bKBusSlave=1;}
269     nChilds=nStationID;
5dd1b7 270     FPx_Init();
8b51c7 271
Q 272 #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16)
273     nStationID=1 ;//KMem.EffJumperSW&0x0f;
274 //    if (KMem.EffJumperSW == 0x1f) {bKBusRepeater=1;bKBusMaster=1;bKBusSlave=0;}
275 //  else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;}
276 //    else
277         {bKBusMaster=0;bKBusSlave=1;}    
278 #else
279     nStationID=KMem.EffJumperSW&0x0f;
280     if (KMem.EffJumperSW == 0x1f) {bKBusRepeater=1;bKBusMaster=1;bKBusSlave=0;}
281   else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;}
282     else{bKBusMaster=0;bKBusSlave=1;}
283 #endif
5dd1b7 284     
Q 285     KBusInit(2, bKBusMaster, nChilds);    
286     KBusSetCallBackFunc(2, &KBusCallBackFunc),
287     
8b51c7 288     nChilds=nStationID;
Q 289     nCurPollId=1;
290     //if (KMem.EffJumperSW == 0x00)
291         Uart1Baud = DefaultUart1Baud;
292   MX_USART1_UART_Init();
293   MX_USART2_UART_Init();
294
295     MX_USART3_UART_Init();
296     
297     LL_USART_EnableIT_RXNE(USART3);
298     LL_USART_EnableIT_IDLE(USART3);    
299     
300     MX_USART5_UART_Init();
301     LL_USART_EnableIT_RXNE(USART5);
302     LL_USART_EnableIT_IDLE(USART5);
303     
304     MX_USART6_UART_Init();
305     LL_USART_EnableIT_RXNE(USART6);
306     LL_USART_EnableIT_IDLE(USART6);
307
308     
309 //    MX_SPI1_Init();
310 //    LL_SPI_EnableIT_RXNE(SPI1);
311
312 #if (BOARD_TYPE == 14)
313 //    MX_SPI2_Init();
314 //  MX_ADC_Init();
315 #else
316 //    MX_SPI2_Init();
317   MX_ADC_Init();
318 #endif
319
320     MX_IWDG_Init();
321
322     MX_TIM6_Init();
323     LL_TIM_EnableCounter(TIM6);
324     
325   /* USER CODE BEGIN 2 */
326     LL_USART_EnableIT_RXNE(USART1);
327     LL_USART_EnableIT_IDLE(USART1);
328     LL_USART_EnableIT_TC(USART1);
329
330 //    LL_USART_EnableIT_RXNE(USART2);
331     Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1));    
332     LL_USART_EnableIT_IDLE(USART2);
333     LL_USART_EnableIT_TC(USART2);
334 #if (BOARD_TYPE == 13)
335     int res;
336     res = w5500_init();
337     KMem.SDD[28]=res;
338     
339 //    res=socket(0,Sn_MR_TCP,5000,0);
340     KMem.SDD[29]=res;    
341     
342 //    res = listen(0);
343 #endif    
344 //    if (bKBusSlave)
345     {
346     //    LL_USART_EnableAutoBaudRate(USART1);
347     //    LL_USART_SetAutoBaudRateMode(USART1, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE);        
348     //    LL_USART_EnableAutoBaudRate(USART2);
349     //    LL_USART_SetAutoBaudRateMode(USART2, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE);        
350     }
351     //LL_USART_EnableIT_TXE(USART1);
352   /* USER CODE END 2 */
353
354     
355   /* Infinite loop */
356   /* USER CODE BEGIN WHILE */
357
358     HAL_Delay(10);                
359     SetRunLed(1);                //Turn On Run Led
360     SetErrLed(0);                //Turn Off Err Led
361
362 #if (BOARD_TYPE == 14)
363 //    PutOutput (0);                    //Clear all Output
364 //    Enable595(1);                        //Enable 595 Output 
365 #else
366     PutOutput (0);                    //Clear all Output
367     Enable595(1);                        //Enable 595 Output 
368 #endif
369
370         if (GetBoardType() == 7 || GetBoardType() ==8 
371             || GetBoardType() == 9 || GetBoardType() ==10 ||GetBoardType() ==13 ||GetBoardType() ==15 || BOARD_TYPE == 16) 
372         {
373             displayInput(0xffff);        //
374             EnableDisIn(1);                //Input Diaplay Enable 595 
375         }
376     SetOutStat(0);            //OK Good, signal
377     ShowInitInfo();
378     KMem.LastScanTime = GetuS();
379
380     KMRunStat.WorkMode=0;
381     KMRunStat.WorkMode2=0;
382         
383     KMRunStat.WorkMode = storedKMSysCfg.theKMSysCfg.workmode;
384         
385     if (KMRunStat.WorkMode == 1){
386         InitPLC();
387         KMRunStat.WorkMode2 = KMem.CurJumperSW&0x20 ;
388         if (KMRunStat.WorkMode2) {
389             StartPLC(); }
390     }
391     KMem.WX[7]=0x5a;
392 #if (BOARD_TYPE == 15 || BOARD_TYPE == 16)
393     KWireLessInit(KMem.EffJumperSW&0x20,KMem.EffJumperSW&0x0f);
394     KWireLessStart();
395 #endif
396     
5dd1b7 397     OrdLidarStart(-1);
8b51c7 398     
Q 399   while (1)
400   {
401         //int MyKeyStat1,MyKeyStat2;
402         //MyKeyStat1=GetInput();
403
404         //*((unsigned int *)&(PLCMem.SDT[10]))=nRunCount;
405     //    KMem.nRunCount=nRunCount;
406         SlowFlicker=0;
407         FastFlicker=1;        
408         us1=GetuS();
409         int haltick=HAL_GetTick();
410         
411         int thisJumperSW=ReadJumperSW();
412         
413         if (KMRunStat.WorkMode&1){
414             if (thisJumperSW&0x20 && !(KMem.CurJumperSW&0x20))  // Run 开关 正 跳变。
415             {StartPLC();}
416             if (!(thisJumperSW&0x20) && (KMem.CurJumperSW&0x20))  // Run 开关 负 跳变。
417             {StopPLC();}
418         }
419         
420         KMem.CurJumperSW=thisJumperSW;
421         KMem.haltick=haltick;
422 //        KMem.TotalRunTime=TotalRunTime;
423 //        KMem.ThisRunTime=ThisRunTime;        
424         
425 //        *((unsigned int *)&(PLCMem.SDT[2]))=nChilds;
426 //        KMem.SDD[13]=PendSvCount;
427 //        KMem.SDD[14]=RCC->CSR;        
428         
429         int a;
430         a        = LL_GPIO_ReadInputPort(GPIOA);
431         KMem.WDT[120]=a;
432         a        = LL_GPIO_ReadInputPort(GPIOB);
433         KMem.WDT[121]=a;
434         a        = LL_GPIO_ReadInputPort(GPIOC);
435         KMem.WDT[122]=a;
436         a        = LL_GPIO_ReadInputPort(GPIOD);
437         KMem.WDT[123]=a;
438         
5dd1b7 439
8b51c7 440         KMem.WXB[0]= GetInput();        
Q 441         
442         us2=GetuS();
443         if (PowerDownEvent) {        KMem.WX[0]=0;}
5dd1b7 444 // /*
8b51c7 445         if ((KMem.nRunCount &0x1f) == 0x02)
Q 446         {
447             ADCProcess();
448             if (PowerDownEvent)
449             {
450                 KMem.WX[0]=0;
451                 if (!OldPowerDownEvent)
452                 {
453                     OldPowerDownEvent = PowerDownEvent;
454                     OldPowerDownEventTime = nCurTick;
455                     PowerDownProcess();
456                 }
457             }else
458             {
459                 if (OldPowerDownEvent)
460                 {
461                     OldPowerDownEvent=PowerDownEvent;
462                     PowerRecoverProcess();
463                     
464                 }
465             }
466         }
5dd1b7 467 // */
8b51c7 468
Q 469 //        pProgs = (stBinProg1 *) STORE_PRG_BASE;
470
471         if (    KMRunStat.WorkMode==1 ) //&& bKBusMaster)
472         {
473             if (KMRunStat.nBinProgBank == 0){
474                 pProgs=(stBinProg1 *)STORE_PRG_BASE;
475             }else {
476                 pProgs=(stBinProg1 *)ALT_PRG_BASE;
477             }
478             nSizeProg1=KMRunStat.nBinProgSize;
479         //    pProgs=(stBinProg1 *)prog1;
480             
481             ProcessPLCBinProg(pProgs, nSizeProg1);
482         }
483
484         KMem.ScanTimeuS=us2-KMem.LastScanTime;
485         KMem.LastScanTime = us2;
486         if (KMem.ScanTimeuS < KMem.MinScanTimeuS) {KMem.MinScanTimeuS = KMem.ScanTimeuS;}
487         if (KMem.ScanTimeuS > KMem.MaxScanTimeuS) {KMem.MaxScanTimeuS = KMem.ScanTimeuS;}
488
489         //        if (bKBusRepeater)        {    KBusRepeaterFunc();    }
490
491         us3=GetuS();
492
493         if (bKBusMaster)        
494         {
495
5dd1b7 496             if (nChilds>0) {        KBusMasterFunc(2); }
8b51c7 497
Q 498         }
499             if (haltick&0x00002000) SlowFlicker=1;
500             else SlowFlicker=0;
501             if (haltick&0x00000800) FastFlicker=1;
502             else FastFlicker=0;    
503
504         if (bKBusSlave)        
505         {
5dd1b7 506
8b51c7 507             KBusSlaveFunc(2);    
5dd1b7 508             if (! KMem.RunStat) {KBusMem.WLY[0]=0;}
Q 509             KMem.WLY[0]=KBusMem.WLY[0];
510
8b51c7 511             if (nSlaveTick&0x00002000) SlowFlicker=1;
Q 512             else SlowFlicker=0;
513             if (nSlaveTick&0x00000800) FastFlicker=1;
514             else FastFlicker=0;            
515
516         }
5dd1b7 517         KBusMem.WLX[0]=KMem.WX[0];
Q 518         KMem.WY[0]=KBusMem.WLY[0];
519         KBusMem.WLX[1]=KMem.WX[1];
520         KBusMem.WLX[2]=KMem.WX[2];
521         KBusMem.WLX[3]=KMem.WX[3];
522         
8b51c7 523 //        KMem.WY[0]=nCount2>>5;
Q 524         if (KMem.RunStat) {KMem.RunStat--;}
525         if (KMem.ErrStat) {KMem.ErrStat--;}
526         
527         if (KMRunStat.bLEDFlick)
528         {
529             SetRunLed(FastFlicker);
530             SetErrLed(FastFlicker);
531             SetErr2Led(FastFlicker);
532             SetOutStat(!FastFlicker);
533             //KMRunStat.bLEDFlick-- ;
534         }
535         else
536         {
537             if (KMRunStat.WorkMode==1 ) {
538                 if (PLCMem.bPLCRunning){SetRunLed(SlowFlicker);}
539                     else {SetRunLed(0);}
540             }
541             else {
542                     if (!KMem.RunStat) SetRunLed(SlowFlicker);
543                     else SetRunLed(FastFlicker);
544             }
545             if (!KMem.ErrStat) 
546             {
547                 SetErrLed(0);
548                 SetErr2Led(0);
549                 SetOutStat(1);
550             }
551             else 
552             {
553                 SetErrLed(FastFlicker);
554                 SetErr2Led(FastFlicker);
555                 SetOutStat(0);
556                 
557             }
558         }
559         
560 //        SetRunLed(RunStat);
561 //        SetErrLed(ErrStat);
562         
563         us4=GetuS();
564 //        EffJumperSW = GetInput(20)&0xff;
565
566
567         us5=GetuS();
568         
569
570         //PutOutput (KMem.nRunCount>>8);
571         //PutOutput(0x0f70);
572
573 //        if (bKBusMaster) ShowInfo();
574 //        if (bKBusSlave) ShowInfo();
575         us6=GetuS();
576         add1(10,10);
577         for (int i=0;i<64;i++)
578         {
579 //            ProcessTimer(i);
580         }
581         KMem.nRunCount++;
582 //        int nSize=sizeof(stKBusChnStat);
583 //        memcpy(&KMem.SDT[64],&KBusChnStats[1],nSize);
584 //        memcpy(&KMem.SDT[64+nSize/2],&KBusChnStats[2],nSize);
585 //        for (int i=0;i<128;i++)    {        SDT[i]=i;    }
586 //        SDT[48]=55;
5dd1b7 587         if (Uart1Stat.bPacketRecved && Uart1RecvBuf1DataLen >0)
8b51c7 588         {
Q 589             int res1 = -1;
5dd1b7 590             if (Uart1RecvBuf1[0] == KLSignStart) {
Q 591                 res1 = KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen);
592             }else {
593                 res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen);
8b51c7 594             }
Q 595             Uart1Stat.bPacketRecved=0;
5dd1b7 596             Uart1RecvBuf1DataLen=0;
8b51c7 597             Uart1IdelTimer = 0;
Q 598         }else {
599             if (Uart1IdelTimer>600000) { // 超过60秒没有数据传输,重新进入自适应波特率状态
600                 LL_USART_EnableAutoBaudRate(USART1);
601                 LL_USART_SetAutoBaudRateMode(USART1, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE);
602             }else {
603                     Uart1IdelTimer++;
604             }
605         }
606     if (bKBusSlave)    HAL_Delay(0);
607         
608     if (Uart6Stat.bPacketRecved){
609         SLPparsePacket(Uart6RxBuf,Uart6RecvBuf1DataLen);
610         Uart6RecvBuf1DataLen =0;
611         Uart6Stat.bPacketRecved = 0;
612     }
613         
614         SLPinputB =  KMem.WYB[1];
615         SLPProcess();
616         KMem.WXB[1] = SLPoutputB;
617
618         // YDLiDar process;
619
620     if (Uart3Stat.bPacketRecved){
621         KMem.WDT[8]++;
5dd1b7 622         OrdLidarParsePkt(0,(OradarLidarFrame *)Uart3RxBuf,Uart3RecvBuf1DataLen);
8b51c7 623         Uart3RecvBuf1DataLen =0;
Q 624         Uart3Stat.bPacketRecved = 0;
625     }
626     KMem.WDT[9]=pCount1;
627     KMem.WDT[10]=dCount1;
628     KMem.WDT[11]=vCount1;
5dd1b7 629     
Q 630     KMem.WDT[12] = eCount1;
631     KMem.WDT[13] = eCount2;
8b51c7 632         
Q 633     if (Uart5Stat.bPacketRecved){
634         KMem.WDT[16]++;
5dd1b7 635         OrdLidarParsePkt(1,(OradarLidarFrame *)Uart5RxBuf,Uart5RecvBuf1DataLen);
8b51c7 636         Uart5RecvBuf1DataLen =0;
Q 637         Uart5Stat.bPacketRecved = 0;
638     }
639         
640 //    nPosX,nPosY,nPosZ,nPosZ1,nPosZ2;
641     
642     KMem.WDT[17]=pCount2;
643     KMem.WDT[18]=dCount2;
644     KMem.WDT[19]=vCount2;
645     
646     KMem.WDT[24]=nPosX;
647     KMem.WDT[25]=nPosY;
648     KMem.WDT[26]=nPosZ;
649     KMem.WDT[27]=nPosZ1;
650     KMem.WDT[28]=nPosZ2;
651     
5dd1b7 652     KMem.WDT[32]=results[0];
Q 653     KMem.WDT[33]=results[1];
654     KMem.WDT[34]=results[2];
655     KMem.WDT[35]=results[3];
656     KMem.WDT[36]=results[4];
657     KMem.WDT[37]=results[5];
658     KMem.WDT[38]=results[6];
659     KMem.WDT[39]=results[7];
8b51c7 660     
5dd1b7 661     
Q 662     KMem.WX[1] = nPosX ;
663     KMem.WX[2] = nPosY ;
664     KMem.WX[3] = nPosZ;
665     
666 //    KMem.WX[1]++ ;
667 //    KMem.WX[2]++;
668     
8b51c7 669
5dd1b7 670     PutOutput (KMem.WY[0]);
8b51c7 671
Q 672      LL_IWDG_ReloadCounter(IWDG);
673         
674   }    //while (1) ;
675   /* USER CODE END WHILE */
676
677   /* USER CODE BEGIN 3 */
678
679   /* USER CODE END 3 */
680
681 }
682
683
684 /* USER CODE BEGIN 4 */
685
686 /* USER CODE END 4 */
687
688 /**
689   * @brief  This function is executed in case of error occurrence.
690   * @param  file: The file name as string.
691   * @param  line: The line in file as a number.
692   * @retval None
693   */
694 void _Error_Handler(char *file, int line)
695 {
696   /* USER CODE BEGIN Error_Handler_Debug */
697   /* User can add his own implementation to report the HAL error return state */
698   while(1)
699   {
700   }
701   /* USER CODE END Error_Handler_Debug */
702 }
703
704 #ifdef  USE_FULL_ASSERT
705 /**
706   * @brief  Reports the name of the source file and the source line number
707   *         where the assert_param error has occurred.
708   * @param  file: pointer to the source file name
709   * @param  line: assert_param error line source number
710   * @retval None
711   */
712 void assert_failed(uint8_t* file, uint32_t line)
713
714   /* USER CODE BEGIN 6 */
715   /* User can add his own implementation to report the file name and line number,
716      tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
717   /* USER CODE END 6 */
718 }
719 #endif /* USE_FULL_ASSERT */
720
721 /**
722   * @}
723   */
724
725 /**
726   * @}
727   */
728
729 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/