p; *OSTaskStkInit (void (*task)(void *pd), void *ppdata,
void *ptos, INT16U opt) reentrant
{
OS_STK *stk;
ppdata = ppdata;
opt = opt; /*opt没被用到,保留此语句防止报警产生 */
stk = (OS_STK *)ptos; //用户堆栈最低有效地址
*stk++ = 15; //用户堆栈长度
*stk++ = (INT16U)task & 0Xff; //任务地址低8位
*stk++ = (INT16U)task >> 8; //任务地址高8位
*stk++ = 0x00; //PSW
*stk++ = 0x0A; //ACC
*stk++ = 0x0B; //B
*stk++ = 0x00; //DPL
*stk++ = 0x00; //DPH
*stk++ = 0x00; //R0
*stk++ = 0x01; //R1
*stk++ = 0x02; //R2
*stk++ = 0x03; //R3
*stk++ = 0x04; //R4
*stk++ = 0x05; //R5
*stk++ = 0x06; //R6
*stk++ = 0x07; //R7
/*不用保存SP,任务切换时根据用户堆栈长度计算得出。*/
*stk++ = (INT16U) (ptos+MaxStkSize) >> 8;
/*
嵌入式系统在多点温度控制中的应用(十二)相关范文