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使用率相关推荐

  1. RTOS 系统篇-统计任务的 CPU 使用率

    RTOS 系统篇-统计任务的 CPU 使用率 概述 RTOS 中可以通过一些函数来统计每个任务使用 CPU 的时间,以及所使用时间占据总时间的比例.比如:系统在一段 100s 的时间内,任务 A 使用 ...

  2. android cpu使用率 代码,实现统计 android手机 CPU使用率

    # -*- coding:utf-8 -*- ''' Created on Sep 10, 2018 @author: SaShuangYiBing ''' import subprocess imp ...

  3. UCOSii_统计任务(CPU使用率)

    UCOSII在创建任务时,为任务分配堆栈空间,堆栈分配过多会出现浪费内存,但不影响功能.堆栈分配太小,就会出现HardFault异常,数组访问越界等等问题,最终导致程序崩溃,因此为任务分配适当的内存非 ...

  4. UC/OS III操作系统学习笔记

    UCOS操作系统学习笔记 1.UCOSIII任务 1.1任务管理 1.2 任务创建和删除.挂起和恢复 1.3 系统内部任务 2.UCOSIII中断和时间管理 2.1 中断管理 2.2 时间管理 3.U ...

  5. uC/OS iii(三)任务管理之任务状态

    博客已转移至https://www.cnblogs.com/heart-flying/p/10148254.html

  6. RTOS系统CPU使用率和任务堆栈空间统计方法

    在做产品开发时,我们都会接触到一个概念,那就是余量.对于硬件,比如某电容耐压至少需要15V,那么根据经验和设计规则,可能会留有一定的余量,最后选型耐压值为16V的电容.硬件如此,软件呢?更需要按照这种 ...

  7. uc/OS-II操作系统:uc/OS中的任务_上(如不懂——>请收下我的膝盖)

    uc/OS中任务的学习目录 注:本章未写完的在后面章节会继续书写 (1)任务的基本概念 (2)任务堆栈 (3)任务控制块及任务控制块链表 (4)任务就绪表及任务调度 (5)任务的创建 (6)任务的挂起 ...

  8. uc/os学习之路(一) —— 初识uc/os

    初识实时操作系统 实时操作系统是指当外界事件或数据产生时,能在规定的时间内进行处理并作出相应.实时操作系统有一下基本特征: 多任务操作系统 多级中断机制 优先调度机制 现广泛使用的实时操作系统有很多种 ...

  9. STM32F103C8T6移植uc/OS

    STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS 一.题目要求 二.使用STM32CubeMX建立HAL库 三.准备uCOS ...

最新文章

  1. mysql 5.6.20安装_Windows下面安装和配置MySQL(5.6.20)
  2. flask教程之创建第一个flask应用
  3. 40_pytorch Batch Norm
  4. like ,order 使用索引
  5. Access Token 与 Refresh Token【转载哒科普啊】
  6. 如何用ABAP代码读取SAP Business partner的附件数据
  7. Jquery 获取日期date()对象,jquerydate
  8. 算法 --- 删除数组中重复项
  9. C++:52---多重继承
  10. Introducing the ClearGLASS App on ClearOS
  11. 美国科学院公布新一批院士名单,中科院曹晓风及五名华裔教授当选
  12. 窄带物联网(NB-IoT)初步了解
  13. c语言1+2+3+4+5_C程序来计算系列1+(1 + 2)+(1 + 2 + 3)+(1 + 2 + 3 + 4)+ ... +(1 + 2 + 3 + ... + n)...
  14. 两位动态数码管电子秒表c语言,清翔电子51单片机6课动态显示数码管作业秒表...
  15. 10-05 Java 内部类概述和讲解
  16. python服务器搭建nginx_从0开始搭建nginx-uWSGI-Django-python服务器
  17. 在linux服务器上安装jdk
  18. Mysql 语法执行顺序
  19. MyEclipse断点无效
  20. jquery stop()方法

热门文章

  1. 还在抢占会议室吗?来看看高手怎么处理!
  2. 艾永亮:马云的“野心之作”无人超市,结果真的如愿以偿吗
  3. 矩阵论——施密特正交化求行列式QR分解
  4. 哪一类功率放大电路效率最高_详述推挽式功率放大输出电路
  5. 硬盘被格式化了怎么恢复
  6. 机器学习模型可视化(Slingshot)
  7. 解决若依框架中只适配MySQL的问题,若依框架完美适配达梦数据库的代码生成,适配其他框架原理相似。
  8. 数字IC学习笔记(1)CMOS晶体管原理
  9. r0-r15寄存器的作用
  10. 震惊!某大学生被生活搞得苦不堪言原因竟然是……