uC/OS-III统计任务堆栈、CPU使用率
1、读取任务堆栈使用函数
OSTaskStkChk(&TaskBStkTCB,&stk_free,&stk_used,&err);
Void OSTaskStkChk(OS_TCB *p_tcb,CPU_STK_SIZE* p_free,CPU_STK_SIZE*p_used,OS_ERR *p_err);
调用上面这个函数就能获取到指定任务的堆栈使用量。其中
*p_tcb:指向任务的TCB块
*p_free:任务空闲的堆栈字节数
*p_used:任务使用的堆栈字节数
*p_err:函数执行结果代码
特别提示,如果想要使用这个功能,那么必须在os_cfg.h这个操作系统配置文件中打开宏:
#define OS_CFG_STAT_TASK_STK_CHK_EN 1u /* Check task stacks from statistic task
OSTaskStkChk(&Core_Page_TCB,&free,&used,&err);
printf("Core_Pageused/free:%d/%d usage:%%%d\r\n",used,free,(used*100)/(used+free));
2、用系统OS_TCB读取统计任务堆栈、CPU使用率
Static void DispTaskInfo()
{OS_TCB *p_tcb;
OS_ERR err;CPU_SR_ALLOC();CPU_CRITICAL_ENTER();
p_tcb = OSTaskDbgListPtr;
CPU_CRITICAL_EXIT();While( p_tcb != (OS_TCB *) 0 ){TaskCPU = (float) p_tcb -> CPUUsage / 100;//追踪任务的CPU使用率freeStk = p_tcb -> StkFree;//空闲堆栈,任务尚未使用的堆栈usedStk = p_tcb -> StkUsed;//已使用的堆栈(任务堆栈的最大使用量)strcpy( task_name, p_tcb -> NamePtr);//任务名CUP_ALL = (float) OSStatTaskCPUUsage / 100; //应用程序的CPU总的使用率CPU_CRITICAL_ENTER();
p_tcb = p_tcb -> DbgNextPtr; //指向下一个任务的TCB
CPU_CRITICAL_EXIT();}
}
3、uC/OS-III的统计任务由OS_CFG_STAT_TASK_EN(在os_cfg.h中)控制
在main()函数创建的第一个也是唯一一个应用任务中调用
OSStatTaskCPUUsageInit(),
只能在调用OSStatTaskCPUUsageInit()函数之后才能创建其他任务
OSStatTaskCPUUsage这个变量表示应用程序的CPU总的使用率
uC/OS-III统计任务堆栈、CPU使用率相关推荐
- RTOS 系统篇-统计任务的 CPU 使用率
RTOS 系统篇-统计任务的 CPU 使用率 概述 RTOS 中可以通过一些函数来统计每个任务使用 CPU 的时间,以及所使用时间占据总时间的比例.比如:系统在一段 100s 的时间内,任务 A 使用 ...
- android cpu使用率 代码,实现统计 android手机 CPU使用率
# -*- coding:utf-8 -*- ''' Created on Sep 10, 2018 @author: SaShuangYiBing ''' import subprocess imp ...
- UCOSii_统计任务(CPU使用率)
UCOSII在创建任务时,为任务分配堆栈空间,堆栈分配过多会出现浪费内存,但不影响功能.堆栈分配太小,就会出现HardFault异常,数组访问越界等等问题,最终导致程序崩溃,因此为任务分配适当的内存非 ...
- UC/OS III操作系统学习笔记
UCOS操作系统学习笔记 1.UCOSIII任务 1.1任务管理 1.2 任务创建和删除.挂起和恢复 1.3 系统内部任务 2.UCOSIII中断和时间管理 2.1 中断管理 2.2 时间管理 3.U ...
- uC/OS iii(三)任务管理之任务状态
博客已转移至https://www.cnblogs.com/heart-flying/p/10148254.html
- RTOS系统CPU使用率和任务堆栈空间统计方法
在做产品开发时,我们都会接触到一个概念,那就是余量.对于硬件,比如某电容耐压至少需要15V,那么根据经验和设计规则,可能会留有一定的余量,最后选型耐压值为16V的电容.硬件如此,软件呢?更需要按照这种 ...
- uc/OS-II操作系统:uc/OS中的任务_上(如不懂——>请收下我的膝盖)
uc/OS中任务的学习目录 注:本章未写完的在后面章节会继续书写 (1)任务的基本概念 (2)任务堆栈 (3)任务控制块及任务控制块链表 (4)任务就绪表及任务调度 (5)任务的创建 (6)任务的挂起 ...
- uc/os学习之路(一) —— 初识uc/os
初识实时操作系统 实时操作系统是指当外界事件或数据产生时,能在规定的时间内进行处理并作出相应.实时操作系统有一下基本特征: 多任务操作系统 多级中断机制 优先调度机制 现广泛使用的实时操作系统有很多种 ...
- STM32F103C8T6移植uc/OS
STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS 一.题目要求 二.使用STM32CubeMX建立HAL库 三.准备uCOS ...
最新文章
- mysql 5.6.20安装_Windows下面安装和配置MySQL(5.6.20)
- flask教程之创建第一个flask应用
- 40_pytorch Batch Norm
- like ,order 使用索引
- Access Token 与 Refresh Token【转载哒科普啊】
- 如何用ABAP代码读取SAP Business partner的附件数据
- Jquery 获取日期date()对象,jquerydate
- 算法 --- 删除数组中重复项
- C++:52---多重继承
- Introducing the ClearGLASS App on ClearOS
- 美国科学院公布新一批院士名单,中科院曹晓风及五名华裔教授当选
- 窄带物联网(NB-IoT)初步了解
- c语言1+2+3+4+5_C程序来计算系列1+(1 + 2)+(1 + 2 + 3)+(1 + 2 + 3 + 4)+ ... +(1 + 2 + 3 + ... + n)...
- 两位动态数码管电子秒表c语言,清翔电子51单片机6课动态显示数码管作业秒表...
- 10-05 Java 内部类概述和讲解
- python服务器搭建nginx_从0开始搭建nginx-uWSGI-Django-python服务器
- 在linux服务器上安装jdk
- Mysql 语法执行顺序
- MyEclipse断点无效
- jquery stop()方法