查看: 2585|回复: 2

[其他] 求助贴

[复制链接]

该用户从未签到

9

主题

18

帖子

0

新手上路

Rank: 1

积分
70
最后登录
1970-1-1
发表于 2010-4-9 09:13:31 | 显示全部楼层 |阅读模式

OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)
{
    INT16U *wstk;
    INT8U  *bstk;
 
    opt     = opt;                           /* 'opt' is not used, prevent warning                     */
    wstk    = (INT16U *)ptos;                /* Load stack pointer                                     */
    *--wstk = (INT16U)p_arg;                 /* Simulate call to function with argument                */
    *--wstk = (INT16U)(task);                /* Return address.  Format: PPAGECHCL (ignore PPage)  */
    bstk    = (INT8U *)wstk;                 /* Convert WORD ptr to BYTE ptr to set CCR                */
    *--bstk = (INT8U)0x22;                   /* X Register                                             */
    *--bstk = (INT8U)0xAA;                   /* A Register                                             */   
    *--bstk = (0x00);                        /* CCR Register (IRQ Enabled!)                            */
    *--bstk = (INT8U)((INT32U)(task) >> 16); /* Save the PPAGE register                                */
    *--bstk = (INT8U)0x11;                   /* Save the H reg. (First to be pulled when task started) */   
    return ((OS_STK *)bstk);                 /* Return pointer to new top-of-stack                     */  
}
Q1:void(*task)(void *pd) 我在整个工程文件中都没有搜索到task的声明,这段代码应该怎么理解?
Q2:wstk = (INT16U*)ptos;这段代码应该怎样理解?

另附上我使用的源文件。
 
我知道答案 目前已有1人回答

ucos.rar

1.53 MB, 下载次数: 1, 下载积分: 威望 1

回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-4-9 10:07:00 | 显示全部楼层

    RE:求助贴

    q1:void 意思就是可以输入或不输入类型。就是说调用该函数时,可以没有里面的赋值。
    q2:ptos强行转换为INT16U类型。
    该会员没有填写今日想说内容.

    该用户从未签到

    9

    主题

    18

    帖子

    0

    新手上路

    Rank: 1

    积分
    70
    最后登录
    1970-1-1
     楼主| 发表于 2010-4-11 08:28:59 | 显示全部楼层

    RE:求助贴

    在(INT16 *)ptos的*是什么作用啊,在声明形参的时候已经声明了ptos是16位无符号整数指针了,为什么要在强制转换的时候加一个*号呢?是不是把ptos转换为一个指向16位无符号整数的地址的指针?
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 00:24 , Processed in 0.089508 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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