| | |
| | | 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) |
| | | { |
| | | |
| | |
| | | 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.6)+2; |
| | | end_count=start_count+(timeout<<5); |
| | | if(end_count>=32768) |
| | | {end_count-=32768;} |
| | |
| | | exsistbase_list[rec_nearbasepos]=KEEP_TIMES; |
| | | memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); |
| | | nearbase_distlist[rec_nearbasepos]=temp_dist; |
| | | motor_state=rx_buffer[MOTORSTATE_INDEX]&0xf; |
| | | rec_remotepara_state=rx_buffer[MOTORSTATE_INDEX]>>4; |
| | | |
| | | mainbase_lost_count=0; |
| | | flag_finalsend=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); |
| | |
| | | memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); |
| | | nearbase_distlist[rec_nearbasepos]=temp_dist; |
| | | |
| | | if(motor_state<rx_buffer[MOTORSTATE_INDEX]&&rx_buffer[MOTORSTATE_INDEX]!=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);//设定发送数据长度 |