| | |
| | | |
| | | Operation_step UWB_work_state; |
| | | |
| | | |
| | | uint32_t gpsbaudrate; |
| | | uint32_t uwb_time_count = 0; // 定时器计数值 |
| | | //uint32_t step_count = 0; // 步数计数 |
| | | //uint32_t last_step_count = 0; // 上一次步数 |
| | |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | } |
| | | uint8_t deep_sleep_falg=1; |
| | | extern uint8_t userkey_state; |
| | | extern uint8_t heartbeasend_flag; |
| | | uint8_t sleepflag; |
| | | uint32_t sleepflagtime; |
| | | uint8_t onlyoneflag=1; |
| | | void mcu_deep_sleep(void) |
| | | { |
| | | // uint32_t lock; |
| | | // trace_flush(); |
| | | // lock = int_lock(); |
| | | //// LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n"); |
| | | |
| | | 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(); |
| | | PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G |
| | | 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); |
| | | |
| | | // 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); |
| | | //// sys_reset(0); |
| | | ////// LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n"); |
| | | //// int_unlock(lock); |
| | | } |
| | | static void adc_callback(void *data, uint32_t number) |
| | | { |
| | |
| | | { |
| | | if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1) |
| | | {//power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH); |
| | | if(onlyoneflag) |
| | | { |
| | | onlyoneflag=0; |
| | | nomove_count=0; |
| | | userkey_state=4; |
| | | heartbeasend_flag = 1; |
| | | sleepflag=1; |
| | | sleepflagtime=HIDO_TimerGetTick(); |
| | | } |
| | | } |
| | | if(sleepflag) |
| | | { |
| | | if(HIDO_TimerGetTick() - sleepflagtime>3) |
| | | { |
| | | power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW); |
| | | mcu_deep_sleep(); |
| | | } |
| | | } |
| | | } |
| | | void powerON_Task(void) |
| | |
| | | } |
| | | |
| | | } |
| | | uint8_t guanjiflag; |
| | | uint8_t heartbeasend_flag; |
| | | uint32_t guanjiflagtime; |
| | | void UserKeyTask(void) |
| | | { |
| | | if(!read_userkey_input_pca()) |
| | |
| | | powerled=WHITE; |
| | | Set4LEDColor(uwbled,rtkled,led4g,powerled); |
| | | delay_ms(500); |
| | | keystarttime = HIDO_TimerGetTick(); |
| | | 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);//低电平关闭 |
| | | |
| | | // keystarttime = HIDO_TimerGetTick(); |
| | | // 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);//低电平关闭 |
| | | heartbeasend_flag = 1; |
| | | guanjiflag=1; |
| | | userkey_state = 2; |
| | | guanjiflagtime=HIDO_TimerGetTick(); |
| | | } |
| | | // if(HIDO_TimerGetTick() - keystarttime2>10) |
| | | // { |
| | | // |
| | | // g_com_map[CNT_RESTART] = 1; |
| | | // } |
| | | }else |
| | | { |
| | | keystarttime = HIDO_TimerGetTick(); |
| | |
| | | { |
| | | input5v_time=1; |
| | | flag_secondtask = 1; |
| | | #ifdef UWB_1_5HZ |
| | | uwb_time_count++; |
| | | #endif |
| | | if(g_com_map[UWBFrequency]>1) |
| | | {uwb_time_count++;} |
| | | // #endif |
| | | uwb_offtime_count++; |
| | | if(uwb_offtime_count>60) |
| | | { |
| | |
| | | // uart_send(UART_ID1, ceshidata, 50,NULL); |
| | | } |
| | | input5v_time=1; |
| | | if(taglist_num==0) |
| | | if(taglist_num==0&&g_com_map[UWBFrequency]==1&&g_com_map[UWBENBLE]==1) |
| | | { |
| | | // CloseUWB(); |
| | | // Uwb_init(); |
| | | // OpenUWB(); |
| | | CloseUWB(); |
| | | Uwb_init(); |
| | | OpenUWB(); |
| | | } |
| | | if(g_com_map[UWBENBLE]==1) |
| | | { |
| | | upload_apppoll(); |
| | | } |
| | | }else{ |
| | | flag_secondtask = 0; |
| | | } |
| | |
| | | uint8_t gps_need_data_flag,gps_open_flag; |
| | | void Program_Init(void) |
| | | { |
| | | uint32_t gpsbaudrate1; |
| | | Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为 |
| | | parameter_init_anchor();//g_com_map表初始化角色默认为基站 |
| | | dev_id=g_com_map[DEV_ID];//这里不太对 |
| | |
| | | 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[MOTOR_ONTIME_INDEX]=10; |
| | | tag_frequency = 1000/g_com_map[COM_INTERVAL]; |
| | | |
| | | gpsbaudrate=(g_com_map[GPSBAUDRATE1_INDEX]<<16)|g_com_map[GPSBAUDRATE2_INDEX]; |
| | | if(gpsbaudrate==9600) |
| | | { |
| | | gpsbaudrate = 3; |
| | | gpsbaudrate1=9600; |
| | | } |
| | | else if(gpsbaudrate==115200) |
| | | { |
| | | gpsbaudrate = 7; |
| | | gpsbaudrate1=115200; |
| | | } |
| | | else |
| | | { |
| | | gpsbaudrate = 3; |
| | | gpsbaudrate1=9600; |
| | | } |
| | | if(g_com_map[GPSENBLE]>1) |
| | | { |
| | | g_com_map[GPSENBLE]=1; |
| | | } |
| | | if(g_com_map[UWBENBLE]>1) |
| | | { |
| | | g_com_map[UWBENBLE]=1; |
| | | } |
| | | if(g_com_map[UWBFrequency]>10) |
| | | { |
| | | g_com_map[UWBFrequency]=1; |
| | | } |
| | | // g_com_map[IP_0]=111; |
| | | // g_com_map[IP_1]=198; |
| | | // g_com_map[IP_2]=60; |
| | |
| | | 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[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)|16; |
| | | g_com_map[VERSION] = (1<<8)|20; |
| | | |
| | | |
| | | 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]); |
| | | LOG_INFO(TRACE_MODULE_APP,"设备UWB状态: %x .\r\n",g_com_map[UWBENBLE]); |
| | | LOG_INFO(TRACE_MODULE_APP,"设备GPS状态: %x .\r\n",g_com_map[GPSENBLE]); |
| | | 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); |
| | | 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]); |
| | |
| | | powerled=0; |
| | | Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF); |
| | | } |
| | | if(bat_percent<1) |
| | | { |
| | | userkey_state=3; |
| | | heartbeasend_flag = 1; |
| | | guanjiflag=1; |
| | | guanjiflagtime=HIDO_TimerGetTick(); |
| | | } |
| | | 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(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) |
| | | { |
| | |
| | | |
| | | extern uint32_t uwb_time_count; |
| | | uint8_t GPS_UPLOAD_FLAG=0; |
| | | uint32_t elapsed_time_jibu; |
| | | void upload_apppoll() |
| | | { |
| | | uint32_t elapsed_time_jibu; |
| | | |
| | | switch (current_state) |
| | | if(current_state==STATE_NORMAL) |
| | | { |
| | | #ifdef UWB_1_5HZ |
| | | case STATE_NORMAL: |
| | | if(g_com_map[UWBFrequency]>1) |
| | | { |
| | | elapsed_time_jibu = uwb_time_count - state_start_time; |
| | | switch(elapsed_time_jibu) |
| | | if(elapsed_time_jibu==1) |
| | | { |
| | | case UWB_OPEN_COUNT: |
| | | CloseUWB(); |
| | | UWBSendUDPTask(); |
| | | |
| | | break; |
| | | |
| | | case UWB_MEASUREMENT_INTERVAL: |
| | | } |
| | | else if(elapsed_time_jibu==g_com_map[UWBFrequency]) |
| | | { |
| | | taglist_num = 0; |
| | | CloseUWB(); |
| | | Uwb_init(); |
| | | OpenUWB(); |
| | | state_start_time = uwb_time_count; |
| | | |
| | | break; |
| | | } |
| | | break; |
| | | #endif |
| | | case STATE_SLEEP: |
| | | } |
| | | else |
| | | {} |
| | | } |
| | | else if(current_state==STATE_SLEEP) |
| | | { |
| | | elapsed_time_jibu = uwb_time_count - state_start_time; |
| | | switch(elapsed_time_jibu) |
| | | switch(elapsed_time_jibu==1) |
| | | { |
| | | case UWB_OPEN_COUNT: |
| | | CloseUWB(); |
| | |
| | | state_start_time = uwb_time_count; |
| | | break; |
| | | } |
| | | break; |
| | | } |
| | | // switch (current_state) |
| | | // { |
| | | ////#ifdef UWB_1_5HZ |
| | | // if(g_com_map[UWBFrequency]>1) |
| | | // { |
| | | // case STATE_NORMAL: |
| | | // elapsed_time_jibu = uwb_time_count - state_start_time; |
| | | // if(elapsed_time_jibu) |
| | | // { |
| | | // CloseUWB(); |
| | | // UWBSendUDPTask(); |
| | | // } |
| | | // else if(elapsed_time_jibu==g_com_map[UWBFrequency]) |
| | | // { |
| | | // taglist_num = 0; |
| | | // CloseUWB(); |
| | | // Uwb_init(); |
| | | // OpenUWB(); |
| | | // state_start_time = uwb_time_count; |
| | | // } |
| | | // } |
| | | // else |
| | | // {} |
| | | ////#endif |
| | | // case STATE_SLEEP: |
| | | // elapsed_time_jibu = uwb_time_count - state_start_time; |
| | | // switch(elapsed_time_jibu) |
| | | // { |
| | | // case UWB_OPEN_COUNT: |
| | | // CloseUWB(); |
| | | // UWBSendUDPTask(); |
| | | // break; |
| | | // |
| | | // case UWB_MEASUREMENT_INTERVAL_SLEEP: |
| | | // taglist_num = 0; |
| | | // CloseUWB(); |
| | | // Uwb_init(); |
| | | // OpenUWB(); |
| | | // state_start_time = uwb_time_count; |
| | | // break; |
| | | // } |
| | | // break; |
| | | // } |
| | | |
| | | } |
| | | |
| | |
| | | adc_open(&usr_adc_cfg); |
| | | 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));//测试 |
| | | 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(); |
| | | #ifdef UWB_CK |
| | | if(g_com_map[UWBFrequency]&&g_com_map[UWBENBLE]) |
| | | { |
| | | OpenUWB(); |
| | | #endif |
| | | // DBG_SetMode(DBG_MODE_SHELL); |
| | | // Shell_Init(); |
| | | |
| | | } |
| | | if(!read_5v_input_pca()) |
| | | { |
| | | Set4LEDColor(BLUE,GREEN,WHITE,RED); |
| | |
| | | gps_prase_flag=1;//恢复gps解析 |
| | | uart1_change_from_debug_to_gps();//测试 |
| | | PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS |
| | | #ifdef UWB_CG |
| | | if(g_com_map[UWBENBLE]==0) |
| | | { |
| | | CloseUWB(); |
| | | #endif |
| | | } |
| | | sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); |
| | | sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试 |
| | | PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低 |
| | | adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 |
| | | pca_input_detection_init(pca_handler);//pca检测输入 |
| | | while (1) |
| | | { |
| | | |