OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7859|回复: 9

获取到的OSCPUUsage怎么为零?

[复制链接]

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
发表于 2013-6-4 09:12:24 | 显示全部楼层 |阅读模式

为什么获取到的OSCPUUsage为0,其他都正常!

纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-5-8
在线时间
0 小时
发表于 2013-6-4 11:43:11 | 显示全部楼层
OSTime是在OSTimeTick里面不断增加的,而OSTimeTick是每个周期都要执行的,OSTime的值就当然会改变啦。现在关键是你能让统计任务得到运行的机会,你的统计任务不运行,你的OSCPUUsage的值就一直不会改变,因为它没有机会改变。
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-4 10:08:02 | 显示全部楼层
要先执行统计任务.

  OSStatInit(); //初始化统计任务.这里会延时1秒钟左右
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-5-8
在线时间
0 小时
发表于 2013-6-4 10:50:36 | 显示全部楼层
可能由于你加你的任务一直都在运行,而且统计任务的优先级是第二低,导致优先级很低的统计任务没有运行的机会,OSCPUUsage就维持原来初始化的值,也就是0.你可以试试在你建立的任务里都加一个延时,使得系统能够执行到统计任务,那你的OSCPUUsage就会有数值上的变化。
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
 楼主| 发表于 2013-6-4 11:35:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
if(tcnt==50)//0.5秒更新一次CPU使用率
{
tcnt=0;
POINT_COLOR=BLUE;
                             //       OSStatInit(); 
                            //       delay_ms(100);
LCD_ShowxNum(160,20,OSTime,8,16,0);
                                      LCD_ShowxNum(160,100,OSCPUUsage,4,16,0); //显示CPU使用率 
              
}
          还是不行啊,我一直在其他任务里做程序,结果后来就不显示了,在这个任务里OSTime的值是可以获取的!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
 楼主| 发表于 2013-6-4 11:36:34 | 显示全部楼层
回复【3楼】lirx:
---------------------------------
三楼!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-5-8
在线时间
0 小时
发表于 2013-6-4 11:44:22 | 显示全部楼层
OSStatInit(); 你的这个函数的位置也错了,必须在OSInit()之后,OSStart()之前。
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
 楼主| 发表于 2013-6-4 12:35:26 | 显示全部楼层
回复【7楼】lirx:
---------------------------------
//开始任务
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
pdata = pdata;         
OSStatInit(); //初始化统计任务.这里会延时1秒钟左右
  OS_ENTER_CRITICAL();

这里有呢?
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
 楼主| 发表于 2013-6-4 12:36:50 | 显示全部楼层
回复【7楼】lirx:
---------------------------------
还想问一下,为什么屏幕矫正,数字都是5555
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-5-8
在线时间
0 小时
发表于 2013-6-4 12:42:06 | 显示全部楼层
回复【8楼】象牙塔:
---------------------------------
那样的话,就有可能只是你的统计任务没有得到执行的机会。屏幕矫正,我对这个不太懂。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 01:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表