WXK
2025-02-17 e6a35a9ad44e3db48c7bae45dbb7d8e3983373cf
Src/application/dw_mbx_tag.c
@@ -45,6 +45,7 @@
static u8 tagofflinetime[ANC_MAX_NUM];
u8 taglist_num;
uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
uint16_t test111;
uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos) //0 mainbase  1 first near_base
{
    uint8_t motorstate;
@@ -81,7 +82,8 @@
    result = dwt_starttx(DWT_START_TX_DELAYED);
    
    if(result==0)
    {
    {
        test111++;
        start_time=HAL_LPTIM_ReadCounter(&hlptim1);
        timeout=100; //单位0.1ms
        end_time=start_time+(timeout<<2);
@@ -141,7 +143,8 @@
    uint32_t rec_syncid,status_reg;
    uint16_t checksum;
    uint8_t kk;
    UWB_Wkup();
//    dwt_setrxtimeout(3000);//设定接收超时时间,0位没有超时时间
//    dwt_rxenable(0);//打开接收
//    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
@@ -161,9 +164,21 @@
//        if(current_time>=end_time&&current_time<end_time+15000)
//            break;
//    };
    dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
    dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
   dwt_rxenable(0);//打开接收
   while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误
   {
      IdleTask();
   };
   status_reg  = dwt_read32bitreg(SYS_STATUS_ID);
    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0);
    if (status_reg & SYS_STATUS_RXFCG && status_reg!=0xffffffff)//成功接收
    if(status_reg==0xffffffff)
    {
//         printf("UWB芯片状态:0xffffffff,设备重启");
     SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
    }
//    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0);
    if (status_reg & SYS_STATUS_RXFCG)//成功接收
    {
        uint16_t tag_recv_interval;
        float temp_tagpos;
@@ -233,10 +248,10 @@
        //  dwt_rxenable(0);
    }
        dwt_forcetrxoff();
        dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
      dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
        dwt_rxenable(0);
//        dwt_forcetrxoff();
//        dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
//      dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
//        dwt_rxenable(0);
}
wg_state_enum wg_state = WG_Lost;
@@ -290,7 +305,7 @@
uint16_t heatbeat_count = 3600;
int16_t intheight;
#define HEATBEAT_UPDATE_TIME   3600
#define LORA_REPORT_MAXANC_NUM  7
#define LORA_REPORT_MAXANC_NUM  14
extern float Height;
u8 tarray[20]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
void LoraReportPoll(void)