RAK439 MQTT



  • 你好:

    在测试贵司MQTT稳定性的时候,发现了在硬件定时器(用于get_stamp()的定时器)在溢出时会导致红色判断无法进入,从而导致无法publish,同时MQTTYield也会经常返回-1导致mqtt断开重连,事实上都是由于硬件定时器溢出(这个不能避免,不管多少位的的定时器最终总是会溢出)导致的,而且发现这个mqtt的例程中没有对定时器溢出做处理

    if(app_demo_ctx.mqtt_status == STATUS_RUN)
    {
    static int32_t last_time = 0;

    	if(get_stamp()-last_time > MQTT_PUBLISH_INTERVAL) 
    	{
    	 last_time = get_stamp();
         …………………..
    

    ……………………
    …………………….
    ………………………
    ……………………….
    }
    }

    #if !defined(MQTT_TASK)
    if ((ret = MQTTYield(&client, 1000)) != 0)
    {
    NRF_LOG_DEBUG("yield fail = %d\n", ret);
    app_demo_ctx.mqtt_status = STATUS_FAIL;
    }
    #endif
    这个问题很容易复现,只要让定时器溢出,马上就可以复现(初始化时减小其溢出时间)
    我的定时器是最长溢出时间大概为10小时左右,所以请问这种情况小,该怎样避免这个中情况的出现?


登录后回复
 

与 RAK支持中心 的连接断开,我们正在尝试重连,请耐心等待