OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5145|回复: 8

关于堆栈的疑问

[复制链接]

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
发表于 2013-5-7 15:44:48 | 显示全部楼层 |阅读模式
大家好,这段时间做UCOS在STM32上的应用,一直有个疑问。STM32本身有堆栈,是用来存放各个变量和程序运行过程中产生的中间量(个人理解,可能不正确),UCOS也有堆栈,而且是每个任务对应一个堆栈,用于存储本任务的局部变量与任务被挂起时保存现场。这样我就有疑问了:
1、加了UCOS之后,系统还存在“全局变量”这个东西吗?
2、STM32启动代码的堆栈和UCOS的堆栈有什么区别和联系?
谢谢。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-7 18:02:04 | 显示全部楼层
1,当然存在。
2,stm32的堆栈主要是用在中断发生的时候,而ucosii的堆栈,则发生在任务切换的时候。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
 楼主| 发表于 2013-5-8 10:56:37 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥,你这么一说感觉清晰多了,原来总是稀里糊涂的。我还有个问题问下,我可不可以把信号量、邮箱、消息队列也理解为全局变量,总觉得他们的作用和全局变量差不多。谢谢回复。
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
 楼主| 发表于 2013-5-8 10:56:45 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥,你这么一说感觉清晰多了,原来总是稀里糊涂的。我还有个问题问下,我可不可以把信号量、邮箱、消息队列也理解为全局变量,总觉得他们的作用和全局变量差不多。谢谢回复。
回复 支持 反对

使用道具 举报

10

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2013-4-24
在线时间
4 小时
发表于 2013-5-8 14:20:11 | 显示全部楼层
回复【3楼】luoxin:
---------------------------------
信号量,邮箱,消息队列应该就是全局变量,这些东西存在就是为了不同任务间通讯、同步的。任务都不同了传递消息肯定得要全局的了。
牛逼死了,牛还活着吗?
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
 楼主| 发表于 2013-5-9 10:50:26 | 显示全部楼层
回复【5楼】cortexM3:
---------------------------------
谢谢,我也这么想的,但是不能肯定,就踢出来问问。
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-5-9 12:26:09 | 显示全部楼层
是经过封装的全局变量咯。邮箱什么的,是操作系统层面的概念。
业余程序玩家。
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-5-9 12:29:01 | 显示全部楼层
stm32有2个堆栈指针寄存器,ucos任务堆栈使用前,要在任务切换的时候修改对应的硬件堆栈寄存器。
业余程序玩家。
回复 支持 反对

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
 楼主| 发表于 2013-5-10 10:51:50 | 显示全部楼层
回复【8楼】ofourme:
---------------------------------谢谢,又翻了翻Cotex-M3的内核,有看了一遍UCOS的任务切换,明白点了,我再回味回味。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 11:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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