yanshanbao 发表于 2012-3-7 19:35:12

第六天 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。

zhongguoren 发表于 2012-3-7 20:21:51

学习学习!

bravejt1 发表于 2012-4-7 15:01:33

这就是我们大家学习的榜样,向楼主学习!

cloudborn123 发表于 2012-4-10 22:24:18

支持,强烈支持
页: [1]
查看完整版本: 第六天 UC/OS的学习