Civilization Museum
The Dark Forest
目录
0%
资源冲突
延时队列与任务优先级
1. 临界区保护
1.1 问题引入
1.2 临界区保护原理
1.2.1 临界区概念
1.2.2 关中断保护临界区
1.2.3 嵌套关中断问题
1.3 设计实现
1.3.1 tTaskEnterCritical函数
1.3.2 tTaskExitCritical函数
2. 调度锁保护
2.1 设计目标
2.2 调度锁保护原理
2.3 设计实现
2.3.1 调度锁计数器
2.3.2 tTaskSchedDisable函数
2.3.3 tTaskSchedEnable函数
2.3.4 禁止任务调度
2.3.5 禁止调度的影响
3. 位图数据结构
3.1 位图定义
3.1.1 位图概述
3.1.2 操作接口
3.2 位图实现
3.2.1 位图结构定义
3.2.2 位图初始化
3.2.3 设置指定位
3.2.4 清除指定位
3.2.5 寻找第1个置位的位置
4. 多任务优先级
4.1 问题引入
4.2 优先级原理
4.3 设计实现
4.3.1 添加优先级字段
4.3.2 添加优先级位图与任务就绪表
4.3.3 修改调度函数
4.3.4 修改延时函数
4.3.5 修改SysTick Handler
5. 双向链表数据结构
5.1 链表结构定义
5.1.1 通常结点定义
5.1.2 通用结点定义
5.1.3 通用结点的转换问题
5.2 链表操作实现
5.2.1 结点初始化
5.2.2 链表初始化
5.2.3 移除链表中所有结点
5.2.4 在指定结点之后插入结点
5.2.5 将指定结点插入链表表头
5.2.6 将指定结点插入链表表尾
5.2.7 移除指定结点
5.2.8 移除头部结点
6. 任务延时队列
6.1 问题引入
6.2 延时队列设计
6.2.1 独立保存延时时间
6.2.2 递增保存延时时间(任务实现中没有使用这种方式)
6.3 设计实现
6.3.1 添加延时队列
6.3.2 插入延时队列
6.3.3 移除延时队列
6.3.4 修改延时函数
6.3.5 修改SysTick_Handler
7. 同优先级时间片运行
7.1 设计目标
7.2 同优先级时间片运行原理
7.2.1 同优先级单任务设计(不允许相同优先级的情况)
7.2.2 同优先级多任务设计
7.3 设计实现
7.3.1 修改就绪表
7.3.2 修改tTaskHighestReady函数
7.3.3 修改任务就绪与移除函数
7.3.4 修改SysTick_Handler
7.3.5 任务设置
0%