硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2278|回复: 2
收起左侧

[μCOS-III] UCOSIII是如何保存局部变量到任务堆栈中的?

[复制链接]

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2020-5-25 16:06:54 | 显示全部楼层 |阅读模式
任务A中会调用一个子函数,子函数中有N个局部变量。我理解的方式是,只要一进入子函数,那么子函数中的这些局部变量都将定义到该任务对应的堆栈中,相应的任务TCB中的当前堆栈指针也会向下生长。
子函数返回时,这些存在于任务堆栈中的局部变量将被释放,相应的任务堆栈指针也会复归成之前的地址。
但实际仿真却发现不同的现象,进入子函数后,任务的堆栈指针并没有变化,而子函数的局部变量的地址竟然小于任务堆栈指针。
请教硬汉哥,我的理解难道是错误的吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2020-5-25 16:36:41 | 显示全部楼层
这个要看PSP线程堆栈指针,而任务控制块里面的更新要在任务切换的时候才会更新。
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2020-5-25 16:44:23 | 显示全部楼层
eric2013 发表于 2020-5-25 16:36
这个要看PSP线程堆栈指针,而任务控制块里面的更新要在任务切换的时候才会更新。

涨知识了,感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 05:07 , Processed in 0.237557 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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