[ZLG-ARM] uc/os-ii传递的参数不正确?

[复制链接]
 楼主| feifan570 发表于 2007-7-17 08:35 | 显示全部楼层 |阅读模式
我是使用ZLG移植的UC/OS-II&nbsp;V2.52.我使用<br />err&nbsp;=&nbsp;OSTaskCreateExt(task1,&i,&task_stack[TASK_STACK_SIZE-1],i,i,task_stack,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TASK_STACK_SIZE,(void&nbsp;*)NULL,OS_TASK_OPT_STK_CHK&nbsp;|&nbsp;OS_TASK_OPT_STK_CLR);<br />函数生成一个任务,其中OSTaskCreateExt()的第二个参数void&nbsp;*pdata指向&nbsp;&i,而i是一个unsigned&nbsp;char&nbsp;型的变量,其值从2-9。但是在<br />void&nbsp;task1(*pdata)任务中,发现*pdata并非我在OSTaskCreateExt()中给的数据。<br />我在task1(void&nbsp;*pdata)中是这样使用*pdata的:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;taskid[3];&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;taskid[0]&nbsp;=&nbsp;*(char&nbsp;*)pdata;<br />&nbsp;&nbsp;&nbsp;&nbsp;taskid[0]&nbsp;=&nbsp;taskid[0]&nbsp;+&nbsp;'0';<br />&nbsp;&nbsp;&nbsp;&nbsp;taskid[1]&nbsp;=&nbsp;'\n';<br />&nbsp;&nbsp;&nbsp;&nbsp;taskid[2]&nbsp;=&nbsp;'\0';<br />然后将taskid打印出来。<br /><br />这是什么原因引起的?
armecos 发表于 2007-7-18 06:28 | 显示全部楼层

可能是堆栈问题

  
 楼主| feifan570 发表于 2007-8-6 15:09 | 显示全部楼层

发现堆栈地址传递不正确

在用INT8U&nbsp;&nbsp;OSTaskCreate&nbsp;(void&nbsp;(*task)(void&nbsp;*pd),&nbsp;void&nbsp;*pdata,&nbsp;OS_STK&nbsp;*ptos,&nbsp;INT8U&nbsp;prio)生产任务时,通过寄存器(R2)发现传递给ptos的为<font color=#FF0000>0x810082D3</font>,当进入到任务中,却发现其SP值为<font color=#FF0000>0x810082D7</font>。这应该是不正确的吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

195

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部