From 2bda5756b312bfd5e6e7633f1b94bad36f81559b Mon Sep 17 00:00:00 2001 From: 钟印成 <zhyinch@gmail.com> Date: 星期三, 26 三月 2025 23:05:26 +0800 Subject: [PATCH] 修改状态机不跑BUG --- keil/include/main/main.c | 413 +++++++++++++++++++++++++++++++--------------------------- 1 files changed, 219 insertions(+), 194 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 94b17c8..3d0b7c3 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -370,31 +370,31 @@ // g_com_map[IP_3]=6; // g_com_map[PORT]=6666; - g_com_map[IP_0]=117; - g_com_map[IP_1]=72; - g_com_map[IP_2]=111; - g_com_map[IP_3]=237; - g_com_map[PORT]=7000; - - g_com_map[TCP_IP_0]=111; - g_com_map[TCP_IP_1]=198; - g_com_map[TCP_IP_2]=60; - g_com_map[TCP_IP_3]=6; - g_com_map[TCP_PORT]=1234; +// g_com_map[IP_0]=117; +// g_com_map[IP_1]=72; +// g_com_map[IP_2]=111; +// g_com_map[IP_3]=237; +// g_com_map[PORT]=7000; +// +// g_com_map[TCP_IP_0]=111; +// g_com_map[TCP_IP_1]=198; +// g_com_map[TCP_IP_2]=60; +// g_com_map[TCP_IP_3]=6; +// g_com_map[TCP_PORT]=1234; /* RTCMMODE_NONE, RTCMMODE_TCP, RTCMMODE_NTRIP, */ - g_com_map[RTCMMODE_INDEX] = RTCMMODE_NTRIP; +// g_com_map[RTCMMODE_INDEX] = RTCMMODE_NTRIP; - snprintf((char *)&g_com_map[NTRIP_HOST_INDEX], 32, "140.143.212.42"); - g_com_map[NTRIP_PORT_INDEX] = HIDO_UtilStrToInt("8005"); -// snprintf((char *)&g_com_map[NTRIP_PORT_INDEX], 32, "8005"); - snprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX], 32, "test005"); - snprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX], 32, "Hxzk0228"); - snprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX], 32, "RTCM32_GNSS2"); +// snprintf((char *)&g_com_map[NTRIP_HOST_INDEX], 32, "140.143.212.42"); +// g_com_map[NTRIP_PORT_INDEX] = HIDO_UtilStrToInt("8005"); +//// snprintf((char *)&g_com_map[NTRIP_PORT_INDEX], 32, "8005"); +// snprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX], 32, "test005"); +// snprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX], 32, "Hxzk0228"); +// snprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX], 32, "RTCM32_GNSS2"); if(g_com_map[BIND_DEV_ID]==0) @@ -416,146 +416,145 @@ 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; uint8_t only_one_flag; uint16_t chongman_time; uint8_t bat_percent_old=100; uint8_t input5vflag; -uint8_t kai_4g_flag; +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; - 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; - } - if(DBG_GetMode() == DBG_MODE_SHELL) - { - if(kai_4g_flag==0) - { - kai_4g_flag=1; -// PCA9555_Set_One_Value_Output(AIR780E_ENBALE,1); - //Shell_Init(); - } - if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) - {TCPClient_Poll_1();} - //HIDO_InputPoll(); - DBG_Poll(); - Internet_Poll(); - HIDO_TimerPoll(); - HIDO_ATLitePoll(); - TCPClient_Poll(); - } - UART_CheckReceive(); - if(flag_secondtask) - { - flag_secondtask = 0; - SecondTask(); - } - if(DBG_GetMode() == DBG_MODE_SHELL) - { - Set4LEDColor(uwbled,rtkled,led4g,powerled); - } - 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) { @@ -579,6 +578,53 @@ extern uint8_t receive_flag; extern uint8_t YUANGPS_ParseGGA_data[256]; extern uint8_t YUANGPS_ParseGGA_changdu; +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]) +// { +// Uart_Register(UART_ID_4G, UART_ID0); +// Uart_Register(UART_ID_DBG_GPS, UART_ID1); +// DBG_Init(); +// DBG_SetMode(DBG_MODE_SHELL); +// Internet_Init(); +// // TCPClient_Init(); +// HTTPClient_Init(); +// gpio_open(); +// LED_output_init();//配置彩色灯引脚 +// IIC2_Init(); +// // Accelerometer_Init(); +// PCA9555_init(); +// uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); +// power_init(); +// sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); +// sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试 +// pca_input_detection_init(pca_handler);//pca检测输入 +// 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输入 +// memcpy((HIDO_UINT8 *)url,g_com_map+OTA_URL_INDEX,g_com_map[OTA_URL_CHANGDU]); +// OTA_Start((HIDO_UINT8 *)url); +// +//// g_com_map[OTA_FLAG]=0; +//// save_com_map_to_flash(); +//// delay_us(100000); +//// NVIC_SystemReset(); //软复位回到bootloader +// +// +// while (1) +// { +// OTA_Poll(); +// HTTPClient_Poll(); +// Internet_Poll(); +// HIDO_TimerPoll(); +// HIDO_ATLitePoll(); +//// IdleTask(); +// } +// } +//} int main(void) { board_clock_run(); @@ -602,22 +648,14 @@ } calib_chip(); wdt_close(WDT_ID0); + Program_Init(); Uart_Register(UART_ID_4G, UART_ID0); Uart_Register(UART_ID_DBG_GPS, UART_ID1); DBG_Init(); - Program_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(); - } +// TCPClient_Init(); + HTTPClient_Init(); gpio_open(); LED_output_init();//配置彩色灯引脚 IIC2_Init(); @@ -631,49 +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; - state5V_prase_flag=state5v; - gps_prase_flag=1;//恢复gps解析 - uart1_change_from_debug_to_gps();//测试 - PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS + DBG_SetMode(DBG_MODE_SHELL); + 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输入 + +// 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) { - 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(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP&&gps_ntripsend==2) +// TCPClient_Poll(); +// if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) // { -// gps_ntripsend=0; -// NTRIPApp_ReportGGA(YUANGPS_ParseGGA_data, YUANGPS_ParseGGA_changdu); -// memset(YUANGPS_ParseGGA_data,0,YUANGPS_ParseGGA_changdu); -// YUANGPS_ParseGGA_changdu=0; -// } +// TCPClient_Poll_1(); +// } if(flag_secondtask) { flag_secondtask = 0; SecondTask(); } - PowerTask(); - IMUTask(); - UserKeyTask(); - IdleTask(); +// PowerTask(); +// IMUTask(); +// UserKeyTask(); +// IdleTask(); } } -- Gitblit v1.9.3