OSTaskStkChk()函数可以用来计算任务栈的剩余量,其原型如下:

INT8U OSTaskStkChk (INT8U prio, OS_STK_DATA *p_stk_data);


其中,prio为任务的优先级,p_stk_data为指向OS_STK_DATA结构体的指针,用于存储任务栈的信息。

OSTaskCreateExt()函数用于创建任务,其原型如下:
 

OS_ERR OSTaskCreateExt (void (*task)(void *p_arg),
                        void *p_arg,
                        OS_STK *p_tos,
                        INT8U prio,
                        INT16U id,
                        OS_STK *p_stk,
                        INT32U stk_size,
                        void *p_ext,
                        INT16U opt);

其中,p_tos为指向任务栈栈顶的指针,p_stk为指向任务栈栈底的指针,stk_size为任务栈的大小。

因此,可以通过以下代码计算OSTaskCreateExt()创建的线程的任务栈剩余量:

OS_STK_DATA stk_data;
OSTaskStkChk(prio, &stk_data);
INT32U stk_free = stk_data.OSFree;

其中,prio为OSTaskCreateExt()创建的线程的优先级。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐