完善资料让更多小伙伴认识你,还能领取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的堆栈方向是向下增长。 [√] |
|
|
|
|
|
非常感谢,应该是这样的~ 顺便看下我对一楼的回复哈~
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1018 浏览 1 评论
1849 浏览 0 评论
1830 浏览 1 评论
3254 浏览 5 评论
3581 浏览 9 评论
1021浏览 1评论
1850浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1360浏览 1评论
1852浏览 0评论
1178浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:01 , Processed in 0.794589 second(s), Total 88, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3519