yincheng.zhong
2023-06-03 4bdcef16fd860b674793c435288ed3afb50ddabe
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)