OpenEdv-开源电子网

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

关于ucos的任务堆栈的问题(求解原子哥)

[复制链接]

6

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2012-2-22
在线时间
0 小时
发表于 2012-3-20 10:16:38 | 显示全部楼层 |阅读模式

 原子哥关于ucos的例程看了后的确受益匪浅, 在例程中对堆栈还有点不太明白,

在写任务前需要对堆栈大小进行定义, 比如定义的task堆栈大小为64, 因为是32位的堆栈,所以需要用掉64*32=2048bit=2k的容量空间, 而这2k的容量空间是不是就是需要占用到stm32中的128k的flash中的容量的, 还是说这个空间容量是占stm32其他内存空间的? 这点不太明白 ,求大家能否小解释下

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-3-20 11:03:04 | 显示全部楼层
回复【楼主位】zhongding818:
---------------------------------
就是占用64*4=256字节的内存.不是flash,是sram.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2012-2-22
在线时间
0 小时
 楼主| 发表于 2012-3-20 15:00:03 | 显示全部楼层
回复【2楼】正点原子:
--------------------------------
谢谢, 听您这样讲我就明白了,但是我又有了疑问,如果是这样的话, 我看了stm32f103rbt6处理器的sram是20k,在您的例程中已经定义了空闲任务为512,如果这样计算为512*4=2048字节容量了啊,之后您有定义了3个任务,一个开始任务128, 两个led任务各64,这样算就需要256*4=1024字节, 一共需要(2048+1024)字节=24k,那不就是说已经超过了sram的20k的容量了, 这样不就有问题了吗????
回复 支持 反对

使用道具 举报

6

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2012-2-22
在线时间
0 小时
 楼主| 发表于 2012-3-20 15:00:51 | 显示全部楼层
回复【2楼】正点原子:
--------------------------------
谢谢, 听您这样讲我就明白了,但是我又有了疑问,如果是这样的话, 我看了stm32f103rbt6处理器的sram是20k,在您的例程中已经定义了空闲任务为512,如果这样计算为512*4=2048字节容量了啊,之后您有定义了3个任务,一个开始任务128, 两个led任务各64,这样算就需要256*4=1024字节, 一共需要(2048+1024)字节=24k,那不就是说已经超过了sram的20k的容量了, 这样不就有问题了吗????
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-3-20 16:33:51 | 显示全部楼层
 回复【4楼】zhongding818:
---------------------------------

你的数学严重有问题,好好缕一缕先....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

158

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
400
金钱
400
注册时间
2011-11-23
在线时间
0 小时
发表于 2012-7-31 09:54:40 | 显示全部楼层
回复【4楼】zhongding818:
---------------------------------
#define LED_STK_SIZE     64
#define LED1_STK_SIZE    64
#define START_STK_SIZE   128
设置的堆栈任务大小,首先你要明白1k=1024个字节,这样的话,64*4+64*4+128*4=1024字节的内存,也就是1k,而stm32f103rbt6处理器的sram是20k,所以用起来应该是绰绰有余的~
回复 支持 反对

使用道具 举报

38

主题

527

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1424
金钱
1424
注册时间
2011-11-27
在线时间
122 小时
发表于 2012-8-1 09:16:54 | 显示全部楼层
回复【楼主位】zhongding818:
 原子哥关于ucos的例程看了后的确受益匪浅, 在例程中对堆栈还有点不太明白, 
在写任务前需要对堆栈大小进行定义, 比如定义的task堆栈大小为64, 因为是32位的堆栈,所以需要用掉64*32=2048bit=2k的容量空间, 而这2k的容量空间是不是就是需要占用到stm32中的128k的flash中的容量的, 还是说这个空间容量是占stm32其他内存空间的? 这点不太明白 ,求大家能否小解释下
---------------------------------
楼主bit与byte理解为同一事物了。2048bit=2048/8byte
永远保持一颗学习的心态。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 02:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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