第六天 UC/OS的学习
第六天1. UC/OS-II的初始化
1.1 在调用其他服务之前,要求用户首先调用系统初始化函数OSInit()。【其作用是初始化UC/OS-II的所有的变量和数据结构】
1.2 两个任务的任务控制块OS_TCB是用双向链表链接在一起的。OSTCBList指向这个链表的起始处。
1.3 UC/OS-II还初始化了4个空数据结构缓冲区。每个缓冲区都是单向链表。允许UC/OS-II从缓冲区迅速得到或释放一个其中的元素。
1.4 空缓冲区的空任务控制块的数目取决于最多任务数OS_MAX_TASKS。
2. UC/OS-II的启动
2.1 在启动UC/OS –II 之前,用户至少要建立一个应用任务。
2.2 多任务的启动是用户通过调用OSStart()实现的,这个函数永远不会返回。
void OSStart (void)
{
INT8U y;
INT8U x;
if (OSRunning == FALSE)
{
y = OSUnMapTbl;
x = OSUnMapTbl];
OSPrioHighRdy = (INT8U)((y << 3) + x);
OSPrioCur = OSPrioHighRdy;
OSTCBHighRdy= OSTCBPrioTbl;
OSTCBCur = OSTCBHighRdy;
OSStartHighRdy();
}
}
2.3 OSStart()函数程序如上, 找出用户建立的优先级最高任务的控制块。任何调用OSStartHighRdy()函数(高优先级就绪任务启动函数)这个函数的作用是:将任务栈中保存的值弹回到CPU寄存器中,然后执行一条中断返回指令。中断返回指令强制执行该任务代码。
3. 应用程序调用OSVersion()可以得到当前UC/OS-II的版本号*100。 学习学习! 这就是我们大家学习的榜样,向楼主学习! 支持,强烈支持
页:
[1]