STM32工作笔记0074---UCOSIII 任务管理(中)

技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152

这个堆栈先进先出,类似于一个两端都有出口的桶.

先进去的,先出去.

每个任务都有自己的堆栈,用来给自己的任务分配内存,以及记录这个

任务的现场和恢复现场用.

然后看看怎么创建堆栈

通过这种方式就可以创建堆栈,这里可以看到512,注意这里512不是512字节,而就是个512

然后定义个数组.

.然后看看这个CPU_STK是什么呢

去代码看看这个CPU_STK是什么,去定义看看

然后再进去看定义

可以看到这个是个无符号的int变量.整形变量.

这里的unsigned int这个是4个字节的,也就是32位,要注意,

所以是512 * 4 =2048个字节,这个堆栈的大小就是.2048个字节.

咱们可以看一下这个任务初始化函数,做了什么事,打开

把CPU的值都写进,然后把所有的现场都保护,再这个系统文件中做的

定义了任务堆栈以后,怎么使用这个任务堆栈呢

可以看到在代码中是上面这样用的

然后

再看看,这里

CPU_STK START_TASK_STK[START_STK_SIZE]

所谓的这个基地址,就是说这个START_STK_SIZE,这个是0的时候

这里就是这个基地址了.

可以看到也就是这个堆栈数组的下标是0的这个位置就是基地址

然后再看一下这个有个任务堆栈大小,这个大小,

可以看到就是START_STK_SIZE 

然后再看一下,这里有个堆栈深度,这个是什么呢

是这个意思,也就是说,当堆栈大小的容量还是剩余百分之10的时候,那么

就说已经快用完了达到这个堆栈使用的极限了.

这个/10,就是堆栈还剩余百分之10的时候.

猜你喜欢

转载自blog.csdn.net/lidew521/article/details/108465198