chen
4 天以前 f34293f18e4fbfe4d0d025657d2bda505861066a
keil/include/main/main.c
@@ -91,7 +91,7 @@
extern uint8_t anchordata_num;
uint32_t dev_id;
uint8_t group_id;
uint16_t tag_frequency;
uint8_t tag_frequency;
uint16_t disoffset;
uint16_t warning_distance,prewarning_distance;
int16_t fVoltage_mv,first_search_flag;
@@ -100,7 +100,7 @@
uint16_t gps_wait_count,gps_wait_count2;
uint8_t state5v = 1;
uint8_t motor_power_state=1,uwb_state,air780_power_state,gps_success_state,red_charge_state,green_charge_state,air780_success_state,first_motor_in_flag;
float nomove_count=0;
uint16_t nomove_count=0;
static uint32_t sample[NUM_SAMPLES] = {0};
uint8_t recev_error_num,send_messgae_count,send_flag,control_state,power_low_flag;
uint8_t flag_4g_usart_rx_state = 1;  //4G 串口RX当前是 RX状态,不是GPIO状态
@@ -266,9 +266,11 @@
}
void MinuteTask(void)
{      
      PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
//      PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
}
extern uint8_t motor_state;
extern  int8_t motor_keeptime;
void SecondTask(void)
{static uint8_t second_count;
    if(second_count++>60)
@@ -277,45 +279,39 @@
        MinuteTask();
    }
      
//      if(!power_low_flag)
//      Gps_change();
//      else{
//      gps_power_state=0;//关闭GPS
//      update_led_power_state();
//      //初始化GPS计数数据
//      gps_need_data_flag=1;
//      gps_wait_count2=0;
//      gps_wait_count=0;
//      }
//    //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;
//        }
//    }
//   }
if(g_com_map[MOTOR_ENABLE])
    {
            if(motor_keeptime-->0)
            {
                motor_state = 2;
            }else{
                motor_state = 0;
            }
        switch(motor_state)
            {case 0:
                pwm_ch_disable(PWM_ID3);
                break;
            case 1:
                break;
            case 2:
                pwm_ch_enable(PWM_ID3, &usr_pwm_ch0_cfg);
                break;
            case 3:
                break;
                  }
    }
    HIDO_TimerTick();
      if(motor_keeptime<0)
      {
      motor_keeptime=-1;//防止溢出
      }
      if(nomove_count<=g_com_map[NOMOVESLEEP_TIME])//防止溢出
    nomove_count++;
      else{
      nomove_count=g_com_map[NOMOVESLEEP_TIME]+1;
      }
}
uint8_t tt=1;
//uint8_t tt=1;
uint8_t flag_sleeptimer,flag_secondtask,secondtask_count,log_4g_enable_flag;
uint8_t uwb_enable_flag=0;
@@ -425,70 +421,11 @@
    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",ip0,ip1,ip2,ip3,port);
extern uint8_t motor_state;
extern  float motor_keeptime;
uint8_t test1;
void IdleTask(void)
{
    if(g_com_map[MOTOR_ENABLE])
    {
            if(motor_keeptime>0)
            {
                motor_state = 2;
            }else{
                motor_state = 0;
            }
            //motor_state=2;
        switch(motor_state)
            {case 0:
//                if(hardware_type==NSH1)
//                {MOTOR_OFF;
//                }else if(hardware_type==GP)
//                {
//                HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
//                }
//                pwm_ch_enable(PWM_ID0, &usr_pwm_ch0_cfg);
//                        delay_ms(10000);
                pwm_ch_disable(PWM_ID3);
                break;
            case 1:
//                if(current_time<MOTOR_ONTIME)
//                {
//                    if(hardware_type==NSH1)
//                    {MOTOR_ON;
//                    }else if(hardware_type==GP)
//                    {
//                    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
//                    }
//                }else{
//                    if(hardware_type==NSH1)
//                    {MOTOR_OFF;
//                    }else if(hardware_type==GP)
//                    {
//                    HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
//                    }
//                }
//                pwm_ch_enable(PWM_ID0, &usr_pwm_ch0_cfg);
                break;
            case 2:
//                if(hardware_type==NSH1)
//                    {MOTOR_ON;
//                    }else if(hardware_type==GP)
//                    {
//                    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
//                    }
                pwm_ch_enable(PWM_ID3, &usr_pwm_ch0_cfg);
                break;
            case 3:
//                if(hardware_type==NSH1)
//                    {MOTOR_OFF;
//                    }else if(hardware_type==GP)
//                    {
//                    HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
//                    }
                break;
        }
    }
        UART0_CheckReceive();
        test1=gpio_pin_get_val(INPUT_5V_Pin);
        if(gpio_pin_get_val(INPUT_5V_Pin))
@@ -659,7 +596,7 @@
    IIC2_Init();
    SC7A22H_Motion_Detection_Init();
    gpio_pin_clr(ADC_GND_ENABLE);
    Program_Init();
    //Program_Init();
    uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
    power_init();
    sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
@@ -672,8 +609,8 @@
    board_5V_input_init(voltage_input_handler);
    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
    board_acceleration_detection_init(move_handler);
    Uwb_init();
    Dw1000_App_Init();
   Tag_uwb_init();
//    Dw1000_App_Init();
    while (1)
    { 
        if(flag_secondtask)
@@ -685,11 +622,11 @@
        {
            g_start_send_flag = 0;
            gpio_pin_set(IO_PIN_7);//亮
          SwitchTagState();
                     TagRange();
            gpio_pin_clr(IO_PIN_7);//灭
        }
//            PowerTask();
            IMUTask();
            //IMUTask();
//            UserKeyTask();
        IdleTask();
        LoraUp_Poll();