From 83543cdc379fce99175e3b15936c97a49fe73bfa Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期一, 04 三月 2024 16:02:54 +0800
Subject: [PATCH] Merge branch '免布线标签-lora-泰斗GPS' of http://47.108.70.204:60062/r/XRange_Tag into 免布线标签-lora-泰斗GPS

---
 Src/main.c |  160 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 135 insertions(+), 25 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index 2494c10..2bf19a4 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -38,11 +38,12 @@
 #include <stdlib.h>
 #include <Lora.h>
 #include "radio.h"
+#include "dps310.h"
 #include "dw_mbx_tag.h"
 #define NSH1 0x0001
 #define GP   0x0002
 #define FLASH_HARDWARE_VERSION_MAP		(uint32_t)0x08004F00    //硬件版本号和批次信息位置
-#define DEBUG_MODE
+//#define DEBUG_MODE
 UART_WakeUpTypeDef Selection;
 /* USER CODE END Includes */
 
@@ -99,6 +100,7 @@
 
 /* Private user code ---------------------------------------------------------*/
 /* USER CODE BEGIN 0 */
+void LedTask(void);
 uint32_t dev_id;
 uint16_t heartbeat_timer,poll_timer,sync_timer;
 uint8_t aRxBuffer[1],group_id;
@@ -246,17 +248,18 @@
     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)|3;
+    g_com_map[VERSION] = (1<<8)|6;
 //    g_com_map[DEV_ID]=1158;
-    g_com_map[GROUP_ID]=5;
+    g_com_map[GROUP_ID]=1;
 //    g_com_map[COM_INTERVAL] = 1000;
     if(g_com_map[COM_INTERVAL]<1000)
     {
         g_com_map[COM_INTERVAL] = 1000;
     }
+    g_com_map[STATIONARY_TIME] = 10;
     active_flag = g_com_map[ACTIVE_INDEX];
     module_power = g_com_map[POWER];
-    g_com_map[IMU_ENABLE] = 0;
+//    g_com_map[IMU_ENABLE] = 0;
     imu_enable=g_com_map[IMU_ENABLE];
     motor_enable=g_com_map[MOTOR_ENABLE];
 
@@ -449,6 +452,42 @@
         flag_onesecond = 0;
     }
 }
+uint8_t Lora_send_flag;
+void Lora_Send_Poll(void)
+{
+        if(Lora_send_flag)
+        {
+        Lora_send_flag=0;    
+        LedTask();
+        LoraReportPoll();
+        flag_onesecond = 1;
+        
+    LED_TB_OFF;
+    LED_TR_OFF;
+    LED2_TB_OFF;
+    LED2_TR_OFF;    
+        }
+#ifndef DEBUG_MODE
+        if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&imu_enable)
+        {
+            if(sleep_flag==0)
+            {
+                Radio.Standby();
+                Radio.Sleep();
+                sleep_flag = 1;
+            }
+
+        } else {
+            if(sleep_flag)
+            {
+                SCB->AIRCR = 0X05FA0000|(unsigned int)0x04;
+            }
+
+        }
+        
+#endif
+}
+
 /* USER CODE END 0 */
 
 /**
@@ -479,14 +518,13 @@
 
     /* Initialize all configured peripherals */
     MX_GPIO_Init();
-    
     MX_USART1_UART_Init();
     MX_SPI1_Init();
     MX_ADC_Init();
-    
-//  MX_IWDG_Init();
+// MX_DMA_Init();
+    MX_IWDG_Init();
     MX_TIM2_Init();
-   // MX_LPUART1_UART_Init();
+    MX_LPUART1_UART_Init();
     MX_LPTIM1_Init();
     /* USER CODE BEGIN 2 */
     LED2_TB_ON;
@@ -503,10 +541,13 @@
     Delay_Ms(10);
     usart_send[0]=0x55;
     usart_send[1]=0xaa;
-    bat_percent=Get_VDDVlotage();
+
     HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); //开GPS电源
     LoraInit();
+#ifdef _USE_BAR
+    BarInit();
+#endif
 //    Delay_Ms(1000);
 //    HAL_UART_Transmit(&hlpuart1,Close_RMC,22,1000);
 //    HAL_UART_Transmit(&hlpuart1,Close_GSA,22,1000);
@@ -529,10 +570,10 @@
 //    HAL_IWDG_Refresh(&hiwdg);
         OneSecondTask();
         IdleTask();
-
+        Lora_Send_Poll();
 #ifndef DEBUG_MODE
-if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))				
-                    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
+        if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
+            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
 #endif
 
     }
@@ -620,7 +661,7 @@
     hadc.Init.OversamplingMode = DISABLE;
     hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
     hadc.Init.Resolution = ADC_RESOLUTION_12B;
-    hadc.Init.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
+    hadc.Init.SamplingTime = ADC_SAMPLETIME_160CYCLES_5;
     hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;
     hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     hadc.Init.ContinuousConvMode = DISABLE;
@@ -639,7 +680,7 @@
     }
     /** Configure for the selected ADC regular channel to be converted.
     */
-    sConfig.Channel = ADC_CHANNEL_VREFINT;
+    sConfig.Channel = ADC_CHANNEL_1;
     sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
     if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
     {
@@ -1026,44 +1067,113 @@
     /*Enter the Standby mode*/
     HAL_PWR_EnterSTANDBYMode();
 }
+
 extern uint8_t tx_near_msg[80];
 float key_keeptime;
 extern float freqlost_count,range_lost_time;
 extern uint8_t lora_yingda_flag;
 extern uint32_t wg_lost_count;
-uint8_t lora_yingdatime;
+uint8_t lora_yingdatime,gotosleep_flag,sleep_flag;
 extern uint8_t lora_chongfuyingda_flag,report_ancnum;
 uint16_t no_data_chongqi_num;
 uint16_t anchor_send_num;
-uint8_t no_yingdatime;
+uint8_t no_yingdatime,tflag1,tflag2;
+extern uint16_t tagdist_list[ANC_MAX_NUM];
 void LedTask(void)
 {
     if(report_ancnum>0)
     {
         LED2_TB_ON;
+#ifdef _SMT_TEST
+        tflag1 = 1;
+        printf("测距值%d\r\n",tagdist_list[0]);
+#endif
     }
-   // if(wg_lost_count<=1)
+    if(wg_lost_count<=1)
     {
+#ifdef _SMT_TEST
+        tflag2 = 1;
+        printf("网关通讯正常\r\n");
+#endif
         LED_TB_ON;
     }
     if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
         if(bat_percent<15)
         {
             LED_TR_ON;
+        } else {
+            LED2_TB_ON;
         }
-    
+
 }
 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
 {
 //    uint8_t pinlv;
     SystemClock_Config();
-    LedTask();
-    LoraReportPoll();
-    flag_onesecond = 1;
-    LED_TB_OFF;
-    LED_TR_OFF;
-    LED2_TB_OFF;
-    LED2_TR_OFF;
+    HAL_IWDG_Refresh(&hiwdg);
+    if(active_flag==0)  //未激活状态
+    {
+        if(!GET_USERKEY)
+        {
+            LED_TB_ON;
+            key_keeptime+=1;
+            if(key_keeptime>3)
+            {
+                u8 i=250,keystate=1;
+                while(i--)
+                {
+                    if(i%10==0)
+                    {
+                        LED_TB_BLINK;
+                    }
+                    if(GET_USERKEY)
+                    {
+                        keystate = 0;
+                    }
+                    if(keystate==0&&!GET_USERKEY)
+                    {
+                        parameter_init();
+                        g_com_map[ACTIVE_INDEX] = 1;
+                        save_com_map_to_flash();
+                        delay_ms(100);
+                        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
+                    }
+                    delay_ms(10);
+                }
+            }
+        } else {
+            //	LED_LG_OFF;
+            key_keeptime=0;
+        }
+
+    } else {
+        if(!sleep_flag)
+        {
+        Lora_send_flag=1;
+        if(nomove_count++>g_com_map[STATIONARY_TIME])
+        {
+            stationary_flag = 1;
+        } else {
+            stationary_flag = 0;
+        }
+        if(nomove_count>=g_com_map[NOMOVESLEEP_TIME]-1&&imu_enable)
+        {
+            gotosleep_flag=1;
+        } else {
+            gotosleep_flag=0;
+        }
+    }
+    }
+    if(!GET_USERKEY)    //长按重启逻辑
+    {
+        key_keeptime+=1;
+        if(key_keeptime>=KEY_KEEPRESET_TIME)
+        {
+            SCB->AIRCR = 0X05FA0000|(unsigned int)0x04;
+        }
+    } else {
+        key_keeptime=0;
+    }
 }
 /* USER CODE END 4 */
 

--
Gitblit v1.9.3