OpenEdv-开源电子网

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

为什么UCOS III某任务CPU占用率一直是0

[复制链接]

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
发表于 2016-10-17 14:17:15 | 显示全部楼层 |阅读模式
1金钱
统计任务的宏我打开了,然后用lcd打印出某任务占CPU的占用率发现一直是0,程序如图。因为我这条lcd打印的函数只能打印整数,所以我怀疑Led0TaskTCB.CPUUsage可能是小数,所以才在我lcd上显示是0.所以我把Led0TaskTCB.CPUUsage乘100再输出,发现还是0!!!求解啊
QQ截图20161017141049.png

最佳答案

查看完整内容[请看2#楼]

你要看led0的,应该打印Led0TaskTCB.CPUUsage,其实最好打印max,CPUUsage有可能经常出现0.
本人交流群:136045527,欢迎各位大佬和萌新
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-10-17 14:17:16 | 显示全部楼层
你要看led0的,应该打印Led0TaskTCB.CPUUsage,其实最好打印max,CPUUsage有可能经常出现0.
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

28

主题

288

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
金钱
1212
注册时间
2011-4-9
在线时间
97 小时
发表于 2016-10-17 14:30:22 | 显示全部楼层
你确定显示正常吗,你确定这个任务运行了吗。
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-17 16:58:15 | 显示全部楼层
山峰雪狼 发表于 2016-10-17 14:30
你确定显示正常吗,你确定这个任务运行了吗。

任务能运行的,因为看到了welcome等字样。而且这个函数也能显示的,图上176行那里,如果不注释掉的话,是能显示东西的。像176行注释掉那句会显示39
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2013-3-11
在线时间
72 小时
发表于 2016-10-17 22:49:56 | 显示全部楼层
我刚刚也遇到这个问题
void start_task(void * pdata)
{
    OS_CPU_SR cpu_sr=0;

    pdata = pdata;
    OSStatInit();            //cpu统计任务初始化
    OS_ENTER_CRITICAL();      //进入临界区,无法被中断打断
........................
}
注意OSStatInit(); 的位置,不能放在OS_ENTER_CRITICAL(); 之后,但要在OSInit();之后
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-10-18 13:38:25 | 显示全部楼层
有OSStatTaskCPUUsageInit(&err);初始化吗?
还有打印CPUUsageMax看看
这两个数不是小数,是0-10000的数,*0.01才是实际上使用百分比。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-18 13:45:29 | 显示全部楼层
kaxilion 发表于 2016-10-17 22:49
我刚刚也遇到这个问题
void start_task(void * pdata)
{

哥,你这是ucosII吧?我是ucosIII。原子哥的统计任务任务初始化那里有个宏,不用我去写初始化啊........
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-18 18:59:32 | 显示全部楼层
ysq7120 发表于 2016-10-18 13:38
有OSStatTaskCPUUsageInit(&err);初始化吗?
还有打印CPUUsageMax看看
这两个数不是小数,是0-10000的数 ...

有OSStatTaskCPUUsageInit(&err);初始化;在第一个任务里,统计任务的宏我也打开了。我打印发现CPUUsageMax是五千多,但是打印这个Led0TaskTCB.CPUUsage,这个Led0的cpu占用率还是0;还有就是我打印OSStatTaskCPUUsage这个,发现是三十多.
QQ图片20161018185507.png
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-10-19 08:32:59 | 显示全部楼层
你在哪里打印?有弄个task循环打印吗?
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-19 12:41:36 | 显示全部楼层
ysq7120 发表于 2016-10-19 08:32
你在哪里打印?有弄个task循环打印吗?

是在一个任务里循环打印.......想不明白。而且如果说Led0TaskTCB.CPUUsage是指任务led0的cpu占用率,那OSStatTaskCPUUsage是指什么?全部任务的cpu占用率?
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-10-19 13:30:49 | 显示全部楼层
对应cpu占用率
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-19 14:12:54 | 显示全部楼层

是不是说我在led0这个任务里打印OSStatTaskCPUUsage,就是led0这个任务的cpu占用率?
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-19 19:29:17 | 显示全部楼层

学ucos怎么才算合格啊,想做一名嵌入式工程师。现在再看任哲的那本ucos的书
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-20 20:59:26 | 显示全部楼层
ysq7120 发表于 2016-10-18 13:38
有OSStatTaskCPUUsageInit(&err);初始化吗?
还有打印CPUUsageMax看看
这两个数不是小数,是0-10000的数 ...

这是统计任务里的cpu占用率公式,为什么不是像ucos ii那样是100-run/max啊,ucos III里为什么要对这些数据进行处理(那几个if else if里)...
QQ截图20161020205614.png
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 22:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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