导航:首页 > 操作系统 > 单片机ucosii

单片机ucosii

发布时间:2023-09-12 05:55:37

❶ 再问您 一个问题,51单片机上的C语言问题及uCOS问题.

那个uCOS-II是利用了宏开关。
例如:
Global.h文件里如下定义:
#ifdef
GLOBAL_VAR
unsigned
char
i_var;
#else
extern
unsigned
char
i_var;
#endif
如果在C文件里包含"Global.h"之前,先进行宏定义
#define
GLOBAL_VAR
#include
"Global.h"
那么,就相当于在
这个C文件里定义了
unsigned
char
i_var;
如果在包含之前,没有定义
GLOBAL_VAR
相当于,在这个C文件里引用了i_var,相当于:
extern
unsigned
char
i_var;

❷ 51单片机都支持什么操作系统

STC系列51单片机一般都内部带有几K的数据存储器,可以支持UCOSII操作系统,不过意义不是太大,内存还是太小了。

❸ stc系列单片机_μC/OS-Ⅱ在C8051F系列单片机上的移植及其应用系统开发

随着微处理器技术的飞速发展和嵌入式系统实时性要求的不断提高,应用实时多任务操作系统(RTOS)作为嵌入式设计的开发平台已逐步成为嵌入式应用设计的主流。本研究讨论将μC/OS-Ⅱ移植到C8051F系列高性能8位单片机中,并以C8051F060为例阐述了其应用系统的开正基发过程。
一、μC/OS-Ⅱ的基本工作原理
1.任务管理
µC/OS-II中的任务可以是一个无限的循环,也可以在一次执行完毕后被“删除”掉,即该任务可以认为CPU完全属于该任务本身,实时应用程序的设计过程包括将问题分割为多个任务。µC/OS-II可以管理64个任务,每个任务有一定的优先级,且优先级不重复。
2.任务调度机制的实现
µC/OS-II是可剥夺型内核,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,这提高了系统的实时响应能力。在没有中断情况下,任务间的切换一般会调用OSSched()函数。µC/OS-II的中断服务子程序和一般前/后台的操作有所不同。
3.任务之间的通信
在µC/OS-II中,可以通过信号量、消息邮箱和消息队列等机制,实现数据共享和任务通信。消息邮箱用一个指针型变量,一个任务或一个中断服务子程序通过内核服务,将一则消息放入邮箱,一个或多个任务通过内核服务接受这则消息。每个邮箱有相应的等待消息任务表,等待消息的任务在无消息时被置挂起态,并记入邮箱等待消息任务表中。消息放入邮箱,内核将运行等待消息任务表中优先级最高的任务。
二、移植及应用
C8051F060系列单片机特别适举数谨用于任务繁重的小型化测控系统。当芯片具有的功能被较多地使用时,系统要处理的任务就较多,编程头绪也多。为了简化应用程序实现程序模块化,提高应用程序的实时性和可靠毕纳性,将μCOS2Ⅱ移植到C8051F060中就成为一件很有意义的事。
1.µC/OS-II的移植
(1)修改INCLUDES.H文件:增加的头文件放在头文件列表的最后。
#include "os_cpu.h"
#include "os_cfg.h"
#include "ucos_ii.h"
(2)修改OS CPU.H文件:为确保系统在KEIL环境下正常运行,重新定义了一系列与C8051F060和KEIL编译器相关的数据结构、宏和常数。
typedef unsigned char OS_STK;/*定义堆栈宽度为8位*/
typedef unsigned char OS_CPU_SR;
#define OS_ENTER_CRITICAL() EA="0"
#define OS_EXIT CRITICAL()EA="1"
(3)修改OS_CPU_A.ASM文件
①编写OSSTartHihgRdy()函数:获得将要恢复运行的就绪任务的堆栈映像的最低地址,并计算出堆栈长度,然后向系统堆栈复制数据、堆栈指针SP和堆栈映像指针?C_XBP,最后利用中断返回。
②编写OSCtxSw()函数:先从当前任务的TCB控制块中获得当前任务堆栈长度和堆栈映像指针,然后将系统堆栈的内容复制到任务堆栈映像,最后获得将要恢复运行的就绪任务的TCB,程序跳至OSSTartHihgRdy()函数的入口,实现任务的切换。
③编写OSIntCtxSw()函数:代码大部分与OSCtxSw()相同,不同之处在于此处不需要再保存寄存器;需要调整堆栈指针(SP=SP-4),去掉在调用OSIntExit(),OSIntCtxSw()中压入堆栈中的多余的内容,以使堆栈中只包含任务的运行环境。
④编写OSTickISR()函数:用定时器0作中断源,初始化定时器0使系统每秒中断100次,节拍率Tick=100次/秒。
(4)修改OS_CPU_C.C文件:编写OSTaskStkInit()函数用来初始化堆栈。
2. 基于µC/OS-II的C8051F060应用系统开发
移植了µC/OS-II的C8051F060的每个功能都可以作为一个独立的任务,每个任务都有自己的堆栈空间,可以被其他任务和中断服务程序挂起。在设计中,主函数均以OSInit()开始,以OSStart()结束,中间部分为与硬件相关的系统初始化函数。对于任务的建立,必须依照µC/OS-II系统中建立任务的格式,根据自己的需求来确定任务的个数,并且根据任务的重要程度和被调用的频率来设置好优先级。创建好任务后,在主函数外面分别列出各个任务函数,每个任务函数都是一个无限循环程序,调用实现某些功能的应用程序函数,然后按设计的需求设置挂起方式和挂起时间。
应用系统测试程序实现了6个任务:Task1是每1s发送CAN数据包,Task2是处理CAN接收到的数据,Task3是每3s发送串口数据,Task4是处理串口接收到的数据,Task5是处理按键信息,Task6是显示数据。CAN总线接收采用中断方式,其优先级高于其他任务,为了保证系统的实时性,在中断程序中不处理数据,只是发送一个信号量,在Task2中处理CAN数据。串口数据接收亦采用中断方式,其优先级低于CAN高于其他任务。串口数据发送采用的是查询方式,按字节发送。程序中设置6个任务的优先级依次为13,11,14,12,15,16。
在主程序中,首先初始化C8051F060和CAN,调用OsInit();然后调用API函数,创建6个任务(不包括空闲任务);再创建一个信号量CAN_EVENT,为中断与Task2通信所用;最后调用OSStart(),OS系统开始运行优先级最高的任务。Task2的优先级最高,但是在没收到CAN_EVENT之前,任务一直处于休眠状态,当CAN接收器收到数据包后,Task2进入就绪态,在中断返回时,进行任务切换,执行优先级最高Task2。在Task2还未收到信号量之前,Task1、Task3、Task4、Task5和Task6根据时间延时和优先级的不同各自独立运行。
三、结束语
将编写的测试程序下载到C8051F060应用系统中进行了实际的运行测试,测试表明,基于µC/OS-II的C8051F060应用系统中的各任务工作稳定可靠,取得了满意的效果,为进行嵌入式应用系统的进一步设计奠定了基础。
(作者单位:黑龙江省大庆职业学院)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

❹ ucos ii是什么啊

μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的B B S 上。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS-II以源代码的形式发布,但并不意味着它是开源软件。你可以将其用于教学和私下研究(peaceful research);但是如果你将其用于商业用途,那么你必须通过Micrium获得商用许可。

❺ 用ucos有什么好处吗

多任务,相当你同时在用多几个单片机,可以用任务分解去写代码,更加简单,更加稳定。
调试也容易。

阅读全文

与单片机ucosii相关的资料

热点内容
压缩气管阀门 浏览:457
pdf推文 浏览:353
69程序员 浏览:577
阿里云服务器镜像如何迁移到腾讯 浏览:979
安卓如何显示日期在状态栏 浏览:803
cadsplt这个命令用不了 浏览:465
安卓夸克怎么取消监管 浏览:662
pdf怎么裁剪图片 浏览:436
黑上宏命令 浏览:644
mac解压压缩包有密码 浏览:704
命令与征服知乎 浏览:561
小时代pdf 浏览:221
化工设备第三版答案pdf 浏览:465
防火卷帘控制器单片机程序 浏览:16
rdlcpdf 浏览:109
链表实现快速排序python 浏览:590
php输出命令 浏览:987
d站app叫什么名字 浏览:172
oppor系列如何解除应用加密 浏览:602
程序员那么可爱姜逸城初恋 浏览:501