下面是ucos-iii堆栈初始化函数的一段代码(在cortex-M3上移植后)
红色框里的代码如何理解?难道说p_stk指向了栈指针?
如果是这样的话,那底下的 *--p_stk = (CPU_STK)0x01000000u; 这里的0x01000000就应该是xPSR寄存器的地址了。最后这个函数返回的也不是栈顶指针,也是指向栈顶指针的指针。
下面是ucos-ii中相同的函数的代码:
显然,这里没有取地址符号
同样有 *(stk) = (INT32U)0x01000000L; 这条命令,这里的0x01000000L明显就是xPSR寄存器的值啊。
这是什么情况啊?为什么不一样呢?
------解决方案--------------------
我更倾向于茴香豆的四种写法这个解释。。。
------解决方案--------------------
这里你有点混淆了。p_stk_base 是指针,或者说地址,经过索引之后即 p_stk_base[stk_size] 已经不再是指针而是数值变量了,这里再做取地址操作得到数据指针,并不是你以为的指针的指针。