OpenEdv-开源电子网

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

OSTaskRegGet(0,0,&err);无法返回任务执行数

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-4-15
在线时间
6 小时
发表于 2017-7-17 20:58:37 | 显示全部楼层 |阅读模式
1金钱
      我移植了UcosIII之后调用OSTaskRegGet(0,0,&err);读取任务执行数,返回值是正确的,
LED灯每翻转一次任务数加一,串口输出的值都是对的,然后我修改了(OS_TICK     ) 0u,的值把0u改为1u,
然后OSTaskRegGet(0,0,&err);就输出0,移植输出0,即使我把(OS_TICK     ) 1u的值改回(OS_TICK     ) 0u,
OSTaskRegGet(0,0,&err);的返回值还是0.

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-7-18 00:52:36 | 显示全部楼层
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-4-15
在线时间
6 小时
 楼主| 发表于 2017-7-18 08:58:17 | 显示全部楼层

大神给点建议呗
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2020-2-22 17:20:01 | 显示全部楼层
这个函数原型是这样
INT32U  OSTaskRegGet (INT8U   prio,
                      INT8U   id,
                      INT8U  *perr)

/*
*********************************************************************************************************
*                                 GET THE CURRENT VALUE OF A TASK REGISTER
*
* Description: This function is called to obtain the current value of a task register.  Task registers
*              are application specific and can be used to store task specific values such as 'error
*              numbers' (i.e. errno), statistics, etc.  Each task register can hold a 32-bit value.
*
* Arguments  : prio      is the priority of the task you want to get the task register from.  If you
*                        specify OS_PRIO_SELF then the task register of the current task will be obtained.
*
*              id        is the 'id' of the desired task register.  Note that the 'id' must be less
*                        than OS_TASK_REG_TBL_SIZE
*
*              perr      is a pointer to a variable that will hold an error code related to this call.
*
*                        OS_ERR_NONE            if the call was successful
*                        OS_ERR_PRIO_INVALID    if you specified an invalid priority
*                        OS_ERR_ID_INVALID      if the 'id' is not between 0 and OS_TASK_REG_TBL_SIZE-1
*
* Returns    : The current value of the task's register or 0 if an error is detected.
*
* Note(s)    : The maximum number of task variables is 254
*********************************************************************************************************
*/

你把id都写成0了,你应该传个变量,它返回的值如果不是0的话就对了
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2020-2-22 17:26:46 | 显示全部楼层
1375917982gxut 发表于 2020-2-22 17:20
这个函数原型是这样
INT32U  OSTaskRegGet (INT8U   prio,
                      INT8U   id,

void  OSTaskRegSet (INT8U    prio,
                    INT8U    id,
                    INT32U   value,
                    INT8U   *perr)

你要先设置reg值
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 21:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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