uC/OS-II在LPC21XX平台移植小结及API介绍
172 浏览量
更新于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。
2011-03-05 上传
2009-09-04 上传
2009-11-26 上传
2008-08-24 上传
2011-08-24 上传
点击了解资源详情
点击了解资源详情
weixin_38699613
- 粉丝: 2
- 资源: 923
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查