当前位置: 代码迷 >> 单片机 >> ucos-III栈初始化代码的疑点
  详细解决方案

ucos-III栈初始化代码的疑点

热度:255   发布时间:2016-04-28 14:56:05.0
ucos-III栈初始化代码的疑问
下面是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] 已经不再是指针而是数值变量了,这里再做取地址操作得到数据指针,并不是你以为的指针的指针。