From 4936a48d23b9aef4ef44e4cf333e75cb8d49e37c Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 27 二月 2025 15:02:54 +0800
Subject: [PATCH] 2.15,加入写入参数时候,如果没擦除成功会一直擦除的机制,最多200次  不成功就重启。

---
 Src/application/global_param.c |   70 ++++++++++++++++++++++++++++-------
 1 files changed, 56 insertions(+), 14 deletions(-)

diff --git a/Src/application/global_param.c b/Src/application/global_param.c
index c0c0d96..13f7acd 100644
--- a/Src/application/global_param.c
+++ b/Src/application/global_param.c
@@ -5,13 +5,56 @@
 
 uint16_t g_com_map[COM_MAP_SIZE];
 
-
+u8 parameter_check(void)
+{
+    if(g_com_map[0] != 0x55AA)
+    {
+        return 1;
+    }
+    if(g_com_map[COM_INTERVAL]<50||COM_INTERVAL>1000)
+    {
+        return 1;
+    }
+    if(g_com_map[POWER]>67)
+    {
+        return 1;
+    }
+    if(g_com_map[MOTOR_ENABLE]>1)
+    {
+        return 1;
+    }
+    if(g_com_map[IMU_ENABLE]>1)
+    {
+        return 1;
+    }
+    if(g_com_map[ACTIVE_INDEX]>1)
+    {
+        return 1;
+    }
+    return 0;
+}
+uint8_t resultnum;
 uint32_t save_com_map_to_flash(void)
 {
 	uint32_t result = 0;
-
+    resultnum=0;
+    if(parameter_check()) //参数错误,不保存
+    {
+        return 1;
+    }
 	__disable_irq();
+    while(1)
+    {
 	result = FLASH_Prepare(FLASH_IAP_CTRL_MAP, (COM_MAP_SIZE<<1));
+        if(result)
+        {break;}
+        else
+        {resultnum++;}
+        if(resultnum>200)
+        {
+        HAL_NVIC_SystemReset();
+        }
+    }
 	if(result)
 		result = FLASH_Write(FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, (COM_MAP_SIZE<<1)); 
 	__enable_irq();
@@ -25,33 +68,32 @@
 	if(g_com_map[0] != 0x55AA)
 	{
 		g_com_map[0] = 0x55AA;
-		g_com_map[DEV_ID] =0x04;//DEFAULT_DEV_ID;	//默认设备ID
+		g_com_map[DEV_ID] =0x1234;//DEFAULT_DEV_ID;	//默认设备ID
 
-		g_com_map[COM_INTERVAL]=500;
+		g_com_map[COM_INTERVAL]=500;   //频率2HZ
 		g_com_map[MAX_REPORT_ANC_NUM]=10;
 		g_com_map[GROUP_ID]=0;
 		g_com_map[DIST_OFFSET]=-31;
 		
 		g_com_map[DEV_ROLE] =0x1;  //标签
 
-		g_com_map[NEARBASE_NUM]=0;
-		g_com_map[ANC_POLL]=0;
-		g_com_map[ALARM_DEV] = 0;
-		g_com_map[ALARM_DISTANCE1] = 0;	//默认报警距离50cm
-		g_com_map[ALARM_DISTANCE2] = 0;	//默认报警距离50cm
-		g_com_map[ALARM_DISTANCE3] = 0;	//默认报警距离50cm
+	
 		g_com_map[HEARTBEAT]=0;
 		
-		g_com_map[POWER]=67;
+		g_com_map[POWER]=67;    //发射功率
 		g_com_map[IMU_THRES]=2;
-		g_com_map[NOMOVESLEEP_TIME]=120;
-		g_com_map[MOTOR_ENABLE]=1;
-		g_com_map[IMU_ENABLE]=1;
+		g_com_map[NOMOVESLEEP_TIME]=120;   //静止休眠2分钟
+		g_com_map[MOTOR_ENABLE]=1;       //震动电机使能
+		g_com_map[IMU_ENABLE]=1;        //静止休眠使能
 		
+        g_com_map[UWB_ONFLAG]=1;
 		g_com_map[CNT_RESTART]=0;
 		g_com_map[CNT_REBOOT]=0;
 		g_com_map[CNT_UPDATE]=0;
 		g_com_map[MODBUS_MODE]=0;
+		g_com_map[ACTIVE_INDEX]=0;
+		g_com_map[STATIONARY_TIME]=20;       //静止判定时间20秒
+        g_com_map[HEIGHTOFFEST_INDEX]=0;
 		save_com_map_to_flash();
 	}	
 }

--
Gitblit v1.9.3