|
楼主 |
发表于 2020-10-20 14:10
|
显示全部楼层
本帖最后由 Ding3417 于 2020-10-20 14:19 编辑
这是一些关于 esp_log_early_timestamp 的打印信息
------------------->>>>>>>>>>>>>>>>>>>>>>>------------xthal_get_ccount: -20738276
------------------->>>>>>>>>>>>>>>>>>>>>>>------------esp_log_early_timestamp: 26713
I (26750) sct2430: Free memory: 263060 bytes
------------------->>>>>>>>>>>>>>>>>>>>>>>------------xthal_get_ccount: 18462606
------------------->>>>>>>>>>>>>>>>>>>>>>>------------esp_log_early_timestamp: 115
关于时间戳函数:uint32_t ATTR esp_log_early_timestamp()
{
return xthal_get_ccount() / (g_ticks_per_us_pro * 1000);
}
经过测试 xthal_get_ccount 最大计数为 2 的32次方 单位us 最大为:【4,294,967,296】g_ticks_per_us_pro 为CPU频率 单位为MHz ; 80-240之间
按照时间戳函数计算方式 4,294,967,296 / (80~240) / 1000 = 17895 ~ 53687 之间
if ((millis() - _print_time) < 60000)
{
if (_print_times < 10) return 1;
else {
BLINKER_ERR_LOG(TAG, "MQTT MSG LIMIT");
return 0;
}
}
else {
_print_time = millis();
_print_times = 0;
return 1;
}
所以这个limit函数 millis() 最大的参数为53687 ; _print_time 初值为0; 两者相减;应该永远都是小于60000,根本不会进去else 判断条件
于是不管隔多少时间发一次,一旦mqtt发送次数超过10次,就提示 MQTT MSG LIMIT 限制了;
不知道 这个是不是bug??
|
|