WXK
2025-03-12 3ec132c58bc4130f79390cebca35c176173cb67c
keil/include/main/main.c
@@ -135,7 +135,7 @@
    .flow = UART_FLOW_CONTROL_NONE,
    .rx_level = UART_RXFIFO_CHAR_1,
    .tx_level = UART_TXFIFO_EMPTY,
    .baud = BAUD_9600,
    .baud = BAUD_115200,
#if (TEST_UART_MODE == TEST_UART_POLL_MODE)
    .dma_en = false,
    .int_rx = false,
@@ -166,7 +166,7 @@
                     sleep_timer_stop();   
                  //adc_close();
            power_enter_power_down_mode(1);
                  //LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n");
                  LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n");
                  sys_reset(0);
            int_unlock(lock);
}
@@ -254,8 +254,11 @@
              Set4LEDColor(uwbled,rtkled,led4g,powerled);
            delay_ms(500);
            keystarttime =  HIDO_TimerGetTick();
            PCA9555_Set_One_Value_Output(PWR_ENABLE,0);//低电平关闭
            PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED
            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);
            PCA9555_Set_One_Value_Output(GPS_POWER,0);//关GPS
            PCA9555_Set_One_Value_Output(PWR_ENABLE,0);//低电平关闭
        }
//        if(HIDO_TimerGetTick() - keystarttime2>10)
//        {
@@ -309,9 +312,9 @@
        second_count = 0;
        MinuteTask();
    }
//    //UWB状态检测
//if(!power_low_flag)//低供电下不需要检测重连
//   {
    //UWB状态检测
if(!power_low_flag)//低供电下不需要检测重连
   {
    if(IfTCPConnected())
    {
        TCP_reconnect_timer =0;
@@ -329,7 +332,7 @@
        }
    }
//   }
   }
    HIDO_TimerTick();
//      if(nomove_count<=g_com_map[NOMOVESLEEP_TIME])//防止溢出
    nomove_count++;
@@ -340,10 +343,13 @@
uint8_t tt=1;
uint8_t flag_sleeptimer,flag_secondtask,secondtask_count,log_4g_enable_flag;
uint8_t uwb_enable_flag=0;
uint8_t input5v_time;
extern uint8_t taglist_num;
static void sleep_timer_callback(void *dev, uint32_t time)
{
if(secondtask_count++%2==0)
    {
    {
        input5v_time=1;
        flag_secondtask = 1;
        if(!read_5v_input_pca())
        {
@@ -357,29 +363,41 @@
//        ledontime=HIDO_TimerGetTick();
        Set4LEDColor(uwbled,rtkled,led4g,powerled); 
        }
        input5v_time=1;
        if(taglist_num==0)
        {
        CloseUWB();
        Uwb_init();
        OpenUWB();
        }
    }else{
        flag_secondtask = 0;
    }
 if(delaysleep_count>0)
     delaysleep_count--;
}
uint8_t test11,test21,test31,test41,test51;
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))
   {
       flag_4G_recdata = 1;
     delaysleep_count = 3;
   }
//   if(!(MAIN_RI_POSITION&gpio_state))
//   {
//       flag_4G_recdata = 1;
//     delaysleep_count = 3;
//        test21++;
//   }
    if((PWR_ON_POSITION&gpio_state))
   {
        PowerTask();
        test31++;
   }
}
@@ -397,6 +415,7 @@
    Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为
    parameter_init_anchor();//g_com_map表初始化角色默认为基站
    dev_id=g_com_map[DEV_ID];//这里不太对
    g_com_map[GROUP_ID]=9;
    group_id=g_com_map[GROUP_ID];//组ID
//    tag_frequency = 1000/g_com_map[COM_INTERVAL];//测距频率这个存的是测距时间
    memcpy(&disoffset,&g_com_map[DIST_OFFSET],2);
@@ -429,7 +448,7 @@
    ip2 = (g_com_map[TCP_IP_2]>>12&0xf)*1000+(g_com_map[TCP_IP_2]>>8&0xf)*100+(g_com_map[TCP_IP_2]>>4&0xf)*10+(g_com_map[TCP_IP_2]&0xf);
    ip3 = (g_com_map[TCP_IP_3]>>12&0xf)*1000+(g_com_map[TCP_IP_3]>>8&0xf)*100+(g_com_map[TCP_IP_3]>>4&0xf)*10+(g_com_map[TCP_IP_3]&0xf);
    port = g_com_map[TCP_PORT];
    g_com_map[VERSION] = (1<<8)|0;
    g_com_map[VERSION] = (1<<8)|3;
    LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
    LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
    LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port);
@@ -451,39 +470,54 @@
                uart1_change_from_gps_to_debug();//测试
                PCA9555_Set_One_Value_Output(MCU_A,1);//输出高电平切换为5V输入
            } 
//            chongman_time=0;
//            only_one_flag=0;
//            uwbled=0;
//            rtkled=0;
//            led4g=0;
//            powerled=0;
//            while(read_5v_input_pca())
//            {
//                nomove_count = 0;
//                if(HIDO_TimerGetTick()-adctick>6000)  //10分钟采样一次 电量
//                {
//                    chongman_time=chongman_time+6;
//                    adctick = HIDO_TimerGetTick();
//                    PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
//                    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
//                }
//                if(bat_percent>=99&&!only_one_flag)
//                {
//                only_one_flag=1;
//                chongman_time=0;
//                }
//                if(bat_percent>=99&&chongman_time>=1800)
//                {
//                    powerled = GREEN;
//                }else{
//                    powerled = RED;
//                }
//                UART_CheckReceive();
//                delay_ms(100);
//                Internet_Poll();
//                Set4LEDColor(0,0,0,powerled);
//            }
//            NVIC_SystemReset();
            chongman_time=0;
            only_one_flag=0;
            uwbled=0;
            rtkled=0;
            led4g=0;
            powerled=0;
//            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);
            while(1)
            {
                nomove_count = 0;
                if(HIDO_TimerGetTick()-adctick>6000)  //10分钟采样一次 电量
                {
                    chongman_time=chongman_time+6;
                    adctick = HIDO_TimerGetTick();
                    PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
                    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
                }
                if(bat_percent>=99&&!only_one_flag)
                {
                only_one_flag=1;
                chongman_time=0;
                }
                if(bat_percent>=99&&chongman_time>=1800)
                {
                    powerled = GREEN;
                }else{
                    powerled = RED;
                }
                UART_CheckReceive();
                Internet_Poll();
                HIDO_TimerPoll();
                HIDO_ATLitePoll();
                TCPClient_Poll();
                if(flag_secondtask)
                {
                    flag_secondtask = 0;
                    SecondTask();
                }
                Set4LEDColor(0,0,0,powerled);
                if(input5v_time)
                {
                if(!read_5v_input_pca())
                {
                break;
                }
                }
            }
            NVIC_SystemReset();
            input5vflag=1;
      }
        else 
@@ -519,6 +553,10 @@
        if(ledonflag==1)
        {
        ledonflag=0;
        uwbled=0;
        rtkled=0;
        led4g=0;
        powerled=0;
        Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF); 
        }
}
@@ -540,7 +578,7 @@
int tt2;
int test1,test3;
uint32_t test4;
extern uint8_t receive_flag;
int main(void)
{
    board_clock_run();
@@ -579,10 +617,10 @@
    Internet_Init();
    TCPClient_Init();
    gpio_open();
      LED_output_init();//配置彩色灯引脚
      IIC2_Init();
    LED_output_init();//配置彩色灯引脚
    IIC2_Init();
    Accelerometer_Init();
      PCA9555_init();
    PCA9555_init();
 
      
      //AIR780E_Reset(); 
@@ -619,10 +657,14 @@
      //board_4GUsart_detection_init(_4gUsart_handler);
      Uwb_init();
      OpenUWB();
//                        state5v=1;
//                state5V_prase_flag=state5v;
//                gps_prase_flag=0;//解除gps解析
//                uart1_change_from_gps_to_debug();//测试
//                PCA9555_Set_One_Value_Output(MCU_A,1);//输出高电平切换为5V输入
    while (1)
    { 
      uwb_app_poll();
//      Air780eTask();
        Internet_Poll();
        HIDO_TimerPoll();
        HIDO_ATLitePoll();