高手请进!UCOS移植OSTaskStkInit 的问题!! 在线等........
麻烦高手给看看(1)地方有没有问题,
主要是用来取函数首地址。
OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt){ OS_STK *psoft_stk; OS_STK *phard_stk; /* Temp. variable used for setting up AVR hardware stack */ INT16U tmp; opt = opt; /* 'opt' is not used, prevent warning */ psoft_stk = (INT8U *)ptos; phard_stk = (INT8U *)ptos - OSTaskStkSize /* Task stack size */ + OSTaskHardStkSize; /* AVR return stack ("hardware stack") */ tmp = *(INT16U const *)task; //-------------------------(1) *phard_stk-- = (INT8U)tmp; /* Put task start address on top of "hardware stack" */ *phard_stk-- = (INT8U)(tmp >> 8); *psoft_stk-- = (INT8U)0x00; /* R0 = 0x00 */............ *psoft_stk-- = (INT8U)0x80; /* SREG = Interrupts enabled */ tmp = (INT16U)phard_stk; *psoft_stk-- = (INT8U)(tmp >> 8); /* SPH */ *psoft_stk = (INT8U) tmp; /* SPL */ return ((void *)psoft_stk);}