zhangbo
2025-04-16 e9fc03943f7a429c6c9d0e7123ba637f317805be
keil/include/main/main.c
@@ -39,6 +39,10 @@
#define WARING_LIMIT_TIME 10
#define UPDATE_TIME 10
//室内外阈值
#define XINGHAOQIANGDU_VALUE 100
#define WEIXINGSHULIANG_VALUE 5
extern uint8_t mUsartReceivePack[100];
extern uint8_t mUsart2ReceivePack[150];
@@ -96,7 +100,7 @@
    .flow = UART_FLOW_CONTROL_NONE,
    .rx_level = UART_RXFIFO_CHAR_1,
    .tx_level = UART_TXFIFO_EMPTY,
    .baud = BAUD_115200,
    .baud = BAUD_9600,
#if (TEST_UART_MODE == TEST_UART_POLL_MODE)
    .dma_en = false,
    .int_rx = false,
@@ -121,10 +125,12 @@
            trace_flush();
            lock = int_lock();
//                  LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n");
//                  gps_air780_power_change(0,0);//关闭gps,4G
             PCA9555_Set_One_Value_Output(MAIN_RI,1);
             PCA9555_Set_One_Value_Output(MAIN_RI,1);
            PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G 
            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G
                     sleep_timer_stop();
             PCA9555_Set_One_Value_Output(LED_POWER,0);//关闭DENG
            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G
                  sleep_timer_stop();
                  //adc_close();
            power_enter_power_down_mode(1);
//                  LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n");
@@ -176,8 +182,9 @@
uint32_t ledontime;
void IMUTask(void)
{
   if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==2)
   {//power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH);
   if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1)
   {
      power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
      mcu_deep_sleep();
   }
}
@@ -280,7 +287,7 @@
//extern uint8_t ceshidata[500];
extern uint8_t ceshichangdu;
uint8_t gps_ntripsend;
extern uint8_t in_the_room_flag;
extern uint8_t lounei_flag;
extern uint16_t g_spsum_GSV,g_snum_GSV;
extern uint16_t g_spsum_GSV_sum;
@@ -288,11 +295,13 @@
extern uint8_t ceju_leave_flag;
extern uint8_t fixed_solution_count_minute;
uint8_t open_gps_time=0;
uint16_t uwb_time_count=0;
static void sleep_timer_callback(void *dev, uint32_t time)
{
if(secondtask_count++%2==0)
    {  
        open_gps_time++;
        open_gps_time++;
        uwb_time_count++;
        input5v_time=1;
        flag_secondtask = 1;
        if(!read_5v_input_pca())
@@ -316,34 +325,36 @@
//        OpenUWB();
        }
//            in_the_room_flag=1;   
      if(30<open_gps_time<90)
      if(30<open_gps_time&&open_gps_time<=90)
         {
         Receive_g_spsum_Data(g_spsum_GSV);
         Receive_g_snum_Data(g_snum_GSV);
         Receive_g_snum_Data(g_snum_GSV);
         if((g_spsum_GSV_sum<XINGHAOQIANGDU_VALUE||g_snum_GSV_sum<WEIXINGSHULIANG_VALUE)&&(fixed_solution_count_minute<30))
         {
         lounei_flag=1;
         }
         if((XINGHAOQIANGDU_VALUE<g_spsum_GSV_sum&&WEIXINGSHULIANG_VALUE<g_snum_GSV_sum)&&(fixed_solution_count_minute>30))
         {
         lounei_flag=0;
         }
         }
         if(open_gps_time>90)
         {
         if(ceju_leave_flag==1)
         {
         Receive_g_spsum_Data(g_spsum_GSV);
         Receive_g_snum_Data(g_snum_GSV);
         if(open_gps_time>90)
         {
          open_gps_time=90;
//         if((g_spsum_GSV_sum<200&&g_snum_GSV_sum<3)&&(fixed_solution_count_minute<30||fixed_solution_count_minute==0))
         if((g_spsum_GSV_sum<300||g_snum_GSV_sum<20)&&(fixed_solution_count_minute<30))
         if((g_spsum_GSV_sum<XINGHAOQIANGDU_VALUE||g_snum_GSV_sum<WEIXINGSHULIANG_VALUE)&&(fixed_solution_count_minute<30))
         {
         lounei_flag=1;
//         Switch_low_power_mode(lounei_flag);
         }
         if((400<g_spsum_GSV_sum&&10<g_snum_GSV_sum)&&(fixed_solution_count_minute>30))
//         if((200<g_spsum_GSV_sum&&3<g_snum_GSV_sum)&&(ceju_leave_flag==1))
         if((XINGHAOQIANGDU_VALUE<g_spsum_GSV_sum&&WEIXINGSHULIANG_VALUE<g_snum_GSV_sum)&&(fixed_solution_count_minute>30))
         {
         lounei_flag=0;
//         Switch_low_power_mode(lounei_flag);
         }
         }
         if(heart_upload_time==60)
         {
         ceju_leave_flag=0;
@@ -355,29 +366,33 @@
         }
         if(heart_upload_time==0||heart_upload_time==60)
         {
            TCPHeartBeatUpload();
            heart_upload_time=0;
         }
         heart_upload_time++;
         }
      }
         if(open_gps_time>149&&lounei_flag==1)
         {
         if(open_gps_time-90==60)
         {
            open_gps_time=90;
            TCPHeartBeatUpload();
         }
         
   
         }
      uwb_app_poll();
    }else{
        flag_secondtask = 0;
    }
      else
      {
       flag_secondtask = 0;
    }
    if(gps_ntripsend==1)
    {
 gps_ntripsend=2;
     gps_ntripsend=2;
    }
 if(delaysleep_count>0)
     delaysleep_count--;
@@ -386,25 +401,26 @@
static void pca_handler(enum IO_PIN_T pin)
{
   PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值
   uint16_t gpio_state;
   gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
    test41++;
   if(WAKE_UP_POSITION&gpio_state)
   {
      nomove_count=0;
        test11++;
   }
//   if(!(MAIN_RI_POSITION&gpio_state))
   check_input_change();
//   uint16_t gpio_state;
//   gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
//    test41++;
//   if(WAKE_UP_POSITION&gpio_state)
//   {
//       flag_4G_recdata = 1;
//     delaysleep_count = 3;
//        test21++;
//      nomove_count=0;
//        test11++;
//   }
    if((PWR_ON_POSITION&gpio_state))
   {
        PowerTask();
        test31++;
   }
////   if(!(MAIN_RI_POSITION&gpio_state))
////   {
////       flag_4G_recdata = 1;
////     delaysleep_count = 3;
////        test21++;
////   }
//    if((PWR_ON_POSITION&gpio_state))
//   {
//        PowerTask();
//        test31++;
//   }
}
void _4gUsart_handler(enum IO_PIN_T pin)
@@ -699,7 +715,7 @@
    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
    pca_input_detection_init(pca_handler);//pca检测输入
    Uwb_init();
//    OpenUWB();
    OpenUWB();
//    DBG_SetMode(DBG_MODE_SHELL);
//    Shell_Init();
@@ -719,7 +735,7 @@
                PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
    while (1)
    { 
           uwb_app_poll();
        Internet_Poll();
        HIDO_TimerPoll();
        HIDO_ATLitePoll();