51uwb.cn

标题: dwt_setrxtimeout的疑惑 [打印本页]

作者: aimar500    时间: 2020-6-18 17:46
标题: 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
    {
          // 不会到这里
    }


作者: 蓝点无限    时间: 2020-6-20 17:07
stm32 程序不会阻塞。
这个阻塞是dw1000 内部状态机
作者: dragon_L    时间: 2020-8-27 13:50
dwt_setrxtimeout(0)是设置的dwm1000模块超时时间为0,程序一直阻塞。
stm32是根据while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))获取DWM1000寄存器状态来判断是否获取到数据。




欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3