打印
[ZLG-ARM]

uc/os-ii传递的参数不正确?

[复制链接]
1580|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feifan570|  楼主 | 2007-7-17 08:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是使用ZLG移植的UC/OS-II V2.52.我使用
err = OSTaskCreateExt(task1,&i,&task_stack[TASK_STACK_SIZE-1],i,i,task_stack,
                    TASK_STACK_SIZE,(void *)NULL,OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
函数生成一个任务,其中OSTaskCreateExt()的第二个参数void *pdata指向 &i,而i是一个unsigned char 型的变量,其值从2-9。但是在
void task1(*pdata)任务中,发现*pdata并非我在OSTaskCreateExt()中给的数据。
我在task1(void *pdata)中是这样使用*pdata的:
        char taskid[3];    
    
    taskid[0] = *(char *)pdata;
    taskid[0] = taskid[0] + '0';
    taskid[1] = '\n';
    taskid[2] = '\0';
然后将taskid打印出来。

这是什么原因引起的?

相关帖子

沙发
armecos| | 2007-7-18 06:28 | 只看该作者

可能是堆栈问题

使用特权

评论回复
板凳
feifan570|  楼主 | 2007-8-6 15:09 | 只看该作者

发现堆栈地址传递不正确

在用INT8U  OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio)生产任务时,通过寄存器(R2)发现传递给ptos的为0x810082D3,当进入到任务中,却发现其SP值为0x810082D7。这应该是不正确的吧?

使用特权

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

本版积分规则

92

主题

195

帖子

1

粉丝