UCOS_III(原子战舰STM32)学习笔记二

5 篇文章 0 订阅
2 篇文章 0 订阅

- 1.任务堆栈

#define START_STK_SIZE 512
CPU_STK START_TASK_STK[START_STK_SIZE]

任务堆栈定义为512,CPU_STK 为uint型[4个字节],故定义的堆栈数组 START_TASK_STK大小为512*4=2048字节。

- 2.任务堆栈初始化

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

任务堆栈初始化函数为OSTaskStkInit(),这个函数在任务创建函数OSTaskCreate()中调用。

- 3.创建任务堆栈

  • 1

- 4.任务控制块

-OS_TCB StartTaskTCB
任务控制块初始化函数OS_TaskInitTCB(),这个函数在任务创建函数OSTaskCreate()中调用。

- 5.任务优先级

  • 任务优先级数由宏OS_CFG_PRIO_MAX来定;
    数值越小,优先级越高;
    最低优先级为OS_CFG_PRIO_MAX-1;
    该宏位于os_cfg.h里面,默认为64级;
    2

- 6.任务就绪表

  • 1、优先级位映射表OSPrioTbl[](int定义):用来记录哪个优先级下有任务就绪。
    2、就绪任务列表OSRdyList[](结构体定义):用来记录每一个优先级下所有就绪的任务。
    此图默认优先级为64个:
    3
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋山刀名鱼丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值