|
- msg_f_send.destAddr[0] =(0x0002) &0xFF;
- msg_f_send.destAddr[1] = ((0x0002)>>8) &0xFF;
- msg_f_send.seqNum = distance_seqnum;
- msg_f_send.messageData[0]='P';//Poll message
-
-
-
- msg_f_send.destAddr[0] =(0x0003) &0xFF;
- msg_f_send.destAddr[1] = ((0x0003)>>8) &0xFF;
- msg_f_send.seqNum = distance_seqnum;
- msg_f_send.messageData[0]='P';//Poll message
复制代码
你这个部分有问题,设定基站地址0x0002,第一个数据为P,然后由设定地址0x0002,第一个数据为P
后面将数据发送出去
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, !GPIO_PIN_RESET);
- dwt_writetxdata(psduLength ,(uint8 *)&msg_f_send, 0) ; // write the frame data
- dwt_writetxfctrl(psduLength, 0);
- dwt_starttx(DWT_START_TX_IMMEDIATE);
-
- while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))
- { };
- dwt_enableframefilter(DWT_FF_DATA_EN);
- dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS*10);
- dwt_rxenable(0);
- if(++distance_seqnum == 255)
- distance_seqnum = 0;
- Tag_State = TAG_POLL_SENT;
复制代码
这样执行代码,后面的地址覆盖了前面的地址信息,只有向基站地址为0x0003 发送了信息。
可以将地址信息放到一个数组里,例如
uint16 short_address[2] =[0x0002,0x0003]; //放到函数外面,全部变量
uint16 index = 0;//放到函数外面,全部变量
//下面的代码放到函数内
msg_f_send.destAddr[0] =( short_address[index ]) &0xFF;
msg_f_send.destAddr[1] = ((short_address[index ])>>8) &0xFF;
index++;
if(index == 2)
index = 0;
代码大概逻辑这样,具体你调试吧 |
|