From f8b2fa433d03144490a1e887f3ffb56ca8fad97d Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期四, 09 七月 2020 23:24:34 +0800 Subject: [PATCH] 修改部分bug,华星测试没问题 --- Src/application/dw_app.c | 33 +++++++++++++++++++++++++++------ 1 files changed, 27 insertions(+), 6 deletions(-) diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c index 50fba29..62857f9 100644 --- a/Src/application/dw_app.c +++ b/Src/application/dw_app.c @@ -266,7 +266,7 @@ u8 GetRandomSlotPos(uint32_t emptyslot) { u8 i,temp_value; - temp_value = GetRandomValue(); + temp_value = HAL_LPTIM_ReadCounter(&hlptim1);//GetRandomValue(); for(i=temp_value%32;i<max_slotpos;i++) { if(((emptyslot>>i)&0x1)==0) @@ -294,6 +294,7 @@ u8 nearbase_num=0,last_nearbase_num,next_nearbase_num,last_slotnum; u32 rec_tagpos_binary; int16_t offset=2700; +u8 motor_state,rec_remotepara_state,rec_remotepara[30]; void NearPoll(void) { @@ -314,6 +315,7 @@ last_nearbase_num=next_nearbase_num; nearbase_num=next_nearbase_num; recbase_num=0; + motor_state=0; tx_near_msg[BATTARY_IDX] = Get_Battary(); //tx_near_msg[BUTTON_IDX] = !READ_KEY0; @@ -331,7 +333,7 @@ flag_getresponse=0; start_count=HAL_LPTIM_ReadCounter(&hlptim1); recbase_num=0; - timeout=ceil((float)nearbase_num*0.6)+20; + timeout=ceil((float)nearbase_num*0.4)+2; end_count=start_count+(timeout<<5); if(end_count>=32768) {end_count-=32768;} @@ -409,6 +411,9 @@ exsistbase_list[rec_nearbasepos]=KEEP_TIMES; memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); nearbase_distlist[rec_nearbasepos]=temp_dist; + if((rx_buffer[MOTORSTATE_INDEX]&0xf)!=3) + motor_state=rx_buffer[MOTORSTATE_INDEX]&0xf; + rec_remotepara_state=rx_buffer[MOTORSTATE_INDEX]>>4; mainbase_lost_count=0; flag_finalsend=1; @@ -427,16 +432,27 @@ flag_getresponse=1; memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4); - tyncpoll_time=0; + //时间同步 ancsync_time=((sync_timer)*1000+tmp_time); last_slotnum=current_slotnum; - current_slotnum=round((float)sync_timer/g_com_map[COM_INTERVAL])+1; + current_slotnum=((float)sync_timer/g_com_map[COM_INTERVAL])+1; if(current_slotnum==last_slotnum-1) {flag_getresponse=1;} lastsync_timer=sync_timer; offsettimeus=ancsync_time-current_count*LPTIMER_LSB+offset; SetNextPollTime(tyncpoll_time); + if(rec_remotepara_state&&rec_remotepara_state!=g_com_map[REMOTEPARA_STATE]) + { + g_com_map[REMOTEPARA_STATE]=rec_remotepara_state; + memcpy(rec_remotepara,&rx_buffer[REMOTEPARA_INDEX],REMOTEPARA_LEN); + memcpy(&g_com_map[COM_INTERVAL],&rec_remotepara[0],8); + memcpy(&g_com_map[POWER],&rec_remotepara[8],10); + save_com_map_to_flash(); + delay_ms(100); + NVIC_SystemReset(); + + } // count_offset=sync_count-current_count-143; // current_slottimes=(ancsync_time-10000)/(g_com_map[COM_INTERVAL]*1000); @@ -471,6 +487,11 @@ memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); nearbase_distlist[rec_nearbasepos]=temp_dist; + if(motor_state<(rx_buffer[MOTORSTATE_INDEX]&0xf)&&(rx_buffer[MOTORSTATE_INDEX]&0xf)!=3) + { + motor_state=rx_buffer[MOTORSTATE_INDEX]; + } + final_msg_set_ts(&tx_near_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos)*4], resp_rx_ts); dwt_writetxdata(28+nearbase_num*4, tx_near_msg, 0);//将发送数据写入DW1000 dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度 @@ -504,7 +525,7 @@ // } tagslotpos=GetRandomSlotPos(rec_tagpos_binary); tyncpoll_time = (tagslotpos--%max_slotpos)*slottime; - // SetNextPollTime(tyncpoll_time); + SetNextPollTime(tyncpoll_time); } // tyncpoll_time=0; next_nearbase_num=0; @@ -604,7 +625,7 @@ tagslotpos=GetRandomSlotPos(rec_tagpos_binary); //tagslotpos=rx_buffer[TAGSLOTPOS]; memcpy(nearbaseid_list,&rx_buffer[NEARBASEID_INDEX],nearbase_num*2); - slottime=ceil((nearbase_num+2)*0.3)+1; + //slottime=ceil((nearbase_num+2)*0.3)+1; tyncpoll_time=tagslotpos*slottime; tag_state=NEARPOLL; } -- Gitblit v1.9.3