ESP32开发:从任务管理到调试与单元测试
1. FreeRTOS任务管理与生产者 - 消费者示例
在ESP32开发中,FreeRTOS任务管理是一项重要的技能。一个FreeRTOS任务不能返回,否则会导致应用程序崩溃。当一个任务完成且不再需要时,可以通过调用 vTaskDelete 函数来删除它。该函数以任务句柄作为参数,传递 nullptr 表示删除当前任务。
以下是消费者函数的实现:
void consumer(void *p)
{
int num;
while (true)
{
xQueueReceive(m_number_queue, &num, portMAX_DELAY);
ESP_LOGI(TAG, "c%d:%d", (int)p, num);
vTaskDelay(2);
}
}
任务循环是一个无限循环,因此函数不会返回。 xQueueReceive 函数用于从队列中取出值,当队列中没有值时,它会阻塞任务,直到有新的值到来。
2. 运行应用程序
可以通过点击PlatformIO IDE中的“Upload and Monitor project”任务来上传和监控应用程序。应用程序启动后,会打印一些日志,其中 vTaskList 输出展示了各个任务的信息,如下表所示:
| 任务名称 | 任务状态 | 优先级 | 使
超级会员免费看
订阅专栏 解锁全文
2697

被折叠的 条评论
为什么被折叠?



