乐鑫技术交流
直播中

倪山骋

7年用户 1010经验值
私信 关注
[问答]

为什么不使用ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));就会报错?

为什么不使用ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));就会报错?
E (1884) event: system event loop not initialized via esp_event_loop_init
但是都是按照例程里写的                                                                                                                                               

回帖(1)

爱吃果冻

2024-6-17 17:33:02
ESP_ERROR_CHECK 是一个宏,用于检查 ESP-IDF 库函数的返回值。当使用 ESP_ERROR_CHECK 宏时,如果函数返回错误,它将打印错误信息并使程序崩溃。这有助于在开发过程中发现问题。

在 ESP-IDF 中,esp_event_loop_init 函数用于初始化系统事件循环。这个函数需要一个事件处理函数(event_handler)和一个可选的用户数据参数。如果未正确初始化事件循环,系统将无法处理事件,从而导致错误。

错误信息 "E (1884) event: system event loop not initialized via esp_event_loop_init" 表示系统事件循环未通过 esp_event_loop_init 函数初始化。这可能是由以下原因导致的:

1. 未调用 esp_event_loop_init 函数:确保在程序中调用了此函数,并传递了正确的参数。

2. 错误地使用 ESP_ERROR_CHECK:如果在使用 ESP_ERROR_CHECK 宏时,esp_event_loop_init 函数返回了错误,但宏未能正确处理错误,可能导致程序继续执行而未初始化事件循环。确保 ESP_ERROR_CHECK 宏正确地处理了错误。

3. 程序中的其他问题:如果程序中存在其他问题,可能导致 esp_event_loop_init 函数未被正确调用或执行。

为了解决这个问题,请确保:

1. 在程序中正确调用了 esp_event_loop_init 函数,并传递了正确的参数。

2. 使用 ESP_ERROR_CHECK 宏检查 esp_event_loop_init 函数的返回值,并确保在发现错误时采取适当的措施。

3. 检查程序中的其他部分,确保没有其他问题影响事件循环的初始化。

通过这些步骤,您应该能够解决 "E (1884) event: system event loop not initialized via esp_event_loop_init" 的错误。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分