uCOSII的嵌入式串口通信模块设计

合集下载

uCOS-II简介

uCOS-II简介

uC/OS-II简介u C / O S 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。

μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean brosse 在《嵌入式系统编程》杂志的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 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。

63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个。

uC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等。

系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,改任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,改任务负责统计当前cpu的利用率。

嵌入式实验报告

嵌入式实验报告

嵌入式实验报告本次实验我们使用了一款基于ARM Cortex-M3处理器的开发板,开发板上运行的是嵌入式操作系统UCOS-II。

我们通过这个实验了解了嵌入式系统的工作流程,以及如何使用开发板进行程序编程和调试。

实验内容分为两个部分:第一个部分是编写一个简单的LED 闪烁的程序,第二个部分则是使用串口通信,将开发板和PC机进行连接,并通过PC机上的终端程序,实现与开发板之间的通信。

第一部分:LED闪烁程序在这个部分,我们首先学习了如何配置开发板上的GPIO(Generic Input/Output)接口,以控制LED的亮灭。

然后,我们编写了一个简单的程序,将LED的亮度不断地切换,使其看起来像在闪烁。

通过这个实验,我们学会了如何使用开发板上的寄存器,设置和读取相关的控制寄存器信息。

在程序编写的过程中,我们还学习了如何进行代码调试,以及如何使用JLink等开发工具对程序进行下载和烧录。

第二部分:串口通信在这个部分,我们使用了开发板上的UART(Universal Asynchronous Receiver/Transmitter)接口,将开发板和PC机进行连接。

之后,我们在PC机上安装了一个终端程序(TeraTerm),通过串口发送数据到开发板上,并将开发板返回的数据显示在终端窗口中。

通过这个实验,我们学习了如何使用UART接口进行数据的收发。

我们还学习了UCOS-II操作系统下的信号量使用方法,以及在多任务环境下,如何实现任务间的通信和同步。

总结在这个实验中,我们对嵌入式开发的基础知识进行了全面深入的了解,并通过实践的方式完成了两项实际应用场景的设计和实现。

我们大大提高了自己的嵌入式开发技能,同时也体验到了从开发到调试、测试、验证的整个流程,对我们日后的开发工作具有非常重要的启示意义。

嵌入式实时操作系统uCOS-II(中文版)

嵌入式实时操作系统uCOS-II(中文版)

嵌入式实时操作系统uCOS-II(中文版)第一章:范例在这一章里将提供三个范例来说明如何使用µC/OS-II。

笔者之所以在本书一开始就写这一章是为了让读者尽快开始使用µC/OS-II。

在开始讲述这些例子之前,笔者想先说明一些在这本书里的约定。

这些例子曾经用Borland C/C++ 编译器(V3.1)编译过,用选择项产生Intel/AMD80186处理器(大模式下编译)的代码。

这些代码实际上是在Intel Pentium II PC (300MHz)上运行和测试过,Intel Pentium II PC可以看成是特别快的80186。

笔者选择PC做为目标系统是由于以下几个原因:首先也是最为重要的,以PC做为目标系统比起以其他嵌入式环境,如评估板,仿真器等,更容易进行代码的测试,不用不断地烧写EPROM,不断地向EPROM仿真器中下载程序等等。

用户只需要简单地编译、链接和执行。

其次,使用Borland C/C++产生的80186的目标代码(实模式,在大模式下编译)与所有Intel、AMD、Cyrix公司的80x86 CPU兼容。

1.00 安装µC/OS-II本书附带一张软盘包括了所有我们讨论的源代码。

是假定读者在80x86,Pentium,或者Pentium-II处理器上运行DOS或Windows95。

至少需要5Mb硬盘空间来安装uC/OS-II。

请按照以下步骤安装:1.进入到DOS(或在Windows 95下打开DOS窗口)并且指定C:为默认驱动器。

2.将磁盘插入到A:驱动器。

3.键入 A:INSTALL 【drive】注意『drive』是读者想要将µC/OS-II安装的目标磁盘的盘符。

INSTALL.BAT 是一个DOS的批处理文件,位于磁盘的根目录下。

它会自动在读者指定的目标驱动器中建立\SOFTWARE目录并且将uCOS-II.EXE文件从A:驱动器复制到\SOFTWARE并且运行。

【精品】第8章基于ucosii的程序设计实例

【精品】第8章基于ucosii的程序设计实例

第八章基于μC O S-I I的程序设计实例8.1 实例介绍为了使读者对μCOS-II操作系统有更深的理解,本章将介绍一个在STM32F103 处理器平台上使用μCOS-II实时操作系统的程序设计实例。

此实例使用英倍特公司提供的STM103V100评估板来实现一个简易温度计。

该实例使用STM103V100评估板自带的高灵敏度数字温度传感器来传送温度数据,根据实际采样周期的需要,安排了四种不同的采样方式。

采样的条件和周期可以通过键盘输入进行调节,采样得到的结果可以在评估板的液晶屏上同步显示,并通过串口将采样所得的结果送到上位机。

关于STM103V100评估板的更多内容超出本书范围,请读者参阅其它相关资料。

8.2 实例分析本节主要分析如何通过基于实时操作系统编程的方法实现整个系统的所有功能。

下面的内容将从任务划分开始,详细说明任务分析的过程。

8.2.1 实例任务划分为了更合理的将整个系统划分为不同任务,首先要明确一个好的实时系统应具备那些特点,即任务划分的基本原则是什么。

一般说来,任务划分的基本原则有以下几点:∙满足系统“实时性”:一般使用μCOS-II的嵌入式应用系统,对于响应时间要求很高,如果实时性得不到满足,系统会出现错误甚至导致难以挽回的故障。

因此在任务划分时,保证系统实时性是首要原则。

∙较少资源需求:多个任务协同运转,依靠操作系统的调度策略。

任务之间的同步,任务之间的通信,内存管理都需要消耗系统资源。

所以在任务划分时,尽量将使用同类资源的应用归入同一任务中,以减少操作系统调度时所消耗的资源。

∙合理的任务数:同一系统,任务划分的数目越多,每个任务的功能越简单,实现越容易,但任务数目的增多,加大了操作系统的调度负担,资源开销也随之加大;相反,如果任务划分的数目太少,会增加每个任务的复杂性,使任务设计难度加大。

最极端的情况,当系统任务数目减少到1时,也就失去了使用多任务操作系统的意义。

对一个具体的嵌入式应用系统进行任务划分时,可以有不同的任务划分方案。

嵌入式操作系统_第7章 ucOS-II - 任务的同步互斥通信

嵌入式操作系统_第7章 ucOS-II - 任务的同步互斥通信
释印做畅与系是黄宋黄时缓态之放机,宏丹宏地人和依(冲,后:丹:同们谐靠后的那别:腿缓区只,步依、任,使么走我是冲得有才啊自你运靠工务系用也!己自区到等应行通作之统权会的己信 顺 间,为有任该腿的才。造,,来 利 的而空效务通能如成我但互 的 良不A时数知爱手向唤果极相 做 好致走是)据任缓醒这大就咱沟 法 通导,而务走俩通 一 信致冲任两的,的B任应, 样 来灾区去务个混你呀务该管!从 , 保难写取B任乱不B使处而计证性入因数务着。使算任的其于!了据不不人机务后获等数。能这际系与果得待据从样关统任。打状
IO)N;SO当就T_函8SE任绪USV数e务状EmON等P态S的TeS待n。e*返dmp的允如ePv回o时许果esnt间用值t参(/超参数/为信过数ti号已mttii量emmo创eeu的ootu被u建指tt时设设针的可置置信以一为结个0号,束等量则等待表的待时明状间指任态的针务而限。的进制入,等
待时间为无限长。 调用函数成功后,函数返回值为OS_ON_ERR,否则会根据具体 错误返回OS_ERR_EVENT_TYPE、OS_SEM_OVF。
函块以8 位IO)表数,N;至函vOS赋o明TO把S_占数i8低号号优_EdS这以U成EMVO用O8 先为值V是ESu员pOS这ENtMre无位级(M一SiNOTxo个uMTuCS个t效和(反该*te资uEre*pxet互xvpee)高转值Pa欲源Pevxete斥enevePn的,8现为(提ntneodT型dnts()y其t高位象0t从升,)p/信(/x的e他(/互/空8两而F赋互的号原任F斥事位部要斥以量时优型务型件型常用分提,为,先释信控信数然:来:升放信号级制号后O了存低的量号别S块量再该指_放8优为链指E)把信针V为位先有针表成,E号N了用级获效员量低T取避来别O_,。8TS一免存pY否位ErPv个i出放则oeE赋n。事_t现信M信C以件nUt常控的TE制数高X

ucos 串口中断接收写法

ucos 串口中断接收写法

ucos 串口中断接收写法UCOS(Micrium公司所开发的一款实时操作系统)是一款非常灵活的嵌入式操作系统,在嵌入式系统中广泛应用。

在UCOS中使用串口中断来接收数据可以极大地提高系统的响应速度和效率。

本文将逐步介绍UCOS中串口中断接收数据的实现方法和写法。

一、UCOS的基本概念与串口中断的作用UCOS是一种多任务实时操作系统,被广泛应用于嵌入式系统中。

它具有高度的可移植性和可扩展性,能够满足各种不同的应用需求。

串口中断是嵌入式系统中常用的通信方式之一,其作用是在数据传输过程中,当接收到数据时立即通知操作系统进行处理,提高系统的实时性和效率。

串口中断接收数据的写法可以通过编写中断处理函数来实现。

二、编写串口中断接收数据的准备工作在开始编写串口中断接收数据之前,需要进行一些准备工作:1. 确定串口通信参数:包括波特率、数据位数、停止位等。

这些参数需要与通信的发送端保持一致。

2. 初始化串口:通过设置串口通信模块的相应寄存器来初始化串口。

3. 编写中断处理函数:中断处理函数负责接收串口中断产生的数据,并进行相应处理。

三、编写串口中断接收数据的步骤下面将详细介绍UCOS中串口中断接收数据的写法步骤:1. 创建串口中断接收任务:在UCOS中,每个任务都是一个独立的实体,需要通过创建任务的方式来执行相应的任务。

首先,创建一个任务来执行串口接收数据的相关操作。

2. 初始化串口:在任务中,首先需要进行串口的初始化操作,确保串口模块能够正常工作。

将串口通信所需的参数设置好,并通过相应寄存器进行配置。

3. 创建中断处理函数:UCOS提供了中断处理函数的接口,在其中进行串口接收数据的处理。

在中断处理函数中,首先判断是否为接收中断,并判断接收寄存器是否有数据可读。

如果有数据可读,则将数据保存到缓冲区中,并在接收完成后通知任务进行数据处理。

4. 任务处理数据:当中断处理函数接收到数据后,需要通知相应的任务来处理数据。

UCOSII操作系统课程设计

UCOSII操作系统课程设计

UCOSII操作系统课程设计一、课程目标知识目标:1. 理解UCOSII操作系统的基本原理和核心概念,包括任务管理、时间管理、通信与同步机制;2. 掌握UCOSII的移植方法和配置过程,学会在不同硬件平台上搭建UCOSII 操作系统环境;3. 学会使用UCOSII提供的API进行多任务编程,了解实时操作系统的任务调度和资源管理策略。

技能目标:1. 能够运用C语言在UCOSII环境下编写多任务应用程序,实现任务间的同步与通信;2. 能够分析并解决实际嵌入式系统开发中与操作系统相关的问题,提高系统稳定性和可靠性;3. 掌握UCOSII调试技巧,能够运用调试工具对操作系统运行状态进行跟踪和分析。

情感态度价值观目标:1. 培养学生对操作系统知识的好奇心和探索精神,激发学习兴趣和热情;2. 培养学生具备良好的团队合作精神和沟通能力,提高解决实际问题的能力;3. 增强学生的创新意识,鼓励他们在实际项目中积极尝试和应用所学知识。

课程性质:本课程为高年级专业课,以实际应用为导向,注重理论与实践相结合。

学生特点:学生已具备一定的C语言编程基础和嵌入式系统知识,具有较强的学习能力和实践能力。

教学要求:教师需采用项目驱动教学法,引导学生通过实际案例掌握UCOSII 操作系统的应用与开发。

在教学过程中,关注学生的个体差异,提供个性化指导,确保课程目标的实现。

同时,注重培养学生的自主学习能力和创新能力,为将来的职业发展打下坚实基础。

二、教学内容1. UCOSII操作系统概述:介绍实时操作系统的基本概念、特点及应用场景,引出UCOSII的背景、架构和优势。

教材章节:第一章 实时操作系统概述2. UCOSII内核原理:讲解UCOSII的核心组件,包括任务管理、时间管理、通信与同步机制等。

教材章节:第二章 UCOSII内核原理3. UCOSII移植与配置:介绍在不同硬件平台上移植和配置UCOSII的方法,以实际案例为例进行讲解。

uCOSII驱动编程讲解之串口UART篇

uCOSII驱动编程讲解之串口UART篇

[7]
[6] [5] [4]
确定接收超时使能 0=不使能 1=使能
确定接收错误状态使能 0=不使能 1=使能 确定是否采用回送模式 0=正常操作模式 1=回送模式 确定通信中断信号 0=正常操作模式 1=发送通信中断信号
0x0
0x0 0x0 0x0
[3:2]
确定将发送数据写入发送缓存区的模式 00=不能写 01=中断请求模式 10=DMA0(UART0) 或DMA3(UART2) 11=DMA1(UART1)
6.1.4 UART的初始化
1. 与UART相关的特殊功能寄存器
UART线控制寄存器(ULCONn) UART控制寄存器(UCONn) UART FIFO控制寄存器(UFCONn) UART Modem控制寄存器(UMCONn) UART波特率因子寄存器(UBRDIVn) UART Tx/Rx状态寄存器(UTRSTATn)
0x00
[1:0]
确定将接收缓存区读出数据的模式 00=不能读 01=中断请求模式 10=DMA0(UART0) 或DMA3(UART2) 11=DMA1(UART1)
0x00
2) UARTn Tx/Rx状态寄存器 Tx/Rx状态寄存器UARTn
寄 存 器 UTRSTAT0 地 址 读写操作 读 功能描述 UART0 Tx/Rx状态寄存器 复位值 0x6
奇偶校验能够检测出信息传输过程中的部分误 码(奇数误码能检出,偶数误码不能检出),同 时,它不能纠错。在发现错误后,只能要求重发。 但由于其实现简单,仍得到了广泛使用。
3. UART(通用异步收发器)介绍
1) 3个独立的异步串行I/O接口 2)最高可支持115200bps传输率。
4Байду номын сангаас 串行接口的物理层标准
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

uCOS-II的嵌入式串口通信模块设计在嵌入式应用中,使用RTOS的主要原因是为了提高系统的可靠性,其次是提高开发效率、缩短开发周期。

uCOS-II是一个占先式实时多任务内核,使用对象是嵌入式系统,对源代码适当裁减,很容易移植到8~32位不同框架的微处理器上。

但uCOS-II仅是一个实时内核,它不像其他实时操作系统(如嵌入式Linux)那样提供给用户一些API函数接口。

在uCOS-II实时内核下,对外设的访问接口没有统一完善,有很多工作需要用户自己去完成。

串口通信是单片机测控系统的重要组成部分,异步串行口是一个比较简单又很具代表性的中断驱动外设。

本文以单片机中的串口为例,介绍uCOS—II下编写中断服务程序以及外设驱动程序的一般思路。

1 uCOS-II的中断处理及51系列单片机中断系统分析 uCOS-II中断服务程序(ISR)一般用汇编语言编写。

以下是中断服务程序的步骤。

保存全部CPU寄存器;调用OSIntEnter()或OSIntNesting(全局变量)直接加1;执行用户代码做中断服务;调用OSIntExit();恢复所有CPU寄存器;执行中断返回指令。

uCOS-II提供两个ISR与内核接口函数;OSIntEnter ()和OSIntExit()。

OSIntEnter()通知uCOS-II核,中断服务程序开始了。

事实上,此函数做的工作是把一个全局变量OSIntNesting加1,此中断嵌套计数器可以确保所有中断处理完成后再做任务调度。

另一个接口函数OSIntExit()则通知内核,中断服务已结束。

根据相应情况,退回被中断点(可能是一个任务或者是被嵌套的中断服务程序)或由内核作任务调度。

用户编写的ISR必须被安装到某一位置,以便中断发生后,CPU根据相应的中断号运行准确的服务程序。

许多实时操作系统都提供了安装和卸载中断服务程序的API接口函数,但uCOS-II内核没有提供类似的接口函数,需要用户在对CPU的移植中自己实现。

这些接口函数与具体的硬件环境有关,接下来以51单片机下的中断处理对此详细说明。

51单片机的中断基本过程如下:CPU在每个机器周期的S5P2时刻采样中断标志,而在下一指令周期将对采样的中断进行查询。

如果有中断请求,则按照优先级高低的原则进行处理。

响应中断时,先置相应的优先级激活触发器于相应位,封锁同级或低级中断,然后根据中断源类别,在硬件控制下,将中断地址压入堆栈,并转向相应的中断向量入口单元。

通常在入口单元处放一跳转指令,转向执行中断服务程序.当执行中断返回指令RETI时,把响应中断时所置位的优先级激活触发器清零后,从堆栈中弹出被保护的断点地址,装入程序计数器PC,CPU返回原来被中断处继续执行程序。

在移植的过程中,采用Keil C51作为编译环境。

Keil C5l集成C编译和汇编器。

中断子程序用汇编语言编写,放到移植uCOS-II后的OS_CPU_A.ASM汇编文件中。

下面是以串行口中断为例的移植中断服务子程序代码。

CSEGAT0023H ;串口中断响应入口地址LJMPSerialISR;转移到串口中断子程序入口地址RSEG?PR?SeriallSR?OS_CPU_ASerialISR:USINGOCLR EA ;先关中断,以防中断嵌套PUSHALL ;已定义的压栈宏,用于将;CPU寄存器的值压入堆栈LCALL_?OSIntEnter ;监视中断嵌套LCALL_?Serial ;串口中断服务程序LCALL_?OSintExltSETBEAPOPALL;已定义的出栈宏,将CPU寄存器的值出栈RETI2 串口驱动程序笔者已在5l单片机上成功移植了uCOS-II内核,移植过程在此不再讨论。

这里重点分析uC0S—II内核下串口驱动程序编写。

由于串行设备存在外设处理速度和CPU速度不匹配的问题,所以需要一个缓冲区.向串口发送数据时,只要把数据写到缓冲区中,然后由串口逐个取出往外发。

从串口接收数据时,往往等收到若干个字节后才需要CPU进行处理,所以这些预收的数据可以先存于缓冲区中。

实际上,单片机的异步串口中只有两个相互独立、地址相同的接收、发送缓冲寄存器SBUF。

在实际应用中,需要从内存中开辟两个缓冲区,分别为接收缓冲区和发送缓冲区。

这里把缓冲区定义为环形队列的数据结构。

uCOS-II内核提供了信号量作为通信和同步的机制,引入数据接收信号量、数据发送信号量分别对缓冲区两端的操作进行同步。

串口的操作模式如下:用户任务想写,但缓冲区满时,在信号量上睡眠,让CPU运行别的任务,待ISR从缓冲区读走数据后唤醒此睡眠的任务;同样,用户任务想读,但缓冲区空时,也可以在信号量上睡眠,待外部设备有数据来了再唤醒。

由于uCOS-II 的信号量提供了超时等待机制,串口当然也具有超时读写能力。

图1是带缓冲区和信号量的串口接收示意图。

数据接收信号量初始化为0,表示在环形缓冲区中无数据。

接收中断到来后,ISR从UART的接收缓冲器SBUF中读入接收的字节(②),放入接收缓冲区(③),然后通过接收信号量唤醒用户任务端的读操作(④、①)。

在整个过程中,可以查询记录缓冲区中当前字节数的变量值,此变量表明接收缓冲区是否已满。

UART收到数据并触发了接收中断,但如果此时缓冲区是满的,那么放弃收到的字符。

缓冲区的大小应合理设置,降低数据丢失的可能性,又要避免存储空间的浪费。

图2为带环形缓冲区和超时信号量的串口发送示意图。

发送信号量初始值设为发送缓冲区的大小,表示缓冲区已空,并且关闭发送中断。

发送数据时,用户任务在信号量上等待(①)。

如果发送缓冲区未满,用户任务向发送缓冲区中写入数据(②)。

如果写入的是发送缓冲区中的第一个字节,则允许发送中断(②)。

然后,发送ISR从发送缓冲区中取出最早写入的字节输出至UART(④),这个操作又触发了下一次的发送中断,如此循环直到发送缓冲区中最后一个字节被取走,重新关闭发送中断。

在ISR向UART输出的同时,给信号量发信号(⑤),发送任务据此信号量计数值来了解发送缓冲区中是否有空间。

3 串口通信模块的设计每个串行端口有两个环状队列缓冲区,同时有两个信号量:一个用来指示接收字节,另一个用来指示发送字节。

每个环状缓冲区有以下四个要素:存储数据(INT8U数组);包含环状缓冲区字节数的计数器;环状缓冲区中指向将被放置的下一字节的指针;环状缓冲区中指向被取出的下一字节的指针。

图3是接收数据软件模块的流程图。

SerialGetehar ()用来获取接收到的数据,如果缓冲区已空时将任务挂起,接收到字节时,任务将被唤醒,同时从串行口接收字节。

SerialPutRxChar()用来将接收的字节放到缓冲区中,如果接收缓冲区已满,则该字节被丢弃。

当字节插入到缓冲区中,SerialPutRxChar()通知数据接收信号量,使之将数据己到的消息传达给所有等待的任务。

为防止挂起应用任务,可以通过调用 SceiallsEmPty()去发现环状队列中是否有字节。

图4是发送数据模块的流程图。

当需要发送数据给串行端口时,SerialPurChar()等待信号量在初始化发送信号量时应该初始为缓冲区的大小。

因此,当缓冲区中没有更多空间时,SerialPutChar()就挂起任务,只要UART再次发送字节,挂起任务就将恢复。

SerialGctChar()被中断服务程序调用,如果发送缓冲区至少还有一个字节,Seri-a1GetChar()就返回一个从缓冲区发送的字节。

如果缓冲区己空,则SerialGetChar()返回Null,这将使调用停止进一步的发送中断,一直到有数据发送为止。

4 异步串行通信的接口函数应用任务可以通过如下的几个函数来控制和访问UART:SerialCfgPort()、SerialGetChar()、SerialInit()、SerialIsEmpty()、SerialIsFull()和SerialPutChar()。

SerialCfgPort()用于建立串行端口的特征,在为指定端口调用其他服务前,必须先调用该函数,包括确定波特率、比特数、奇偶校验和停止位等。

SerialGetChar()使应用程序从接收数据的环状缓冲区中取出数据。

SerialInit()用于初始化整个串口软件模块,且必须在该模块提供的其他任何服务前调用。

SeriallInit()将环状缓冲区计数器的字节数清零,并初始化每个环状缓冲区的IN和OUT指针,指向数据存储区的开始处。

数据接收信号量初始化为0,表示在环状缓冲区无数据。

用传送缓冲区大小初始化数据传送信号量,表示缓冲区已空。

SerialIsEmpty()允许应用程序确定是否有字节从串口接收进来。

本函数允许在无数据时避免将任务挂起。

SerialIsFull()允许应用程序确定传送环状缓冲区的状态,本函数可以在缓冲区已满时避免将任务挂起。

SerialPutChar()允许应用程序向一个串行端口发送数据。

结语该串口通信模块充分利用了实时内核的任务调度功能和信号量机制,系统软件模块化,可读性增强,便于修改和移植,其设计思路和方法可以很好的应用在多种情况下的测控系统中,系统的扩展方便,具有一定的借鉴作用。

该串口通信模块已作为某铁路供水远程控制终端的一部分,运行稳定,提高了整个系统的运行效率和实时性。

相关文档
最新文档