完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
实际的应用场景是录音的时候创建了一个任务去读i2s数据,放到一个ringbuf里,然后主任务从ringbuf里取数据进行降噪编码处理。
长跑测试发现设备在执行录音时偶然会发生死机现象,排查发现是读i2s数据的任务在结束前会调用ESP_LOG接口打印任务结束的日志,如果子任务正在打印日志时,被主任务调用vTaskDelete()销毁,会导致esp32卡死,且没有打印报错信息 在一段时间后(几十分钟甚至几个小时后),报错“ assert failed: vTaskPriorityDisinheritAftertimeout”,然后设备重启 关键部分的代码类似下面这段 Code: Select all #include #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_spi_flash.h" #include "esp_log.h" static const char *TAG = "main"; static void test_task(void *args) { while (1) { ESP_LOGI(TAG, "test_task working"); } vTaskDelete(NULL); } void app_main(void) { while (1) { ESP_LOGI(TAG, "main task running"); TaskHandle_t test_task_handle = NULL; xTaskCreate(test_task, "test_task", 1024 * 5, NULL, 10, &test_task_handle); vTaskDelay(10); vTaskDelete(test_task_handle); vTaskDelay(100); } fflush(stdout); esp_restart(); } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
525浏览 6评论
434浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
423浏览 5评论
415浏览 4评论
389浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 05:23 , Processed in 0.594786 second(s), Total 43, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号