手把手教你用Ucos

Ucos操作系统的学习

 

实时操作系统:

任务切换,调度

分式操作系统

 

不可剥夺型内核

Ucosii嵌入式实时操作系统的源代码分为三部分:与硬件无关的内核代码,与处理器有关的移植代码和用户配置文件。

 

Ucos最多支持64个任务,优先级分别对应0~63,其中0为最高优先级,系统保留4个最高优先级的任务,和4个最低的优先级任务,所有用户可以使用的任务56

1.建立任务

a)      OSTaskCReat()/OStaskCreat(

    i.           OStaskCreat(void(*task),void pdata ,OS_STK * post,INTU prio)

        1.      Task:是指任务代码的指针

        2.      Pdata:任务开始执行是,传递给任务的参数的指针

        3.      Post:分配给任务的堆栈的栈顶指针

        4.      Prior:分配任务的优先级

2,  任务堆栈

a)      OS_STK()

        i.           每个任务都有自己的堆栈,堆栈必须声明为OS_STK类型,并且连续的内存空间组成。

            ii.           可以静态分配和动态分配

3,  堆栈检验

        a)      OSTaskStkChk()

            i.  有时确定任务是要知道堆栈空间的大小,这个函数可以避免分配过多的空间
4.    删除任务OSTask()
       a.    指的是任务进入休眠状态,而不是指代码被删除,只是不再被ucos调用。注意:删除任务之前要保证任务并非空闲任务
5.    请求删除任务 OSTaskDelreq()
        a.有时任务会占用一些内存或者信号量一类的资源。这时,假如另一个任务试图删除任务,这些被占用的资源就会应为没有被释放而丢失。在这种情况下,需要任务在使用完后释放,然后自己删除。
6.    改变任务的优先级 OSTaskChangePrio()
        a.当创建一个任务时,需要利用OSTaskCreate()函数指定任务的优先级,在绝大部分的情况下不需要改变系统运行时的惹任务优先级,但是要是改变的话,OSTaskChangePrio()可以做到.
          b.void OSTaskChangePrio(OS_TCB *p_tcp,OS_PRIO prio_new,OS_ERR *err);
                i.p_tcp :需要改变优先级任务。如果传入NULL指当前任务的优先级
                ii:p_new:新的优先级,该值不能大于或者等于OS_CFG_PRIO_MAX-1de数值,也不能为0.
                iii: 存放该函数的错误返回码。
7.    OS_FlagDel()
        a.用于删除时间标志组。使用时注意,可能同时删除多个任务都依赖于时间标志组

        b.OS_OBJ_QTY OSFlagDel(OS_FLAG_GPR *p_grp,OS_OPT opt,OE_ERR *p_err),任务使能开光OS_CFG_FLAG_EN和
OS_CFG_FLAG_EDL_EN

                i.p_grp 指向要删除事件的标志组的指针
                ii.opt    指定删除事件组的标志
                iii.err    错误返回


    

    

猜你喜欢

转载自blog.csdn.net/qq_36389249/article/details/79621543