总结:OSTaskStkInit()函数由OSTaskCreate()或OSTaskCreateExt()调用,需要传递的参数是任务代码的起始地址、参数指针(pdata)、任务堆栈顶端的地址和附加的opt选项,用来初始化任务的堆栈,初始状态的堆栈模拟发生一次中断后的堆栈结构。堆栈初始化工作结束后,OSTaskStkInit()返回新的堆栈栈顶指针,OSTaskCreate()或OSTaskCrea...
OSTaskStkInit传入参数:任务的入口函数地址,函数所需要的参数地址,函数对应的栈地址 void *OSTaskStkInit (void (*task)(void *pd), void *ppdata, void *ptos, INT16U opt) reentrant { OS_STK *stk; ppdata = ppdata; opt = opt; //opt没被用到,保留此语句防止告警产生 stk = (OS_STK *)ptos; ...
总结:OSTaskStkInit()函数由OSTaskCreate()或OSTaskCreateExt()调用,需要传递的参数是任务代码的起始地址、参数指针(pdata)、任务堆栈顶端的地址和附加的opt选项,用来初始化任务的堆栈,初始状态的堆栈模拟发生一次中断后的堆栈结构。堆栈初始化工作结束后,OSTaskStkInit()返回新的堆栈栈顶指针,OSTaskCreate()或OSTaskCrea...
这个函数是任务的堆栈初始化函数。*--stk = 0x12;可以分解成:1)stk = stk - 1;2)*stk = 0x12。在2)中的等号右边的0x12就是任务堆栈初始化函数对stk指针所指内存单元所赋的值。其实它的值可以为任意值,因为你在随后的程序当中可能调用OSCtxSw()函数,其功能是将CPU寄存器的值推入任务的堆栈...
应该问*stk--=...是什么。如果写成*(stk--)=...是什么你可能就知道了,这里不加括号也是一样的。后面的oxAAAA,0XCCCC都是些地址值。