| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | // if(current_time>=end_time&¤t_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; |
| | |
| | | // 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; |
| | |
| | | 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) |