From 4bdcef16fd860b674793c435288ed3afb50ddabe Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期六, 03 六月 2023 11:38:07 +0800
Subject: [PATCH] V2.17 Z增加参数保护,有bug

---
 Src/main.c |   69 +++++++++++++++++++++-------------
 1 files changed, 42 insertions(+), 27 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index 3ef08be..116c43e 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -137,6 +137,7 @@
 u16 current_time;
 float motor5s_timer=1000;
 uint8_t state5v,motorskip_flag;
+extern uint8_t outside_count;
 void IdleTask(void)
 {
 	
@@ -158,21 +159,22 @@
     //motor_state = 1;
 if(g_com_map[MOTOR_ENABLE])
 {
-    static u8 motor5s_state = 0;
+   static u8 motor5s_state = 0;
     if(motorskip_flag==0)
     {
-        if(motor_state==1)
+        if(motor_state==2)
         { 
+            
             if(motor5s_state)
             {
-                if(motor5s_timer>4)
+                if(motor5s_timer>2)
                 {
                     motor5s_timer = 0;
                     motor5s_state = 0;
                     JianXieMotorProcess();
                 }
             }else{           
-                if(motor5s_timer>300)
+                if(motor5s_timer>30)
                 {
                     motor5s_timer = 0;
                     motor5s_state = 1;
@@ -180,11 +182,14 @@
                 } 
             }
         }else{
-            motor5s_state = 1;
-            motor5s_timer = 0;     
+            if(outside_count>3&&motor5s_state)
+            {
+                motor5s_state = 0;
+                motor5s_timer = 0;  
+            }                
         }
     }else{
-        if(motor5s_timer>7200)  //2个小时 7200
+        if(motor5s_timer>7200)  //2??? 7200
         {
            motorskip_flag = 0;
            motor5s_timer = 1000; 
@@ -262,14 +267,11 @@
 //	}
 }
 
-		if(g_com_map[CNT_RESTART]==1)
+	if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
 		{
-			g_com_map[CNT_RESTART]=0;
-			save_com_map_to_flash();
-			delay_ms(100);
 				SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
 		}
-			if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
+         if(memcmp(g_com_map,g_com_map2,(COM_MAP_SIZE<<1))!=0)
 		{
 				SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
 		}
@@ -310,12 +312,12 @@
 	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] = (2<<8)|4;
-    
+	g_com_map[VERSION] = (2<<8)|17;
+    g_com_map2[VERSION] = g_com_map[VERSION];
 //	g_com_map[DEV_ID]=0x7;
 #ifdef DEBUG_MODE
 //	g_com_map[DEV_ROLE]=1;
-		g_com_map[DEV_ID]=0x4009;
+//		g_com_map[DEV_ID]=0x4009;
 //    g_com_map[ACTIVE_INDEX]=1;
 //	g_com_map[COM_INTERVAL]=50;
 //	g_com_map[MAX_REPORT_ANC_NUM]=1;
@@ -327,13 +329,13 @@
 //	g_com_map[IMU_ENABLE]=0;
 //	 g_com_map[COM_INTERVAL]=50;
 	active_flag = g_com_map[ACTIVE_INDEX];
-	if(active_flag==0)
-	{   
-        g_com_map[COM_INTERVAL]=1000;
-		g_com_map[IMU_ENABLE]=1;
-		g_com_map[NOMOVESLEEP_TIME]=10;
-		g_com_map[MOTOR_ENABLE]=0;
-	}
+//	if(active_flag==0)
+//	{   
+//        g_com_map[COM_INTERVAL]=1000;
+//		g_com_map[IMU_ENABLE]=1;
+//		g_com_map[NOMOVESLEEP_TIME]=10;
+//		g_com_map[MOTOR_ENABLE]=0;
+//	}
 //g_com_map[HEIGHTOFFEST_INDEX]=g_com_map[MAX_REPORT_ANC_NUM];
 	module_power = g_com_map[POWER];
 	imu_enable=g_com_map[IMU_ENABLE];
@@ -443,6 +445,7 @@
   MX_ADC_Init();
   //MX_TIM2_Init();
   /* USER CODE BEGIN 2 */
+  printf("启动时间:%d\r\n",HAL_GetTick());
 	LED_LG_ON;
 	Program_Init();
 	Accelerometer_Init();	
@@ -540,7 +543,7 @@
   /** Configure LSE Drive Capability
   */
   HAL_PWR_EnableBkUpAccess();
-  __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
+  __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH);
   /** Initializes the RCC Oscillators according to the specified parameters
   * in the RCC_OscInitTypeDef structure.
   */
@@ -886,11 +889,11 @@
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(BAT_MEAS_GND_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pin : USER_KEY_Pin */
-  GPIO_InitStruct.Pin = USER_KEY_Pin;
+  /*Configure GPIO pins : USER_KEY_Pin PB14 */
+  GPIO_InitStruct.Pin = USER_KEY_Pin|GPIO_PIN_14;
   GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
   GPIO_InitStruct.Pull = GPIO_PULLUP;
-  HAL_GPIO_Init(USER_KEY_GPIO_Port, &GPIO_InitStruct);
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
   /*Configure GPIO pin : INPUT_5V_Pin */
   GPIO_InitStruct.Pin = INPUT_5V_Pin;
@@ -921,6 +924,9 @@
   /* EXTI interrupt init*/
   HAL_NVIC_SetPriority(EXTI0_1_IRQn, 1, 0);
   HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
+
+  HAL_NVIC_SetPriority(EXTI4_15_IRQn, 1, 0);
+  HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
 
 }
 
@@ -964,6 +970,7 @@
     tagslotpos = current_slotpos%200;
     flag_tagnewpos = 0;
 }
+uint16_t motorkeeptime_u16,last_motorkeep;
 float lptimedelay=0;
 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
 {
@@ -995,6 +1002,12 @@
 	if(motor_keeptime>0)
 	{	
         motor_keeptime-=lptimedelay;
+        motorkeeptime_u16 = motor_keeptime;
+        if(motorkeeptime_u16%3==0&&motorkeeptime_u16!=last_motorkeep)
+        {
+            last_motorkeep=motorkeeptime_u16;
+            JianXieMotorProcess();
+        }
 	}
     if(motor_keeptime<0)
     {motor_keeptime = 0;}
@@ -1019,6 +1032,7 @@
 			{
 				parameter_init();
 				g_com_map[ACTIVE_INDEX] = 1;
+                g_com_map2[ACTIVE_INDEX] = 1;
 				save_com_map_to_flash();
 				delay_ms(100);
 				SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
@@ -1033,11 +1047,12 @@
 		
 	}
 
-	if(!GET_USERKEY)
+	if(!GET_USERKEY||!HAL_GPIO_ReadPin(USER_KEY_GPIO_Port,GPIO_PIN_14))
 	{
 		key_keeptime+=lptimedelay;
         if(key_keeptime>=3)
 		{
+            JianXieMotorProcess();
 			userkey_state = 1; 
 		}
 		if(key_keeptime>=KEY_KEEPRESET_TIME)

--
Gitblit v1.9.3