zhyinch
2020-11-06 d0c8138b8c7154b1f4816561645add3b70bb5e0f
Ô´Âë/ºËÐİå/Src/application/dw_app.c
@@ -5,7 +5,7 @@
   DISCPOLL,
   GETNEARMSG,
   NEARPOLL,
}tag_state=GETNEARMSG;
}tag_state=NEARPOLL;
static dwt_config_t config = {
   2,               /* Channel number. */
   DWT_PRF_64M,     /* Pulse repetition frequency. */
@@ -553,7 +553,7 @@
//            }
            tagslotpos=GetRandomSlotPos(rec_tagpos_binary|tagpos_binary);
            tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
      tag_state=GETNEARMSG;
      tag_state=NEARPOLL;
         }
      //   tyncpoll_time=0;
         next_nearbase_num=0;
@@ -686,6 +686,13 @@
         tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
   }
   
            #ifdef USART_INTEGRATE_OUTPUT
            usart_send[2] = 4;//正常模式
            usart_send[3] = report_num*6+2;//正常模式
            checksum = Checksum_u16(&usart_send[2],report_num*6+2);
            memcpy(&usart_send[4+report_num*6],&checksum,2);
            UART_PushFrame(usart_send,6+report_num*6);
         #endif
}
void Tag_App(void)//发送模式(TAG标签)
@@ -816,7 +823,7 @@
            dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
         }
}
u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor;
u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor,getrange_success=0;
u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase  1 first near_base
{
   u8 motorstate;
@@ -913,12 +920,12 @@
               dist_cm = dist_no_bias * 100; //dis ä¸ºå•位为cm的距离            
               /*--------------------------以下为非测距逻辑------------------------*/
               //dist_cm=33000;
               getrange_success = 1;
               LED0_BLINK; //每成功一次通讯则闪烁一次
               dis_after_filter=dist_cm;
               hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET];
               g_flag_Taggetdist[taglist_pos]=0;
               if(hex_dist>-1000&&hex_dist<100000)
               if(hex_dist>-1000&&hex_dist<200000)
               {
               if(abs(hex_dist-his_dist[taglist_pos])<1500||misdist_num[taglist_pos]>3)
               {
@@ -973,6 +980,7 @@
//   GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);   
   while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_send_flag&&!g_start_sync_flag)//不断查询芯片状态直到接收成功或者出现错误
   { 
      IdleTask();
   };
//GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET);   
@@ -980,7 +988,7 @@
   { u16 tag_recv_interval;
      float temp_tagpos;
   
      g_Resttimer=0;
      dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);//清除标志位
      frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度
      dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据
@@ -993,7 +1001,8 @@
//            if (anchor_type == rx_buffer[ANC_TYPE_IDX])
//            Anchor_RecPoll();
//            break;
         case SYNC:
         case SYNC:
            g_Resttimer=0;
            memcpy(&rec_syncid,&rx_buffer[ANCHOR_ID_IDX],4);
            if(rec_syncid<current_syncid)
            {
@@ -1034,7 +1043,8 @@
            }
            break;
      
         case NEAR_POLL:
         case NEAR_POLL:
            g_Resttimer=0;
            memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2);
            taglist_pos=CmpTagInList(tag_id_recv);
            if(taglist_pos==taglist_num)