| | |
| | | lock = int_lock(); |
| | | // LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n"); |
| | | // gps_air780_power_change(0,0);//关闭gps,4G |
| | | PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED |
| | | PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED |
| | | PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G |
| | | PCA9555_Set_One_Value_Output(TTS_ENABLE,0); |
| | | |
| | | PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G |
| | | sleep_timer_stop(); |
| | | |
| | | sleep_timer_stop(); |
| | | |
| | | //adc_close(); |
| | | power_enter_power_down_mode(1); |
| | | // LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n"); |
| | | sys_reset(0); |
| | | int_unlock(lock); |
| | | //// uint32_t lock; |
| | | //// trace_flush(); |
| | | //// lock = int_lock(); |
| | | ////// LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n"); |
| | | //// gps_air780_power_change(0,0);//关闭gps,4G |
| | | // deep_sleep_falg=0; |
| | | // PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED |
| | | // PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G |
| | | //// PCA9555_Set_One_Value_Config(MAIN_RI,0);//配置4G唤醒引脚为输入 |
| | | //// |
| | | ////// PCA9555_Set_One_Value_Output(MAIN_RI,1); |
| | | // boot_deinit(); |
| | | // CloseUWB(); |
| | | // if(onlyoneflag) |
| | | // { |
| | | // onlyoneflag=0; |
| | | // userkey_state=4; |
| | | // heartbeasend_flag = 1; |
| | | // sleepflag=1; |
| | | // sleepflagtime=HIDO_TimerGetTick(); |
| | | // } |
| | | // if(sleepflag) |
| | | // { |
| | | // if(HIDO_TimerGetTick() - sleepflagtime>3) |
| | | // { |
| | | // PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G |
| | | // } |
| | | // } |
| | | // |
| | | //// PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G |
| | | // |
| | | //// sleep_timer_stop(); |
| | | //// //adc_close(); |
| | | //// power_enter_power_down_mode(1); |
| | | //// delay_us(200000); |
| | | |
| | | //// sys_reset(0); |
| | | ////// LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n"); |
| | | //// int_unlock(lock); |
| | | } |
| | | uint8_t jiancebat_percent_flag; |
| | | static void adc_callback(void *data, uint32_t number) |
| | |
| | | userkey_state=4; |
| | | heartbeasend_flag = 1; |
| | | sleepflag=1; |
| | | |
| | | sleepflagtime=HIDO_TimerGetTick(); |
| | | } |
| | | } |
| | |
| | | keystarttime3 = HIDO_TimerGetTick(); |
| | | } |
| | | } |
| | | uint8_t user_Power_keyflag=0; |
| | | void PowerTask(void) |
| | | { |
| | | if(read_powerkey_input_pca()) |
| | |
| | | // PCA9555_Set_One_Value_Output(GPS_POWER,0);//关GPS |
| | | // PCA9555_Set_One_Value_Output(PWR_ENABLE,0);//低电平关闭 |
| | | heartbeasend_flag = 1; |
| | | user_Power_keyflag=1; |
| | | guanjiflag=1; |
| | | userkey_state = 2; |
| | | guanjiflagtime=HIDO_TimerGetTick(); |
| | | g_com_map[KEY_POWERON] = user_Power_keyflag; |
| | | save_com_map_to_flash(); |
| | | } |
| | | }else |
| | | { |
| | |
| | | { |
| | | g_com_map[UWBFrequency]=1; |
| | | } |
| | | if(g_com_map[URT_BQ]>1) |
| | | { |
| | | g_com_map[URT_BQ]=0; |
| | | } |
| | | // g_com_map[IP_0]=111; |
| | | // g_com_map[IP_1]=198; |
| | | // g_com_map[IP_2]=60; |
| | |
| | | // } |
| | | g_com_map[MODBUS_MODE] = 0; |
| | | log_4g_enable_flag=g_com_map[LOG_4G_ENABLE]; |
| | | g_com_map[VERSION] = (1<<8)|24; |
| | | g_com_map[VERSION] = (1<<8)|25; |
| | | |
| | | |
| | | LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); |
| | |
| | | LOG_INFO(TRACE_MODULE_APP,"设备UWB工作间隔: %x .\r\n",g_com_map[UWBFrequency]); |
| | | LOG_INFO(TRACE_MODULE_APP,"设备GPS工作间隔: %x .\r\n",g_com_map[GPSFrequency]); |
| | | LOG_INFO(TRACE_MODULE_APP,"当前GPS工作波特率: %d .\r\n",gpsbaudrate1); |
| | | // LOG_INFO(TRACE_MODULE_APP,"充电是否开机标志位: %d .\r\n",g_com_map[URT_BQ]); |
| | | 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]); |
| | |
| | | extern uint8_t jiancebat_percent_flag; |
| | | void IdleTask(void) |
| | | { |
| | | if(read_5v_input_pca()) |
| | | { |
| | | if(state5v==0) |
| | | // if(g_com_map[URT_BQ]) |
| | | // {} |
| | | // else |
| | | // { |
| | | // |
| | | // |
| | | // } |
| | | |
| | | if(read_5v_input_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输入 |
| | | } |
| | | 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; |
| | | wdt_ping(WDT_ID0);//喂狗 |
| | | // adctick = HIDO_TimerGetTick(); |
| | | if(HIDO_TimerGetTick()-adctick>600) //10分钟采样一次 电量 |
| | | if(state5v==0) |
| | | { |
| | | 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; |
| | | 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; |
| | | } |
| | | if(bat_percent>=99&&chongman_time>=180) |
| | | only_one_flag=0; |
| | | uwbled=0; |
| | | rtkled=0; |
| | | led4g=0; |
| | | powerled=0; |
| | | // PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0); |
| | | while(1) |
| | | { |
| | | 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) |
| | | nomove_count = 0; |
| | | wdt_ping(WDT_ID0);//喂狗 |
| | | // adctick = HIDO_TimerGetTick(); |
| | | if(HIDO_TimerGetTick()-adctick>600) //10分钟采样一次 电量 |
| | | { |
| | | g_com_map[CNT_RESTART]=0; |
| | | save_com_map_to_flash(); |
| | | NVIC_SystemReset(); |
| | | 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>=180) |
| | | { |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Set4LEDColor(0,0,0,powerled); |
| | | } |
| | | if(input5v_time) |
| | | { |
| | | if(!read_5v_input_pca()) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | // NVIC_SystemReset(); |
| | | // PCA9555_Set_One_Value_Output(PWR_ENABLE,0); |
| | | input5vflag=1; |
| | | } |
| | | // NVIC_SystemReset(); |
| | | // PCA9555_Set_One_Value_Output(PWR_ENABLE,0); |
| | | input5vflag=1; |
| | | } |
| | | else |
| | | { |
| | | if(state5v==1) |
| | | else |
| | | { |
| | | 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 |
| | | 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);//低电平关闭 |
| | | delay_us(1000000); |
| | | |
| | | } |
| | | } |
| | | 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(bat_percent<1&&bat_percent_only_one&&jiancebat_percent_flag) |
| | | { |
| | | userkey_state=3; |
| | | heartbeasend_flag = 1; |
| | | guanjiflag=1; |
| | | guanjiflagtime=HIDO_TimerGetTick(); |
| | | bat_percent_only_one=0; |
| | | } |
| | | if(guanjiflag) |
| | | { |
| | | rtkled=WHITE; |
| | | uwbled=WHITE; |
| | | led4g=WHITE; |
| | | powerled=WHITE; |
| | | Set4LEDColor(uwbled,rtkled,led4g,powerled); |
| | | if(HIDO_TimerGetTick() - guanjiflagtime>3) |
| | | { |
| | | 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 |
| | | 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);//低电平关闭 |
| | | } |
| | | |
| | | } |
| | | delay_us(1000000); |
| | | |
| | | } |
| | | } |
| | | 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(bat_percent<5&&jiancebat_percent_flag) |
| | | { |
| | | WT588E_PLAY(14); |
| | | } |
| | | if(bat_percent<1&&bat_percent_only_one&&jiancebat_percent_flag) |
| | | { |
| | | WT588E_PLAY(15); |
| | | userkey_state=3; |
| | | heartbeasend_flag = 1; |
| | | guanjiflag=1; |
| | | guanjiflagtime=HIDO_TimerGetTick(); |
| | | bat_percent_only_one=0; |
| | | } |
| | | if(guanjiflag) |
| | | { |
| | | rtkled=WHITE; |
| | | uwbled=WHITE; |
| | | led4g=WHITE; |
| | | powerled=WHITE; |
| | | Set4LEDColor(uwbled,rtkled,led4g,powerled); |
| | | if(HIDO_TimerGetTick() - guanjiflagtime>3) |
| | | { |
| | | PCA9555_Set_One_Value_Output(TTS_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); //低电平关闭 |
| | | } |
| | | |
| | | } |
| | | } |
| | | void boot_deinit(void) |
| | | { |
| | |
| | | // delay_ms(100); |
| | | // gaodu=GetPressAndHeight(); |
| | | PCA9555_init(); |
| | | board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200); |
| | | board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_921600); |
| | | // while(1); |
| | | // Reset reason |
| | | reset_cause_get(); |
| | |
| | | |
| | | Uart_Register(UART_ID_DBG_GPS, UART_ID1); |
| | | DBG_Init(); |
| | | |
| | | |
| | | SendComMap(0x50,0); |
| | | Internet_Init(); |
| | | TCPClient_Init(); |
| | | // if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP) |
| | |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | power_init(); |
| | | Uwb_init(); |
| | | if(g_com_map[KEY_POWERON]==1) |
| | | { |
| | | WT588E_PLAY(0); //播报开机语音 |
| | | g_com_map[KEY_POWERON]=0; |
| | | save_com_map_to_flash(); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | if(g_com_map[UWBFrequency]&&g_com_map[UWBENBLE]) |
| | | { |
| | | OpenUWB(); |
| | |
| | | flag_secondtask = 0; |
| | | SecondTask(); |
| | | } |
| | | IMUTask(); |
| | | IMUTask(); |
| | | IdleTask(); |
| | | check_step_and_update_state(); |
| | | check_step_and_update_state(); |
| | | } |
| | | } |