硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5350|回复: 1
收起左侧

[QQ群问题解答] ucos中的(OS_TCB*)1和(OS_TCB*)0是什么意思

[复制链接]

92

主题

76

回帖

92

积分

初级会员

积分
92
发表于 2014-4-3 20:54:14 | 显示全部楼层 |阅读模式
OS_TCB是个结构体,这样写啥意思啊
在uC/OS II的任務建立函數中有這么一句:

if (OSTCBPrioTbl[prio] == (OS_TCB *)0)

{

OSTCBPrioTbl[prio] = (OS_TCB *)1;

......}

(OS_TCB *)0是指向空的任务块,还是让指向0X00000000这个地址?然后在0X00000000这个地址里保存着指向OS_TCB结构的指针
(OS_TCB *)1是指向0x00000001这个地址吗?

有人说:

(OS_TCB *)0实际上是通知编译器,这个0是OS_TCB数据类型的NULL。
(OS_TCB *)1那就是说有一个任务存在了,不再是Null
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2014-4-8 14:10:36 | 显示全部楼层
本质上面OS_TCB *)0 就是处理器地址中的0X00000000地址。
而OS_TCB *1 就是处理器地址中的0X00000001地址。

UCOS这么写只是为了区分不同的状态,一般将OS_TCB *)0理解为空指针。

之所以可以这做的本质原因是,处理器的RAM地址不会放在寻址范围的前面。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 03:02 , Processed in 0.141769 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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