发 帖  
原厂入驻New
请问UCOSIII任务堆栈基地址为和是&START_TASK_STK[0]?
123 UCOS cpu
分享
发烧友的第7讲 UCOSIII任务管理(中)中有如下内容:
函数OSTaskCreate()中的参数p_stk_base是任务堆栈基地址,那么如果CPU的堆栈是向上增长的话那么基地址就&START_TASK_STK[0],如果CPU堆栈是向下增长的话基地址就是&START_TASK_STK[START_STK_SIZE-1]STM32的堆栈是向下增长的!  
问题在于,既然STM32的堆栈是向下增长的,那么堆栈的基地址就应该是&START_TASK_STK[START_STK_SIZE-1],为什么所有例程中的堆栈基地址都是&START_TASK_STK[0]呢?
视频中这一段给跳过了,请哪位给指点一下.....谢谢!
0
2020-3-13 01:22:40   评论 分享淘帖 邀请回答

相关问题

2个回答
1、UCOSIII里面的这个基地址的意思和UCOSII里面不一样,这里说的基地址就是堆栈的起始地址!那不就是START_TASK_STK[0]。UCOSIII源码里面的参数注释解释的很清楚!!!跟堆栈生长方向没关系,UCOSIII中在操作堆栈的时候会在计算出堆栈的栈顶地址的!然后操作栈顶地址!

2、堆栈初始化的时候就会自动的计算出栈顶指针,其实就是堆栈数组的最高地址,如下图:
2020-3-13 09:41:34 评论

举报

解释的很清楚,谢谢了!
2020-3-13 09:59:36 评论

举报

只有小组成员才能发言,加入小组>>

274个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表