打印

请教uc/os的问题

[复制链接]
1506|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
530991163|  楼主 | 2011-11-19 10:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uC/os, ST, ge, se, AD
大家好:
         请教一个ucos中堆栈初始化子程序的问题,程序如下:
OS_STK  *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
{
INT16U  *stk;
#ifdef BANKED
INT16U  RegPage;              /* uses to save the ppage  */
INT16U *OffsetAddress;  
#endif  
stk = (INT16U *)ptos;         //load stack pointer
*--stk = opt;                //opt the is one byte blank
#ifdef BANKED
OffsetAddress = (INT16U *)&task;  /* 16 bit address*/
RegPage = (INT8U)task;            /* PPAGE */
*--stk = (INT16U)*OffsetAddress;     //pc for use of opt in task
*--stk = (INT16U)*OffsetAddress;      //pc
#endif
#ifdef SMALL
*--stk = (INT16U)(task);     //pc for use of opt in task
*--stk = (INT16U)(task);      //pc
#endif
*--stk = (INT16U)(0x1122);    //Y Register
*--stk = (INT16U)(0x3344);    //X Register
*--stk = (INT16U)pdata;       //D Register:A,B
*--stk = (INT16U)(0x00);     //CCR,16 bits in S12X
/*((INT8U *)stk)--;            //CCR,8 bits in S12
*(INT8U *)stk = (INT8U)(0x00); //CCR*/
#ifdef BANKED
((INT8U *)stk)--;               // a byte need for PPAGE
*(INT8U *)stk = RegPage;//PPAGE
#endif
return((OS_STK *)stk);  
}
其中那个0X1122和0X3344代表的是什么啊?

相关帖子

沙发
airwill| | 2011-11-19 14:14 | 只看该作者
任务开始运行时的寄存器初值.
放在堆栈里, 等任务开始的时候, OS 的从堆栈恢复寄存器操作会将这些值给 CPU 寄存器.

使用特权

评论回复
板凳
530991163|  楼主 | 2011-11-20 21:29 | 只看该作者
2# airwill
我知道这是堆栈初始化,关键在存X,Y寄存器时的那个0x1122,0x3344是什么呢啊?

使用特权

评论回复
地板
highgear| | 2011-11-20 22:43 | 只看该作者
我做过同样的事情。这是为了在 memory 窗口里能够快速查看和定位 stack 而放置的标志,可以去掉。

使用特权

评论回复
5
hgjinwei| | 2011-11-21 08:18 | 只看该作者
一种调试手段而已

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:比较无助~~

25

主题

116

帖子

1

粉丝