yincheng.zhong
2024-11-19 e5d499776ae8dbebdc2d11b4aab44a3f9314b4bc
Src/application/dw_app.c
@@ -250,25 +250,33 @@
typedef enum{   Next_Poll_RANGE,
                Next_Poll_LORASYNC,
}nextpoll_enum;
nextpoll_enum next_poll_state;
nextpoll_enum next_poll_state = Next_Poll_RANGE;
extern uint8_t sync_lost_count;
uint8_t send_count;
#define FASONG_TIME 3
void Tag_App(void)//发送模式(TAG标签)
{     
    SyncStateSwitch();
  if(next_poll_state==Next_Poll_RANGE)  //读取本次的工作状态 测距还是同步
  {
    current_count=HAL_LPTIM_ReadCounter(&hlptim1);
    if(send_count++%FASONG_TIME==0)
    {
    SwitchLoraSettings(UWB_CHANNEL_FRQ+g_com_map[GROUP_ID],5,g_com_map[LORA_POWER]); //切换lora接收频点  
    memcpy(&lora_start_poll_buff[ANC_ID_IDX],&g_com_map[DEV_ID],2);
      LED_TB_ON;
//      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
    Radio.Send(lora_start_poll_buff, 4);
    UWB_Wkup();
    delay_us(700);
    UWB_Wkup();
    delay_us(1000);
    MBXANCPoll();
   dwt_entersleep();
    bat_percent=Get_VDDVlotage();
//      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
   dwt_entersleep();
    }
    next_poll_state = Next_Poll_LORASYNC;
  }else{
     LoraSyncRecPoll();
      if(GetRangeState())  //获取当前测距状态,是否开启。如果开启下次为测距,否为同步
@@ -286,7 +294,7 @@
//          target_count = GetLoraSyncCount()-(18000)/LPTIMER_LSB+sync_lost_count*1000;
//      }else
      {
        target_count = GetLoraSyncCount()-(18000)/LPTIMER_LSB;  //比上次收到的lora提前17ms唤醒(lora接收大概17ms),如果在同步间隔内,则会快速进入休眠。
        target_count = GetLoraSyncCount()-(23000)/LPTIMER_LSB;  //比上次收到的lora提前17ms唤醒(lora接收大概17ms),如果在同步间隔内,则会快速进入休眠。
      }
      if(target_count<0)
      target_count+=32768;