uC/OS-II在LPC21XX平台移植小结及API介绍

0 下载量 82 浏览量 更新于2024-09-01 收藏 120KB PDF 举报
LPC21XX移植UCOS-II小结 嵌入式操作系统是指在嵌入式系统中运行的操作系统,旨在满足嵌入式系统的特殊需求。uC/OS-II是其中一种流行的嵌入式操作系统,广泛应用于各种嵌入式系统中。今天,我们将讨论如何将uC/OS-II移植到LPC21XX平台上,并总结一些重要的uC/OS-II API。 **uC/OS-II移植到LPC21XX平台** 在uC/OS-II的帮助手册中,作者强调了不能在OSInit()或者OSStart()函数内调用Timer初始化程序,因为这可能会破坏系统的可靠性。因此,我们需要找到一种折中的办法来解决这个问题。一个解决方案是在优先级最高的程序内调用Timer初始化程序,这样可以保证当OSStart()函数调用系统内部函数OSStartHighRdy()开始多任务后,首先执行的就是Timer初始化程序。另一个解决方案是专门开一个优先级最高的任务,只做一件事情,就是执行Timer初始化,然后通过调用OSTaskSuspend()函数将自己挂起来,永远不再执行。 **uC/OS-II API简介** uC/OS-II提供了大量的API供程序员使用,这些API主要分为五类: * 任务类:包括OSTaskCreate()、OSTaskSuspend()、OSTaskResume()等函数。 * 消息类:包括OSMessageCreate()、OSMessageSend()、OSMessageReceive()等函数。 * 同步类:包括OSEventCreate()、OSEventWait()、OSEventSignal()等函数。 * 时间类:包括OSTimeDly()、OSTimeout()、OSTimeGet()等函数。 * 临界区与事件类:包括OSMutexCreate()、OSMutexPend()、OSMutexPost()等函数。 **OSTaskCreate函数** OSTaskCreate函数是uC/OS-II中最重要的函数之一,该函数用于创建一个新的任务。该函数需要四个参数:任务的入口地址、任务的参数、任务堆栈的首地址和任务的优先级。调用该函数后,系统会首先从TCB空闲列表内申请一个空的TCB指针,然后将会根据用户给出参数初始化任务堆栈,并在内部的任务就绪表内标记该任务为就绪状态。最后返回,这样一个任务就创建成功了。 **OSTaskSuspend函数** OSTaskSuspend函数是一个简单的函数,用于将指定的任务挂起。如果挂起的是当前任务的话,那么还会引发系统执行任务切换先导函数OSShed来进行一次任务切换。该函数只有一个参数,就是指定任务的优先级。为什么是优先级呢?事实上,在系统内部,优先级除了表示一个任务执行的先后次序外,还起着分别每一个任务的作用,换句话说,优先级也就是任务的ID。