关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于μc/OS-II的多传感器测控系统研究

基于μc/OS-II的多传感器测控系统研究

作者: 时间:2010-01-11 来源:网络 收藏

3 软件设计

3.1 任务分配

为了充分发挥操作在任务调度、任务管理、任务通信、时间管理和内存管理等方面的优势,首先必须根据需要实现的功能,合理的划分任务和分配任务的优先级。按温湿度测控所要求实现的功能,将整个系统划分为并行存在的任务层和中断程序。μC/OS-II嵌入式实时操作系统中的任务状态转换如图2所示。

图2 μC/OS-II任务状态转换示意图

多任务系统在运行时每个任务好像独立占用CPU一样,因此系统必须为每个任务开辟一块内存空间作为该任务的任务堆栈。该堆栈的作用是保存任务被切换前时CPU各寄存器的值以及系统堆栈的数据。在进行任务切换时需要完成工作的主要步骤如下:①将当前任务CPU所有的寄存器压栈;②将CPU系统堆栈的数据全部拷贝到当前任务的任务堆栈中;③ 得到下一个处于运行态优先级最高的任务的任务堆栈的指针;④ 恢复下一个任务的CPU寄存器的值;⑤ 恢复下一个任务的系统堆栈中的数据;⑥ 通过中断返回指令或函数返回指令,间接修改PC寄存器的值来进行任务切换。在为μC/OS-II编写任务切换代码时需要注意的是:μC/OS-II在每次发生中断后都会产生任务调度,但在中断结束后进行的任务切换,不能调用普通任务切换函数,这是因为在中断过程中往往伴随将CPU的状态寄存器压栈操作。

任务切换方法:凌阳SPACE061A单片机有R1-R5 五个通用寄存器,还有1个SR(CPU状态寄存器),再加上PC,总共有7个CPU内部寄存器在任务切换时需要保存。μC/OS-II系统调用OSCtxSw( )来实现任务的切换。系统中并行存在的几个任务按优先级从高到低依次是:系统监视任务、数据采集任务、数据处理任务、数据输出任务、显示任务。在实际系统中,每个任务都是无限循环的,分别实现某一特定的功能,由μC/OS-II内核来进行调度。系统监视任务主要完成系统可靠性的监管;数据采集任务主要完成温度湿度氧浓度的检测和A/D转换;数据处理任务主要完成采集数据和设定数据的比较判定;数据输出任务主要完成数据输出给LCD、通过RS232传输给主机、以及输出控制信号给继电器电路,完成通风、加热、加湿等功能;显示任务主要完成温度湿度氧浓度参数的显示。系统主程序任务流程图如图3所示。

图3 系统主程序任务流程图



评论


相关推荐

技术专区

关闭