WXK
2025-03-26 adf39f48b3c6a26db6a8c8ccb455c6addb8dc359
keil/include/main/main.c
@@ -416,24 +416,8 @@
        
        
    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",g_com_map[IP_0],g_com_map[IP_1],g_com_map[IP_2],g_com_map[IP_3],g_com_map[PORT]);
    if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
    {
    LOG_INFO(TRACE_MODULE_APP,"TCP_RTCM模式,服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[TCP_IP_0],g_com_map[TCP_IP_1],g_com_map[TCP_IP_2],g_com_map[TCP_IP_3],g_com_map[TCP_PORT]);
    }
    else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP)
    {
        LOG_INFO(TRACE_MODULE_APP,"NtripHost:%s.\r\n",(char *)&g_com_map[NTRIP_HOST_INDEX]);
        LOG_INFO(TRACE_MODULE_APP,"NtripPort:%d.\r\n",g_com_map[NTRIP_PORT_INDEX]);
        LOG_INFO(TRACE_MODULE_APP,"NtripUsername:%s.\r\n",(char *)&g_com_map[NTRIP_USERNANME_INDEX]);
        LOG_INFO(TRACE_MODULE_APP,"NtripPassword:%s.\r\n",(char *)&g_com_map[NTRIP_PASSWORD_INDEX]);
        LOG_INFO(TRACE_MODULE_APP,"NtripSourcename:%s.\r\n",(char *)&g_com_map[NTRIP_SOURCENAME_INDEX]);
    }
    else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NONE)
    {
        LOG_INFO(TRACE_MODULE_APP,"单点定位模式模式. \r\n");
    }
    LOG_INFO(TRACE_MODULE_APP,"跳转OTA升级固件启动成功\r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
//    LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[IP_0],g_com_map[IP_1],g_com_map[IP_2],g_com_map[IP_3],g_com_map[PORT]);
    delay_ms(500);
}
uint32_t adctick = 0;
@@ -444,133 +428,133 @@
extern uint8_t ota_flag;
void IdleTask(void)
{
if(read_5v_input_pca())
      {
            if(state5v==0)
            {
                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输入
            }
            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;
//                adctick = HIDO_TimerGetTick();
                if(HIDO_TimerGetTick()-adctick>60)  //10分钟采样一次 电量
                {
                    chongman_time=chongman_time+60;
                    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>=600)
                {
                    powerled = GREEN;
                }else{
                    powerled = RED;
                }
                if(DBG_GetMode() == DBG_MODE_SHELL)
                {
                        if(ota_flag==1)
                        {
//                            OTA_Poll();
//                            HTTPClient_Poll();
                        }
                        else
                        {
                        uwb_app_poll();
                        }
                        Internet_Poll();
                        HIDO_TimerPoll();
                        HIDO_ATLitePoll();
                        TCPClient_Poll();
                        if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
                        {TCPClient_Poll_1();}
                        if(flag_secondtask)
                        {
                            flag_secondtask = 0;
                            SecondTask();
                        }
                        UserKeyTask();
                }
                UART_CheckReceive();
                if(flag_secondtask)
                {
                    flag_secondtask = 0;
                    SecondTask();
                }
                if(DBG_GetMode() == DBG_MODE_SHELL)
                {
                Set4LEDColor(uwbled,rtkled,led4g,powerled);
                    if(g_com_map[CNT_RESTART]==1)
                    {
                        g_com_map[CNT_RESTART]=0;
                        save_com_map_to_flash();
                        NVIC_SystemReset();
                    }
                }
                else
                {
                Set4LEDColor(0,0,0,powerled);
                }
                if(input5v_time)
                {
                if(!read_5v_input_pca())
                {
                break;
                }
                }
            }
            NVIC_SystemReset();
            input5vflag=1;
      }
        else
        {
            if(state5v==1)
            {
                g_com_map[MODBUS_MODE] = 0;
                state5v=0;
                state5V_prase_flag=state5v;
                gps_prase_flag=1;//恢复gps解析
                uart1_change_from_debug_to_gps();//测试
                PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
            }
        }
      UART_CheckReceive();
        if(g_com_map[CNT_RESTART]==1)
        {
            g_com_map[CNT_RESTART]=0;
            NVIC_SystemReset();
        }
        if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
        {
            NVIC_SystemReset();
        }
        HIDO_TimerPoll();
        if(ledonflag==1)
        {
        ledonflag=0;
        uwbled=0;
        rtkled=0;
        led4g=0;
        powerled=0;
        Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
        }
//if(read_5v_input_pca())
//      {
//            if(state5v==0)
//            {
//                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输入
//            }
//            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;
////                adctick = HIDO_TimerGetTick();
//                if(HIDO_TimerGetTick()-adctick>60)  //10分钟采样一次 电量
//                {
//                    chongman_time=chongman_time+60;
//                    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>=600)
//                {
//                    powerled = GREEN;
//                }else{
//                    powerled = RED;
//                }
//                if(DBG_GetMode() == DBG_MODE_SHELL)
//                {
//                        if(ota_flag==1)
//                        {
////                            OTA_Poll();
////                            HTTPClient_Poll();
//                        }
//                        else
//                        {
//                        uwb_app_poll();
//                        }
//                        Internet_Poll();
//                        HIDO_TimerPoll();
//                        HIDO_ATLitePoll();
//                        TCPClient_Poll();
//                        if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
//                        {TCPClient_Poll_1();}
//                        if(flag_secondtask)
//                        {
//                            flag_secondtask = 0;
//                            SecondTask();
//                        }
//                        UserKeyTask();
//                }
//                UART_CheckReceive();
//                if(flag_secondtask)
//                {
//                    flag_secondtask = 0;
//                    SecondTask();
//                }
//                if(DBG_GetMode() == DBG_MODE_SHELL)
//                {
//                Set4LEDColor(uwbled,rtkled,led4g,powerled);
//                    if(g_com_map[CNT_RESTART]==1)
//                    {
//                        g_com_map[CNT_RESTART]=0;
//                        save_com_map_to_flash();
//                        NVIC_SystemReset();
//                    }
//                }
//                else
//                {
//                Set4LEDColor(0,0,0,powerled);
//                }
//                if(input5v_time)
//                {
//                if(!read_5v_input_pca())
//                {
//                break;
//                }
//                }
//            }
//            NVIC_SystemReset();
//            input5vflag=1;
//      }
//        else
//        {
//            if(state5v==1)
//            {
//                g_com_map[MODBUS_MODE] = 0;
//                state5v=0;
//                state5V_prase_flag=state5v;
//                gps_prase_flag=1;//恢复gps解析
//                uart1_change_from_debug_to_gps();//测试
//                PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
//            }
//        }
//      UART_CheckReceive();
//        if(g_com_map[CNT_RESTART]==1)
//        {
//            g_com_map[CNT_RESTART]=0;
//            NVIC_SystemReset();
//
//        }
//        if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
//        {
//            NVIC_SystemReset();
//        }
//        HIDO_TimerPoll();
//        if(ledonflag==1)
//        {
//        ledonflag=0;
//        uwbled=0;
//        rtkled=0;
//        led4g=0;
//        powerled=0;
//        Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
//        }
}
void boot_deinit(void)
{
@@ -594,7 +578,7 @@
extern uint8_t receive_flag;
extern uint8_t YUANGPS_ParseGGA_data[256];
extern uint8_t YUANGPS_ParseGGA_changdu;
static HIDO_CHAR url[256 + 1];
static HIDO_CHAR url[256 + 1]="http://123.57.87.125:7001/hfs/MK8000-4G工卡V1.2.Bin";
//void OTA_MODE(void)
//{
//    if(g_com_map[OTA_FLAG])
@@ -670,17 +654,8 @@
    DBG_Init();
    
    Internet_Init();
    TCPClient_Init();
    if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP)
    {
       NTRIPClient_Init();
       NTRIPApp_Init();
    }
    if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
    {
        TCPClient_Init_1();
    }
//    HTTPClient_Init();
//    TCPClient_Init();
    HTTPClient_Init();
    gpio_open();
    LED_output_init();//配置彩色灯引脚
    IIC2_Init();
@@ -694,52 +669,36 @@
    PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
    pca_input_detection_init(pca_handler);//pca检测输入
    Uwb_init();
    OpenUWB();
//    DBG_SetMode(DBG_MODE_SHELL);
//    Shell_Init();
    if(!read_5v_input_pca())
    {
     Set4LEDColor(BLUE,GREEN,WHITE,RED);
     delay_ms(500);
     Set4LEDColor(RED,WHITE,RED,WHITE);
     delay_ms(500);
     Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
    }
    g_com_map[MODBUS_MODE] = 0;
    state5v=0;
    DBG_SetMode(DBG_MODE_SHELL);
    state5v=1;
    state5V_prase_flag=state5v;
    gps_prase_flag=1;//恢复gps解析
    uart1_change_from_debug_to_gps();//测试
    PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
    gps_prase_flag=0;//解除gps解析
    uart1_change_from_gps_to_debug();//测试
    PCA9555_Set_One_Value_Output(MCU_A,1);//输出高电平切换为5V输入
//    memcpy(/*(HIDO_UINT8 *)*/url,(void *)APP_CONFIG_IAP_PARAM_MAP,256);
    OTA_Start((HIDO_UINT8 *)url);
    LOG_INFO(TRACE_MODULE_APP,"获取固件地址为:%s\r\n",url);
    while (1)
    { 
      if(ota_flag==1)
        {
//            OTA_Poll();
//            HTTPClient_Poll();
        }
        else
        {
            uwb_app_poll();
        }
        OTA_Poll();
        HTTPClient_Poll();
        Internet_Poll();
        HIDO_TimerPoll();
        HIDO_ATLitePoll();
        TCPClient_Poll();
        if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
        {
            TCPClient_Poll_1();
        }
        if(flag_secondtask)
        {
            flag_secondtask = 0;
            SecondTask();
        }
      PowerTask();
      IMUTask();
      UserKeyTask();
        IdleTask();
//        TCPClient_Poll();
//        if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
//        {
//            TCPClient_Poll_1();
//        }
//        if(flag_secondtask)
//        {
//            flag_secondtask = 0;
//            SecondTask();
//        }
//      PowerTask();
//      IMUTask();
//      UserKeyTask();
//        IdleTask();
    }
}