1、OS_STK == 任务的堆栈
任务切换的实质:SP指针的变化,通过SP指针的变化,可以跳转到你想要去的任何的一块不受保护的地址去
2、任务的链表
struct os_tcb *OSTCBNext; 指向下一个任务
3、事件控制块
OS_EVENT *OSTCBEventPtr
是一个技术组件,用于后面的消息和消息队列,邮箱和信号量等的设计。
typedef struct os_tcb {}
4、如何得到最高的优先级的任务
OSRdyGrp |= OSMapTbl[prio >> 3];
OSRdyTbl[prio>>3] |= OSMapTbl[prio & 0x07];
计算实例:假设我们需要让优先级为24的任务置1的话。
任务的优先级组中填入的数是 24 >> 3 =3
11000>>3 也就是00011=3
那么在任务的第3个优先级组中我们应该填入是24 & 0x07 = 0,也就是在第0位上面填入1,即可把优先级为24的任务唤醒。
把相应的任务挂起的计算公式为:
OSRdyGrp &= ~OSMapTbl[prio >> 3];
**5、如何通过最高优先级的任务进行任务切换–进入中断,切换任务堆栈实现