dwt_setrxtimeout的疑惑
根据手册里面的描述,dwt_setrxtimeout函数的参数是'Timeout time in micro seconds (1.0256 us). If this is 0, the timeout will be disabled.'我理解为:如果dwt_setrxtimeout(0); 程序就会一直阻塞,直到收到消息。
但是实际运行的结果是,程序不会阻塞,而是会阻塞一段时间后返回SYS_STATUS_ALL_RX_ERR,
请问是不是我的设置有问题?
代码如下:
dwt_setrxtimeout(0);
dwt_rxenable(DWT_START_RX_IMMEDIATE);
while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))
{ };
if (status_reg & SYS_STATUS_RXFCG)
{
// 收到消息到这里
}
else
{
// 不会到这里
}
stm32 程序不会阻塞。
这个阻塞是dw1000 内部状态机 dwt_setrxtimeout(0)是设置的dwm1000模块超时时间为0,程序一直阻塞。
stm32是根据while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))获取DWM1000寄存器状态来判断是否获取到数据。
页:
[1]