发新帖我要提问
12
返回列表
打印
[STM32F1]

UCOSIII 任务管理

[复制链接]
楼主: dingbo95
手机看帖
扫描二维码
随时随地手机跟帖
21
dingbo95|  楼主 | 2018-6-14 10:23 | 只看该作者 回帖奖励 |倒序浏览
UCOSIII任务堆栈
任务堆栈是任务的重要部分,堆栈是在RAM中按照“先进先出(FIFO)”的原则组织的一块连续的存储空间。为了满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其它函数时的需要,每个任务都应该有自己的堆栈。

使用特权

评论回复
22
dingbo95|  楼主 | 2018-6-14 10:24 | 只看该作者
本帖最后由 dingbo95 于 2018-6-14 10:38 编辑

任务堆栈创建#define START_STK_SIZE                 512        //堆栈大小
CPU_STK START_TASK_STK[START_STK_SIZE];        //定义一个数组来作为任务堆栈


使用特权

评论回复
23
dingbo95|  楼主 | 2018-6-14 10:38 | 只看该作者
任务堆栈的大小
CPU_STK为CPU_INT32U类型,也就是unsigned int类型,为4字节的,那么任务堆栈START_TASK_STK的大小就为:512 X 4=2048字节!

使用特权

评论回复
24
dingbo95|  楼主 | 2018-6-14 10:39 | 只看该作者
任务堆栈初始化
任务如何才能切换回上一个任务并且还能接着从上次被中断的地方开始运行?恢复现场即可,现场就是CPU的内部各个寄存器。因此在创建一个新任务时,必须把系统启动这个任务时所需的CPU各个寄存器初始值事先存放在任务堆栈中。这样当任务获得CPU使用权时,就把任务堆栈的内容复制到CPU的各个寄存器,从而可以任务顺利地启动并运行。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则