UCOS-Ⅲ查看任务堆栈空间:OSTaskStkChk()函数

article/2025/11/8 1:48:24

UCOS-Ⅲ查看任务堆栈空间:OSTaskStkChk()函数

文章目录

  • 前言
  • 一、准备工作
  • 二、使用步骤
    • 1.创建堆栈检测任务
    • 2.在头文件os_cfg.h开启宏OS_CFG_STAT_TASK_STK_CHK_EN
    • 3.在堆栈检测任务使用OSTaskStkChk()函数
  • 三、结果


前言

硬件的RAM资源有限,UCOSⅢ提供了一个系统函数OSTaskStkChk()用来检测创建任务的堆栈空间大小,用户可以根据检测结果,通过重新编译代码,给每一个任务分配更加合理的栈空间数值。

一、准备工作

硬件:STM32F407探索版
系统:UCOSⅢ
软件:串口助手

二、使用步骤

1.创建堆栈检测任务

检测任务的优先级最好设置为在本系统中最低的那一个。

代码如下:

//任务优先级
#define STORAGESTACK_PRIO		10
//任务堆栈大小	
#define STORAGESTACK_STK_SIZE 		128
//任务控制块
OS_TCB STORAGESTACK_TCB;
//任务堆栈	
CPU_STK STORAGESTACK_STK[STORAGESTACK_STK_SIZE];
//任务函数
void storagestack_task(void *p_arg);
//创建STORAGESTACK任务OSTaskCreate((OS_TCB 	* )&STORAGESTACK_TCB,		(CPU_CHAR	* )"storagestack task", 		(OS_TASK_PTR )storagestack_task, 			(void		* )0,					(OS_PRIO	  )STORAGESTACK_PRIO,     	(CPU_STK   * )&STORAGESTACK_STK[0],	(CPU_STK_SIZE)STORAGESTACK_STK_SIZE/10,	(CPU_STK_SIZE)STORAGESTACK_STK_SIZE,		(OS_MSG_QTY  )0,					(OS_TICK	  )0,					(void   	* )0,				(OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, (OS_ERR 	* )&err);	

2.在头文件os_cfg.h开启宏OS_CFG_STAT_TASK_STK_CHK_EN

代码如下:

#define OS_CFG_STAT_TASK_STK_CHK_EN     1u   /* Check task stacks from statistic task                                 */

3.在堆栈检测任务使用OSTaskStkChk()函数

3.1.了解OSTaskStkChk()的参数

void  OSTaskStkChk (OS_TCB        *p_tcb,	//待检测任务的TCB块CPU_STK_SIZE  *p_free,	//待检测任务的空闲堆栈字节数CPU_STK_SIZE  *p_used,  //待检测任务的使用堆栈字节数OS_ERR        *p_err)	//返回的错误码

3.2 使用OSTaskStkChk()函数

void storagestack_task(void *p_arg)
{OS_ERR err;CPU_STK_SIZE myfree,myused;p_arg = p_arg;while(1){OSTaskStkChk (&Task1_TaskTCB,&myfree,&myused,&err);printf("Task1_Task has free:%d, Usage:%%%d\r\n",myfree,(myused*100)/(myfree+myused));	//计算任务1的空闲字节数和堆栈使用率OSTaskStkChk (&Task2_TaskTCB,&myfree,&myused,&err);printf("Task2_Task has free:%d, Usage:%%%d\r\n",myfree,(myused*100)/(myfree+myused));	//计算任务2的空闲字节数和堆栈使用率OSTaskStkChk (&STORAGESTACK_TCB,&myfree,&myused,&err);printf("STORAGESTACK_TCB has free:%d, Usage:%%%d\r\n",myfree,(myused*100)/(myfree+myused));	//计算本任务的空闲字节数和堆栈使用率printf("--------------------------------------------\r\n\r\n");OSTimeDlyHMSM(0,0,3,0,OS_OPT_TIME_HMSM_STRICT,&err); //延时3s}		
}

三、结果

三个任务的堆栈空间笔者都设置为128字节,任务处理的内容不同堆栈使用率也不同
三个任务的堆栈空间笔者都设置为128字节,任务处理的内容不同堆栈使用率也不同


http://chatgpt.dhexx.cn/article/qgqx7WPV.shtml

相关文章

【UCOSIII操作系统】任务篇(1)创建任务

UCOSIII操作系统 UCOSIII操作系统——任务篇(1)创建任务一、UCOSIII——任务 简介二、创建任务流程1、定义任务栈2、定义任务控制块TCB3、定义任务主体函数4、创建任务 三、任务的状态 UCOSIII其他内容导航不迷路 UCOSIII操作系统-简介 【UCOSIII操作系统…

FreeRTOS中taskENTER_CRITICAL()和taskEXIT_CRITICAL()函数运用

以下转载自安富莱电子: http://forum.armfly.com/forum.php 临界段 代码的临界段也称为临界区,一旦这部分代码开始执行,则不允许任何中断打断。为确保临界段代码 的执行不被中断,在进入临界段之前须关中断,而临界段代…

OSTaskCreateExt()建立任务

ucosII创建任务的硬性要求: 1.任务必须被创建在多任务启动前或运行的任务中 2.任务不能在ISR(中断)中创建 3.任务必须在死循环中,且不能有返回 OSTaskCreateExt()建立任务 NT8U OSTaskCreateExt (void (*task)(void *pd), …

赢在微点答案专区英语_英语u校园读写2答案unit3,u校园新标准大学英语视听说3单元测试答案搜题公众号...

英语u校园读写2答案unit3,u校园新标准大学英语视听说3单元测试答案搜题公众号,u校园大学英语读写4第一单元答案查题APP更多相关问题A.婴儿期 B.幼儿期 C.学龄前期 D.学龄期 E.青春期关于自我,正确的说法是(…

新视野大学英语视听说第三版答案

Unit 1 Unit 2 Unit 3 Unit 4 Unit 5 Unit 6 Unit 7 Unit 8

视听说教程(第三版)4 quiz 1

视听说教程(第三版)4 quiz 1 Reading Comprehension Section A Passage One Questions 1 to 5 are based on the following passage. We all want to raise kids who are happy and successful, but we often mistakenly think that money is the key …

welearn 视听说1-4

词汇题(55道) 1. You should carefully think over_____ the manager said at the meeting. A. that B. which C. what D. whose 1.选C,考察宾语从句连接词,主句谓语动词think over后面缺宾语,后面的宾语从句谓语动…

使用RemObjects Pascal Script

摘自RemObjects Wiki 本文提供RemObjects Pascal Script的整体概要并演示如何创建一些简单的脚本. Pascal Script包括两个不同部分: 编译器 (uPSCompiler.pas)运行时 (uPSRuntime.pas) 两部分彼此独立.可以分开使用,或通过TPSScript 控件使用他们,这个控件定义在uPSComponent.p…

搭建一个简单的Pascal脚本开发环境

使用innosetup进行打包,涉及到需要编写一些Pascal脚本,所以了解了下Pascal的相关语法。 这里主要介绍如何搭建一个简单的Pascal开发环境。 一、Free Pascal Free Pascal(全称 FPK Pascal)是一个32位和64位专业Pascal编译器。它…

pascal编程语言介绍

Pascal是一种过程式编程语言,由Niklaus Wirth于1968年设计并于1970年发布,并以法国数学家和哲学家Blaise Pascal的名字命名。Pascal可以运行在多种平台上,例如Windows、Mac OS和各种版本的UNIX/Linux。[3] 软件名称 Pascal 软件平台 Windows、…

Free Pascal IDE安装

1. Free Pascal IDE 安装 首先,去 https://www.freepascal.org/download.var 下载Free Pascal IDE。我选择的sourceforge镜像 fpc-3.0.2.i386-win32.exe,下载比较慢,请耐心等待。下载完成后,双击exe文件进行安装&#xf…

[pascal入门]数组

一、本节目标 本节我们将要讲述数组。本节目标: 一维数组二维数组字符数组 二、一维数组 我们通过一个案例来简单的理解数组。班主任要计算班级里面50个同学数学成绩的平均成绩,道理上讲这是一个比较简单的问题,只需要把每个人的成绩加起来除…

linux的pascal语言,pascal语言视频教程 Linux GCC常用命令详解

GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言&#xff0…

vscode 配置 pascal环境

vscode 配置 pascal环境 网上关于配置pascal的教程不太多,我试验了好几个,都没搞对,其中有很多原因吧,最后从较多、较熟悉的c环境开始配置理解,才算是慢慢懂得了这个配置过程,前前后后大概花一个星期&…

信息学竞赛 c语言 pascal,pascal信息学竞赛教程

第一讲: 信息学竞赛讲座:预备知识 计算机语言是计算机软件中非常独特的一部份,它属于系统软件,但又和应用软件息息相关。它的作用是:使人类能够用某些命令、指令去让计算机为人类进行数值、逻辑运算。计算机语言中,只有一种语言是…

Pascal基础教程

第一课 初识Pascal语言 信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试…

【通用学术英语视听说答案】

通用学术英语视听说答案–主编郎曼、侯霞

英语视听说第六版答案

Unit 1 Unit 2 Unit 3 Unit 4 Unit 5 Unit 6 Unit 7 Unit 8

welearn平台答案 大学英语 视听说 综合教程

打开页面 f12 ctrlshiftc 鼠标移动到选项位置 带data-solution的就是答案

u校园新视野英语 视听说 读写

一、软件介绍 主要由浏览器插件的形式实现辅助看课 完全模拟人工操作,自动答题,刷时长 二、软件下载 https://www.lanzous.com/b01hihtxg 打包好的脚本浏览器,打开即用,无需配置 三、主要功能 进入课程后自动寻找未完成的任…