完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.原子哥说:堆栈是在RAM中按照“先进先出(FIFO)”的原则组织的一块连续的存储空间
个人理解堆栈难道不是栈的一种,既然如此,栈的顺序应该是先进后出吧?[理解来自数据结构] 2.最近看UCOSIII的原子哥视频,发现视频里这块儿没讲,UCOS里的堆栈方向是向上增长,而32里是向下[摘自原子哥],这样会不会冲突呢? 我所尝试的理解:这两个堆栈占用的是互不相关的两个存储空间//// @发烧友 @mygod @Admin @伟好好学习 |
|
相关推荐
8个回答
|
|
这里我把最新的理解更新到这里啊!!!!
函数OSTaskCreate()中的参数p_stk_base是任务堆栈基地址,那么如果CPU堆栈是向上增长的话,那么CPU堆栈基地址就是&START_TASK_STK[0],如果CPU堆栈是向下增长的话,那么CPU堆栈基地址就是&START_TASK_STK[START_STK_SIZE-1] 而我们的CPU___STM32的堆栈是向下增长的! |
|
|
|
UCOSIII堆栈按照STM32设置的向下增长的!仔细看《UCOSIII的开发手册》哪里写了堆栈是FIFO的?
|
|
|
|
ucosiii 里面可以配置栈的生长方向
|
|
|
|
堆栈时先进后出的,栈都是先进后出的,只有队列是先进先出的,各个堆栈的空间地址相互之间没有关系,是由编译器决定的,移植在STM32上的UCOSIII一定是向下生长的,他必须与处理器的生长方向一样,堆栈的生长方向由处理器本身决定,UCOSII与UCOSII中均有选择开关,向上生长还是向下,例如51堆栈就是向上生长的,但他们的堆栈分配与进出原理是一样的,理解他可以在纸上画图理解一下,如果想深入理解UCOS最好买一本书《嵌入式实时操作系统UCOSIII》是UCOS作者写的,有中文版的,并且阅读源码,有问题可以联系我,与我共同探讨QQ: 3030895463
|
|
|
|
可能PPT有点出入:
我这里总结下大家说的:UCOSiii里堆栈的增长方向(我)配置的是START_TASK_STK[0],应该叫做 向下增长 如图所示 [可能我们名字叫法上有出入] 32的堆栈方向是向下增长。 [√] |
|
|
|
非常感谢,应该是这样的~ 顺便看下我对一楼的回复哈~
|
|
|
|
这种问题不要太纠结,发烧友的资料可能表述不清楚吧,那可能是他自己的理解,买一本我说的那本书,书上说的很详细,最好熟读源码,会用就行,在实际中用的也不多
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
881 浏览 0 评论
1195 浏览 1 评论
2574 浏览 5 评论
2909 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2770 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1235浏览 3评论
221浏览 2评论
495浏览 2评论
402浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
483浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-31 10:28 , Processed in 1.150338 second(s), Total 59, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号