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