From abd6a3fdf20a1d3e6629505386efe36006ef907d Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期二, 26 三月 2024 10:30:43 +0800
Subject: [PATCH] V1.9,加入看门狗,注意看门狗初始化要放在lp串口初始化后面

---
 Src/main.c |   88 ++++++++++++++++++++++++++------------------
 1 files changed, 52 insertions(+), 36 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index 0b4e461..4121365 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -39,6 +39,7 @@
 #include "syn6288.h"
 #include "dw_mbx_tag.h"
 #include "GPS.h"
+#include "lora.h"
 #define NSH1 0x0001
 #define GP   0x0002
 #define FLASH_HARDWARE_VERSION_MAP		(uint32_t)0x08004F00    //硬件版本号和批次信息位置
@@ -107,6 +108,7 @@
 
 /* Private user code ---------------------------------------------------------*/
 /* USER CODE BEGIN 0 */
+extern uint8_t shengji_flag;
 uint32_t dev_id;
 uint16_t heartbeat_timer,poll_timer,sync_timer;
 uint8_t aRxBuffer[1],group_id;
@@ -243,6 +245,10 @@
 		{
             SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
 		}
+        if(memcmp(g_com_map2,g_com_map,200)!=0)
+         {
+            SCB->AIRCR = 0X05FA0000|(unsigned int)0x04;
+         }
 
 	}
 
@@ -290,7 +296,8 @@
 u8 active_flag,nomovesleeptime;
 
 void Program_Init(void)
-{	float temp;
+{	
+    float temp;
 	uint16_t temp2;
 	uint16_t i;
 	Usart1ParseDataCallback = UsartParseDataHandler;
@@ -299,7 +306,7 @@
 	hardware_pici = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+2);
 	hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+4);
 	//deca_sleep(1000);
-	g_com_map[VERSION] = (1<<8)|2;
+	g_com_map[VERSION] = (1<<8)|9;
 //    g_com_map[DEV_ID]=1158;
 //    #ifdef DEBUG_MODE
 //   // g_com_map[GROUP_ID]=21;
@@ -465,17 +472,14 @@
     HAL_UART_Transmit_DMA(&hlpuart1,Close_RMC,100);
     Delay_Ms(150);
 }
+#define GPS_SIZE 400
 extern uint16_t Lora_rece_error;
 extern uint16_t Beepchixutime;
-#define BleRxBufferSize 1
-uint8_t aRxBuffer[1],group_id,GPSRxBuffer[BleRxBufferSize];
-uint8_t ble_rx_success_flag;
+uint8_t group_id;
 uint8_t fangzhijinrushuimian_flag;
-uint8_t GPSchangdu;
-uint8_t GPS_GGAdate[400];
-uint8_t GPS_GGAdatenum;
-void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 
-{
+uint8_t GPS_GGAdate[GPS_SIZE];
+//void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 
+//{
 //    {
 //        GPS_RecvFsm(GPSRxBuffer[0]);
 //        GPS_Recv_Poll(GPSRxBuffer[0]);
@@ -490,11 +494,11 @@
 //    }
 //    HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
 //    }
-}
-uint8_t ble_rxdate111[3]={0x11,0x22,0x33};
-void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
-{
-        SystemClock_Config();
+//}
+//uint8_t ble_rxdate111[3]={0x11,0x22,0x33};
+//void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
+//{
+//        SystemClock_Config();
 // HAL_UART_Transmit(&hlpuart1,(uint8_t*)ble_rxdate111,3,1000);
 ////  huart->RxState = HAL_UART_STATE_BUSY_RX;
 //        ble_rxzhongzhuandate[ble_zhongzhuannum]=BleRxBuffer[0];
@@ -506,15 +510,15 @@
 //    memset(ble_rxzhongzhuandate,0,sizeof(ble_rxzhongzhuandate));
 //    }
 //        if(lp_time>3)
-      if(HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE))  
-    {
-     Error_Handler();
-    }   
-    fangzhijinrushuimian_flag=1;
+//      if(HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE))  
+//    {
+//     Error_Handler();
+//    }   
+//    fangzhijinrushuimian_flag=1;
 //    HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
 //    HAL_UART_Transmit(&hlpuart1,ble_rxdate,2,1000);
     
-}
+//}
 extern uint8_t  yuyin_no_sleep_flag;
 extern uint8_t yuyin_sendflag;
 extern uint8_t xiafayuyin_data[200];
@@ -551,10 +555,14 @@
           }
       }
 }
+uint8_t only_one_flag;
 uint8_t gotosleep_flag;
 uint8_t usart5_state,flag_onesecond;
 void Jingzhi_Poll(void)
 {
+    if(only_one_flag==0)
+    {
+        only_one_flag=1;
           powerled=LEDOFF;
           loraled=LEDOFF;
           gpsled=LEDOFF;
@@ -571,6 +579,7 @@
 
           Set4LEDColor_Off(); //关led总电源
           chongqi_flag=1;
+    }
 }
 void OneSecondTask(void)
 {
@@ -601,9 +610,12 @@
 {
 if(recv_end_flag == 1)  //接收完成标志
 {
+    uint16_t i;
     recv_end_time=0;
-GPS_ParseGGA(GPS_GGAdate, rx_len);  
-memset(GPS_GGAdate,0,rx_len);
+    for(i=0;i<GPS_SIZE;i++)
+    {GPS_RecvFsm(GPS_GGAdate[i]);}
+//GPS_ParseGGA(GPS_GGAdate, rx_len);  
+memset(GPS_GGAdate,0,GPS_SIZE);
 rx_len = 0;//清除计数
 recv_end_flag = 0;//清除接收结束标志位
 fangzhijinrushuimian_flag=0;
@@ -639,22 +651,22 @@
   /* USER CODE END SysInit */
 
   /* Initialize all configured peripherals */
-  MX_GPIO_Init();
-  MX_DMA_Init();
-  MX_ADC_Init();
-//  MX_IWDG_Init();
-  MX_LPTIM1_Init();
-  MX_USART1_UART_Init();
-  MX_SPI1_Init();
-  MX_LPUART1_UART_Init();
-  MX_USART5_UART_Init();
+  MX_GPIO_Init();        //看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_DMA_Init();         //看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_ADC_Init();         //看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_LPTIM1_Init();      //看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_USART1_UART_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_SPI1_Init();        //看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_LPUART1_UART_Init();//看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_IWDG_Init();        //看门狗务必放到lp串口后面,否则GPS工作不正常。
+  MX_USART5_UART_Init(); //看门狗务必放到lp串口后面,否则GPS工作不正常。
   /* USER CODE BEGIN 2 */
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); //开GPS电源
     delay_ms(10);
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); //开uwb电源
     Program_Init();
 #ifdef _USE_BAR
-BarInit();
+//BarInit();
 #endif 
     Dw1000_Init();
     dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
@@ -692,16 +704,19 @@
       if(gotosleep_flag==1)
       {
           Jingzhi_Poll();
+          HAL_IWDG_Refresh(&hiwdg);
           HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
       }
       else
       {
+      HAL_IWDG_Refresh(&hiwdg);
       Lpuart_rx_Poll();
       OneSecondTask();
       IdleTask();	
       PowerDownDetect();
       Lora_Send_Poll();
       TTSchaxun_Busy();
+      LoraUp_Poll();
 //    #ifndef DEBUG_MODE	
 //    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))	
 //  {      
@@ -1261,9 +1276,9 @@
 }
 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
 {
-//    uint8_t pinlv;
+ if(chongqi_flag==0&&shengji_flag==0)
+ {
     SystemClock_Config();
-    HAL_IWDG_Refresh(&hiwdg);
 Set4LEDColor(powerled,loraled,gpsled,uwbled);
 Bat_Percent_Poll();
     if(state5v==0)
@@ -1296,7 +1311,8 @@
     gpsled=LEDOFF;
     uwbled=LEDOFF;
 Set4LEDColor_Off();
-//delay_ms(10);
+ }
+ HAL_IWDG_Refresh(&hiwdg);
 }
 /* USER CODE END 4 */
 

--
Gitblit v1.9.3