freertos栈空间检测
时间: 2023-08-05 20:04:38 浏览: 58
FreeRTOS提供了栈空间溢出检测的功能,但它会引入任务上下文切换的开销,因此仅推荐在应用开发或测试阶段使用。这个功能可以帮助用户减少代码中的错误并提高应用程序代码的质量。每个任务都独立维护自己的栈空间,栈空间总量在任务创建时进行设定。通过使用函数uxTaskGetStackHighWaterMark(),可以查询指定任务的运行历史中,其栈空间还差多少就要溢出,这个值被称为栈空间的"高水线"。在FreeRTOS源码的tasks.c文件中,可以找到taskCHECK_FOR_STACK_OVERFLOW函数在任务上下文切换时被调用,这意味着软件检测栈溢出的方式具有一定的滞后性,只有在任务发生上下文切换时才会进行检测,而不能立即检测到任务堆栈溢出的问题。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* *3* [FreeRTOS中的任务堆栈溢出检测机制](https://blog.csdn.net/ybhuangfugui/article/details/120897699)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [freeRTOS中文实用教程6--错误排查](https://blog.csdn.net/weixin_30784501/article/details/97942628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]