zhangbo
3 天以前 f39c69839382ee3890906e96211527dcb2eaeb51
keil/include/main/main.c
@@ -46,6 +46,8 @@
#define UWB_MEASUREMENT_INTERVAL 5
#define UWB_MEASUREMENT_INTERVAL_SLEEP 30
#define INACTIVE_TIMEOUT 30
extern uint8_t mUsartReceivePack[100];
extern uint8_t mUsart2ReceivePack[150];
extern uint8_t state5V_prase_flag,gps_prase_flag;
@@ -376,6 +378,7 @@
uint8_t input5v_time;
extern uint8_t taglist_num;
uint8_t gps_ntripsend;
extern uint8_t uwb_OpenClose_flag;
static void sleep_timer_callback(void *dev, uint32_t time)
{
// powerON_Task();
@@ -406,7 +409,7 @@
//        uart_send(UART_ID1, ceshidata, 50,NULL);
        }
        input5v_time=1;
        if(taglist_num==0&&g_com_map[UWBFrequency]==1&&g_com_map[UWBENBLE]==1)
        if(taglist_num==0&&g_com_map[UWBFrequency]==1&&g_com_map[UWBENBLE]==1&&uwb_OpenClose_flag==1)
        {
        CloseUWB();
        Uwb_init();
@@ -424,6 +427,57 @@
     delaysleep_count--;
}
#ifdef JIBU_XIUMIAN
uint16_t sleep_time=0;
uint32_t state_start_time_jibu=0;
uint8_t exercise_state=0;
uint32_t step_count = 0;      // 步数计数
uint32_t last_step_count = 0; // 上一次步数
void check_step_and_update_state(void)
{
    if ((step_count != last_step_count))
      {
        // 步数有变化,重置状态为正常状态
      last_step_count = step_count;
         if(current_state == STATE_SLEEP)
         {
            state_start_time_jibu = uwb_time_count;
            state_start_time=uwb_time_count;
         }
//         if (current_state != STATE_NORMAL)
//            {
//            // 关闭可能正在运行的UWB
//            if (uwb_is_on) {
//                CloseUWB();
//                UWB_LED_OFF;
//                uwb_is_on = false;
//            }
//            current_state = STATE_NORMAL;
//            state_start_time = uwb_time_count; // 重置测距周期
//        }
         current_state = STATE_NORMAL;
         exercise_state=1;
         last_step_count = step_count;
    }
      else
      {
        // 步数没有变化,检查是否需要切换到休眠状态
        if (current_state == STATE_NORMAL)
               {
            uint32_t inactive_time = uwb_time_count - state_start_time_jibu;
            if (inactive_time >= INACTIVE_TIMEOUT)
                  { // 30秒后切换到休眠状态
                current_state = STATE_SLEEP;
                       exercise_state=2;
                       state_start_time_jibu=uwb_time_count;
            }
          }
     }
}
#endif
static void pca_handler(enum IO_PIN_T pin)
{
   PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值
@@ -535,7 +589,7 @@
//      }
    g_com_map[MODBUS_MODE] = 0;
      log_4g_enable_flag=g_com_map[LOG_4G_ENABLE];
    g_com_map[VERSION] = (1<<8)|22;
    g_com_map[VERSION] = (1<<8)|24;
          
        
    LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
@@ -754,10 +808,11 @@
extern uint32_t uwb_time_count;
uint8_t GPS_UPLOAD_FLAG=0;
uint32_t elapsed_time_jibu;
extern uint8_t uwb_OpenClose_flag;
void upload_apppoll()
{   
    if(current_state==STATE_NORMAL)
    if(current_state==STATE_NORMAL&&uwb_OpenClose_flag==1)
    {
        if(g_com_map[UWBFrequency]>1)
        {
@@ -779,10 +834,10 @@
        else
        {}
    }
    else if(current_state==STATE_SLEEP)
    else if(current_state==STATE_SLEEP&&uwb_OpenClose_flag==1)
    {
            elapsed_time_jibu = uwb_time_count - state_start_time;
            switch(elapsed_time_jibu==1)
            switch(elapsed_time_jibu)
            {
            case UWB_OPEN_COUNT:
                CloseUWB();
@@ -916,7 +971,7 @@
    wdt_open(WDT_ID0,&app_wdt_cfg);//30s检测喂狗
    LED_output_init();//配置彩色灯引脚
    PCA9555_Set_One_Value_Output(TTS_ENABLE,1);
    WT588E02B_Init();
    adc_open(&usr_adc_cfg);
    uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
@@ -970,5 +1025,6 @@
        }
          IMUTask();
        IdleTask();
            check_step_and_update_state();
    }
}