本文主要记录了 esp32 + 以太网 +mqtt 功能时遇到的堆栈溢出的情况,千里之堤毁于蚁穴,开发过程的不细心导致多付出了一天多的时间,记录于此,共勉
个人简介
if(以太网连接成功){
mqtt_start();
}
// 创建一个任务,每间隔1s,将数据发到 mqtt broker
xTaskCreate(mqtt_publish_test, "mqtt_publish_test", 1024*4, NULL, configMAX_PRIORITIES, NULL);
esp32 开发板以太网连接上网,连接成功后通过 mqtt 将消息上传至服务器,但是存在问题
代码运行一段时间后,报错内存溢出 no mem for receive buffer
,然后就卡死了,只能手动重启
以太网口 task 运行时,会动态分配 ETH_MAX_PACKET_SIZE
= 1522Byte 的内存,为什么程序的堆栈溢出呢??
在 main 函数中,利用库函数监控堆栈的情况
ESP_LOGI("main", "[APP] Free memory: %d bytes", esp_g