From cddfe6d9a5cfc1457c4a866aa6311832768f2077 Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期四, 08 四月 2021 14:51:14 +0800 Subject: [PATCH] 1 --- Src/application/dw_app.c | 41 +++++++++++++++++++++++++++-------------- 1 files changed, 27 insertions(+), 14 deletions(-) diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c index 81eaa1e..abca4ba 100644 --- a/Src/application/dw_app.c +++ b/Src/application/dw_app.c @@ -69,9 +69,8 @@ #define FINAL_MSG_FINAL_TX_TS_IDX 18 #define FINAL_MSG_TS_LEN 4 -#define STARTPOLL REGPOLL -#define SWITCHBASE_DIST -//#define SWITCHBASE_ZHUANDIAN +#define STARTPOLL REGPOLL//#define SWITCHBASE_DIST +#define SWITCHBASE_ZHUANDIAN enum enumtagstate { REGPOLL, @@ -638,18 +637,20 @@ extern float motor_keeptime; uint8_t changemainbase_count=0,gotosleep_flag; uint32_t frame_len; +int32_t salvebase_mindist; void NearPoll(void) { - uint32_t temp1,temp2,dw_systime,salvebase_mindist=999999,mindist_slavebaseid; + uint32_t temp1,temp2,dw_systime,mindist_slavebaseid; uint32_t final_tx_time; u32 start_poll; u8 i,j,getsync_flag=0,timeout; + USART_putc(current_slotnum); dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS); //设置发送后开启接收,并设定延迟时间 dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); tag_succ_times = 0; - + salvebase_mindist=999999; if(next_nearbase_num>=MAX_NEARBASE_NUM) { next_nearbase_num = MAX_NEARBASE_NUM-1; @@ -765,7 +766,7 @@ } ancsync_time=((sync_timer)*1000+tmp_time); last_slotnum=current_slotnum; - current_slotnum=((float)(sync_timer*10)/(SLOTTIME_MS*bigslot_num))+1; + current_slotnum=((float)(sync_timer*10 - tagslotpos*SLOTTIME_MS)/(SLOTTIME_MS*bigslot_num))+1; if(current_slotnum==last_slotnum-1) {flag_getresponse=1;} lastsync_timer=sync_timer; @@ -808,6 +809,8 @@ } // dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR); } + if(flag_finalsend!=1) + {flag_finalsend = 2;} dwt_forcetrxoff(); dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR); @@ -841,14 +844,18 @@ { if( pack_index == MOTOR_ONTIME_INDEX) { - motor_keeptime = rec_remotepara[3]; + if(motor_keeptime==0) + motor_keeptime = rec_remotepara[3]; }else{ - memcpy((uint8_t*)&g_com_map + pack_index, &rec_remotepara[3], pack_length); - //返回一个error状态 - //SendComMap(pack_datalen,pack_index); - save_com_map_to_flash(); - delay_ms(100); - NVIC_SystemReset(); + if(pack_index<200) + { + memcpy((uint8_t*)&g_com_map + pack_index, &rec_remotepara[3], pack_length); + //返回一个error状态 + //SendComMap(pack_datalen,pack_index); + save_com_map_to_flash(); + delay_ms(100); + NVIC_SystemReset(); + } } } } @@ -944,7 +951,7 @@ } } } -u32 id; +u32 id,error_times=0; void Tag_App(void)//发送模式(TAG标签) { @@ -957,7 +964,13 @@ { // Dw1000_Init(); id = dwt_readdevid() ; + IdleTask(); + if(error_times++>20) + { + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } } + error_times = 0; switch(tag_state) { case REGPOLL: -- Gitblit v1.9.3