嵌入式实时操作系统 uCosII 是由美国工程师 Jean J.Labrosse 所创,它在中国的流行源于那本被邵贝贝引进翻译的著名书籍《嵌入式实时操作系统 uCos-II》,这本书是学习 ucosII的宝典,虽然很厚,但理解了关键概念,再结合实际应用例程,还是很容易看懂的。uCosII通过了美国航天管理局(FAA)的安全认证,可以用于飞机、航天器与人性命攸关的控制系统中。也就是说,用户可以放心将 uCosII 用到自己的产品中。
3.3.1 特点
可移植性:uCosII 源码绝大部分是用移植性很强的 ANSI C 写的。与微处理硬件相关的部分是用汇编语言写的。 uCOS 可以在绝大多数 8 位、16 位、32 位以及 64 位处理器、微控制器及数字信号处理器(DSP)上运行。
可裁剪性:可以通过开关条件编译选项,来定义哪些 uCosII 的功能模块用于用户程序,方便控制代码运行所占用的空间及内存。
可剥夺性:uCOSII 是完全可剥夺型的实时内核,它总是运行处于就绪状态下的优先级最高的任务。
多任务:uCOSII 可以管理 64 个任务,每个任务对应一个优先级,并且是各不相同。其中 8 个任务保留给uCOSII。用户的应用程序可以实际使用 56 个任务。
可确定性:绝大多数 uCosII 的函数调用和服务的执行时间具有可确定性,也就是说用户总是能知道函数调用与服务执行了多长时间。
任务栈: 每个任务都有自己单独的栈,uCOSII 规定每个任务有不同的栈空间。
系统服务:uCOSII 提供很多系统服务, 例如信号量、互斥信号量、事件标志、消息邮箱、消息队列、内存的申请与释放及时间管理函数等。
中断管理: 中断可以使正在执行的任务暂时挂起,中断嵌套层数可达 255 层。
3.3.2 应用
奋斗 STM32 开发板 MINI 及 V3 采用了 STM32F107VET6 作为板上的 MCU, 内置 512K FLASH 64K SRAM。 非常适合短小精悍的 uCosII 作为操作系统。而且 ucosII 是实时操作系统,也极适合 STM32 所面对的嵌入式微控领域。奋斗板选用了已经被移植到 STM32 平台上的 ucosII2.86 源码。经过广泛测试,这个移植好的源码在 STM32 上是运行可靠的, 我们可以更加专心关注应用软件的开发。下面以奋斗板板例程《STM32 奋斗板-LED 闪烁-ucos》为实例来讲解一下 ucosII 在 STM32 下的应用。
功能要求: 开发板上电后,LED1-3 会按照默认的500ms 间隔,明暗闪烁,此时可以通过串口助手SSCOM3.2发出指令,设置LED1,LED2,LED3 的闪烁间隔时间。间隔范围是1-65535ms。可以设置任意一个LED 的闪烁间隔时间。
根据功能要求,对这个例程进行了工程策划, 选用MDK3.80a作为工程编译环境。 JLINK V8作为下载仿真器,三个LED的闪烁分别采用建立3个任务。 功能里的串口接收指令,表明例程会用到串口1中断,还需建立一个串口接收任务。再采用一个任务作为初始化时的主任务,用于建立以上的4个用户任务。 根据实时响应的重要程度,将各个任务的优先级经行了设置。
任务名 优先级
APP_TASK_START_PRIO 2 主任务
Task_Com1_PRIO 4 COM1通信任务
Task_Led1_PRIO 7 LED1 闪烁任务 ARM智能天然气监控终端的数据采集系统的设计+源代码(10):http://www.youerw.com/zidonghua/lunwen_2029.html