From 4be9f00578cbfd72ea94f56c7353a2d3ce92ec77 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期四, 27 三月 2025 18:03:25 +0800 Subject: [PATCH] ota升级开发完成 --- keil/include/main/main.c | 445 +++++++++++++++++++++++++------------------------------ 1 files changed, 203 insertions(+), 242 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index bfd50f2..1fe5dd5 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -237,36 +237,37 @@ adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 } void SecondTask(void) -{static uint8_t second_count; - if(second_count++>60) - { - second_count = 0; - MinuteTask(); - } - //UWB状态检测 -if(!power_low_flag)//低供电下不需要检测重连 - { - if(IfTCPConnected()) - { - TCP_reconnect_timer =0; - flag_TCP_reconnectting = 0; - } else { - if(TCP_reconnect_timer<30)//如果TCP没有连接,每隔10分钟尝试连接30秒 - { - flag_TCP_reconnectting = 1; - } else { - flag_TCP_reconnectting = 0; - } - if(TCP_reconnect_timer++>600) - { - TCP_reconnect_timer = 0; - } +{ +// static uint8_t second_count; +// if(second_count++>60) +// { +// second_count = 0; +// MinuteTask(); +// } +// //UWB状态检测 +//if(!power_low_flag)//低供电下不需要检测重连 +// { +// if(IfTCPConnected()) +// { +// TCP_reconnect_timer =0; +// flag_TCP_reconnectting = 0; +// } else { +// if(TCP_reconnect_timer<30)//如果TCP没有连接,每隔10分钟尝试连接30秒 +// { +// flag_TCP_reconnectting = 1; +// } else { +// flag_TCP_reconnectting = 0; +// } +// if(TCP_reconnect_timer++>600) +// { +// TCP_reconnect_timer = 0; +// } - } - } +// } +// } HIDO_TimerTick(); // if(nomove_count<=g_com_map[NOMOVESLEEP_TIME])//防止溢出 - nomove_count++; +// nomove_count++; // else{ // nomove_count=g_com_map[NOMOVESLEEP_TIME]+1; // } @@ -355,14 +356,14 @@ 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 - memcpy(&disoffset,&g_com_map[DIST_OFFSET],2); - warning_distance=g_com_map[ALARM_DISTANCE1]; - prewarning_distance=g_com_map[ALARM_DISTANCE2]; - send_struct.warnDistence=warning_distance; - send_struct.alarmDistence=prewarning_distance;//更新报警距离 - memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID - send_struct.tagId=dev_id;//更新设备ID +// group_id=g_com_map[GROUP_ID];//组ID +// memcpy(&disoffset,&g_com_map[DIST_OFFSET],2); +// warning_distance=g_com_map[ALARM_DISTANCE1]; +// prewarning_distance=g_com_map[ALARM_DISTANCE2]; +// send_struct.warnDistence=warning_distance; +// send_struct.alarmDistence=prewarning_distance;//更新报警距离 +// memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID +// send_struct.tagId=dev_id;//更新设备ID // g_com_map[IP_0]=111; // g_com_map[IP_1]=198; @@ -397,43 +398,27 @@ // snprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX], 32, "RTCM32_GNSS2"); - if(g_com_map[BIND_DEV_ID]==0) - { - UWB_work_state = UN_BIND; - }else{ - UWB_work_state = SEARCH_DEV; - } - //g_com_map[SEND_4G_SECOND] - if(g_com_map[SEND_4G_SECOND]<30) - { - gps_open_flag=0; - }else{ - gps_open_flag=1; - } +// if(g_com_map[BIND_DEV_ID]==0) +// { +// UWB_work_state = UN_BIND; +// }else{ +// UWB_work_state = SEARCH_DEV; +// } +// //g_com_map[SEND_4G_SECOND] +// if(g_com_map[SEND_4G_SECOND]<30) +// { +// gps_open_flag=0; +// }else{ +// gps_open_flag=1; +// } g_com_map[MODBUS_MODE] = 0; log_4g_enable_flag=g_com_map[LOG_4G_ENABLE]; 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",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 +429,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 +579,8 @@ 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"*/; +//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,21 +656,12 @@ 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(); - Accelerometer_Init(); +// Accelerometer_Init(); PCA9555_init(); adc_open(&usr_adc_cfg); uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); @@ -694,52 +671,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(); - } +// TCPClient_Poll(); +// if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) +// { +// TCPClient_Poll_1(); +// } if(flag_secondtask) { flag_secondtask = 0; SecondTask(); } - PowerTask(); - IMUTask(); - UserKeyTask(); - IdleTask(); +// PowerTask(); +// IMUTask(); +// UserKeyTask(); +// IdleTask(); } } -- Gitblit v1.9.3