[已解决]在MQTT中的TCP样例中,在接受中断里添加cjson解析的部分

超级小星星123
Posts: 11
Joined: Fri Oct 21, 2022 9:36 am

[已解决]在MQTT中的TCP样例中,在接受中断里添加cjson解析的部分

Postby 超级小星星123 » Thu Dec 08, 2022 6:12 am

  1. case MQTT_EVENT_DATA:
  2.         ESP_LOGI(TAG, "MQTT_EVENT_DATA");
  3.         printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);
  4.         printf("DATA=%.*s\r\n", event->data_len, event->data);
  5.         // 创建json数据解析对象
  6.         pJsonRoot = cJSON_Parse(event->data);
  7.         //如果是否json格式数据
  8.         if (pJsonRoot !=NULL)
  9.         {
  10.             printf("Data NULL!\r\n");
  11.         }
  12.         // 解析数据
  13.         // char bssid[23] = {0};
  14.         pJsonRoot = cJSON_GetObjectItem(pJsonRoot, "msg");    // 解析msg字段字符串内容
  15.         ESP_LOGI(TAG, "Data=%s", cJSON_Print(pJsonRoot));
  16.         // 释放内存
  17.         // cJSON_Delete(pJsonRoot);
  18.         break;
添加的代码如上所示,但是烧录后每次到输出的部分就到倒是重启,报错的警告为Guru Meditation Error: Core 0 panic'ed (LoadStoreError). Exception was unhandled.
如果把输出的部分删除,就不会出现重启的情况,将输出部分改为printf也会报错
请问一下,如果我需要在这里添加cjson解析代码并将获取到的数据输出出去,应该如何修改代码?
Snipaste_2022-12-08_14-11-21.png
Snipaste_2022-12-08_14-11-21.png (167.04 KiB) Viewed 1669 times
这个是通过命令查看到的位置,就是代码中的第十五行。
Last edited by 超级小星星123 on Thu Feb 23, 2023 9:20 am, edited 1 time in total.

超级小星星123
Posts: 11
Joined: Fri Oct 21, 2022 9:36 am

Re: 在MQTT中的TCP样例中,在接受中断里添加cjson解析的部分

Postby 超级小星星123 » Thu Dec 08, 2022 8:08 am

问题已经解决了,需要重新创建一个task,然后在分配空间的时候建议在1500以上,否则就会出现栈空间溢出的情况,对于任务优先级分配根据实际的情况来安排,在新的task任务中进行数据的解析和处理操作就不会出现对于SPI占用异常的错误。

Who is online

Users browsing this forum: Google [Bot] and 151 guests