OpenEdv-开源电子网

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

UCOSII 怎么计算TASK 堆栈

[复制链接]

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
发表于 2018-10-22 14:59:26 | 显示全部楼层 |阅读模式
4金钱
              在网上看了一些教材都是复制粘贴人家的话,都是一样还是没有整明白,能有大神关于使用OSTaskCreateExt与OSTaskStkChk的具体例子吗?
有工程模板最好了.

最佳答案

查看完整内容[请看2#楼]

已经解决: 1:栈生长方向错误 2:如果用OSTaskStkChk函数就必须要用OSTaskCreateExt创建任务 https://blog.csdn.net/linpeng12358/article/details/41279283
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
 楼主| 发表于 2018-10-22 14:59:27 | 显示全部楼层
已经解决:
1:栈生长方向错误
2:如果用OSTaskStkChk函数就必须要用OSTaskCreateExt创建任务
https://blog.csdn.net/linpeng12358/article/details/41279283
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2018-10-22 15:41:35 | 显示全部楼层
例子没找见,正巧我现在也在测这个,自己搭建一个实验验证一下吧 https://blog.csdn.net/u012252959/article/details/73741130
回复

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2018-4-20
在线时间
24 小时
发表于 2018-10-26 18:17:49 | 显示全部楼层
你问的问题,怎么计算“任务堆栈”和你提出的“OSTaskCreateExt”和“OSTaskStkChk”我觉得有点绕路了。

我觉得应该是要理解这些:
1.任务堆栈是什么?   用来干嘛?
2.任务堆栈大小?
3.任务堆栈什么时候初始化?是怎么初始化的?

所以,从“OSTaskStkInit”读懂原理不是更好吗?是谁调用它的?调用它之前的之前又是谁。

我也是一边工作一边学习,两三个月一直在学,慢慢懂了很多,发现一个系统比小说还好看,真的。
还有要一边学习一边做文档,做文档是很辛苦的一件事,有点像要出书的感觉,真的不简单,所以很多人就算弄懂了也没有写文档的习惯,
才会有很多教程和心得都是几乎一样的。虽然辛苦,发现乐趣啊,加油!!!!!

以上。
回复

使用道具 举报

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
 楼主| 发表于 2018-10-26 20:21:40 | 显示全部楼层
phangbob 发表于 2018-10-26 18:17
你问的问题,怎么计算“任务堆栈”和你提出的“OSTaskCreateExt”和“OSTaskStkChk”我觉得有点绕路了。

...

有时间能把源码都弄一边当然好了啊,可是没有条件啊
回复

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2018-4-20
在线时间
24 小时
发表于 2018-10-27 09:24:21 | 显示全部楼层
汪志鹏 发表于 2018-10-26 20:21
有时间能把源码都弄一边当然好了啊,可是没有条件啊

怎么会?什么叫没条件??

堆栈的长度,是用户定义的,例如,长度定义为OSTaskStkSize,我理解为一个数组,只是和一般的数组从下标0到N(0---1---2--- ---N)不一样,因为还涉及堆栈的宽度,例如stm32中的堆栈宽度为4字节,没说错此时就可以理解为一个多维数组:
0  1  2  3  OSTaskStk[ OSTaskStkSize -X ]  low memory
4  5  6  7
8  9  A  B
C  D  E  F
.    .   .   .
.    .   .   .
.    .   .   .  OSTaskStk[ OSTaskStkSize -1]  high  memory

其中涉及到“堆栈的生长方向”即数据入栈是从高地址-->低地址   ,还是 低地址-->高地址,也是需要定义;
还涉及到堆栈的用处,就知道 OSTaskStk[ OSTaskStkSize - X]中的X是什么了,堆栈就是用来存放 CPU 的寄存器的数据的,而且是对应位置那样存放CPU寄存器的数据。
再就是堆栈指针,堆栈指针就涉及出栈和入栈的时候应该怎么移动.........
以上,都是要看书,仔细看才会记着。
回复

使用道具 举报

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
 楼主| 发表于 2018-10-28 00:25:21 | 显示全部楼层
陈皮皮 发表于 2018-10-22 15:41
例子没找见,正巧我现在也在测这个,自己搭建一个实验验证一下吧 https://blog.csdn.net/u012252959/articl ...

你测出验证结果了吗?
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2018-10-29 09:10:02 | 显示全部楼层
本帖最后由 陈皮皮 于 2018-10-29 09:23 编辑
汪志鹏 发表于 2018-10-28 00:25
你测出验证结果了吗?

测出来了啊,按照我发那个链接,讲得很清晰
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-26 00:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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