基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

发布者:温馨的家庭最新更新时间:2023-10-19 来源: elecfans关键字:评估板  实时操作系统  μC/OS-II  串口通信 手机看文章 扫描二维码
随时随地手机看文章

ARM是目前嵌入式领域中应用最广泛的RISC微处理器结构,以低成本、低功耗、高性能的特点占据了嵌入式系统应用领域的领先地位,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场。STM32F103VB是基于ARM新内核Cortex-M3的通用微处理器,STM32V评估板是基于该芯片的学习板并集成了仿真调试器(Ulink_Me),可以方便用户快速学习和开发用户程序。目前常见的嵌入式系统有:WinCE、Linux、pSoS、VxWorks和μC/OS-II等。μC/OS-Ⅱ是专门为嵌入式系统应用设计的,具有源码公开、实时性好、可移植裁剪、高效稳定和教学科研免费使用等特点,已经成功移植到8、16、32和64位等多种微处理器上,广泛应用于照相摄影、医疗器械、音响设备、工业机器人控制、发动机控制、航空器、高速公路电话系统、自动提款机等众多领域。这里以STM32V评估板为硬件开发平台,结合μC/OS-II嵌入式操作系统,设计了基于信号量、消息邮箱的串口通信应用程序。


1 信号量、消息邮箱

μC/OS-II由事件(Event)驱动,一般事件包括信号量(Semaphores)、互斥信号量(Mutex semaphores)、消息邮箱(Message Mail boxes)、消息队列(Message Query)、事件标志组(Event Flag Group)等。其中信号量和消息邮箱作为一种常见的通信机制,在数据通信过程中应用最为广泛。

1.1 信号量(Semaphores)

μC/OS-II的信号量由2部分组成:一个是信号的计数值(0~65 535);另一个是由等待该信号量的任务组成的等待任务列表。信号量可用于以下场合:允许一个任务与其他任务或中断同步;取得共享资源的使用权(满足互斥条件);标志事件的发生。

对信号量一般可以实施以下3种操作:初始化(INITIALIZE)信号量或者称为创建信号量(CREATE);等待信号量(WAIT)或者称为挂起信号量(PEND);发送信号量(POST)。

信号量在初始化过程中需要给信号量赋初值,等待信号量的任务表(WAWING LIST)应清为空。信号量的使用需要调用相应的函数并配置其相关的宏定义,具体如表1所示。

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

1.2 消息邮箱(Message Mail boxes)

消息邮箱能使任务或中断服务向另外一个任务发送一个指针型的变量,这个指针指向一个包含指定“消息”的数据结构。消息邮箱发送的不是消息本身,而是消息的地址指针。

消息邮箱可用于通知一个事件发生或作为二值信号量使用。消息邮箱的工作原理是邮箱在初始化时建立一个等待消息的任务列表,当邮箱为空时,等待消息的任务就挂起,并且被加入到等待消息的任务列表中。当邮箱收到消息时,等待任务列表中优先级最高的任务或者最先等待消息的任务得到消息,且转入就绪并从任务列表中清除。

对消息邮箱的操作一般有3种:邮箱初始化(INITIALIZE),或者称为建立邮箱(CREATE);发送消息给邮箱(POST);等待消息进入邮箱(PE-ND);无等待请求邮箱消息(ACCEFT)。

消息邮箱的使用需要调用相应的函数并配置其相关的宏定义,具体如表2所示。

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

2 硬件开发设计

2.1 硬件开发平台

以STM32V评估板为硬件开发平台,该评估板采用ST公司32位ARM微处理器STM32F103VB,该芯片最大时钟频率72 MHz,内置大容量存储器包括128 KB的高速Flash和20 K的SRAM,丰富的外设接口:80个高速I/O接口,3个USART,2个I2C,2个SPI,7通道的DMA,RTC等。STM32V开发板将这些外设接口全部引出,自带LCD液晶显示并集成调试工具,用户可方便设计、调试和查看程序运行结果等。评估板功能模块组成如图1所示,主要包括以下部分:模拟输入信号部分、跳线配置、USB电源供给、液晶显示、串口通信、CAN通信、复位/输入按钮、LED显示和SD卡存储。

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

2.2 通信电路

计算机与外界的信息交换称为通信。通信基本方式分为串行通信和并行通信两种。串行通信是指一个数据是逐位顺序传送的通信方式,串行通信有同步和异步两种基本的通信方式。

其中,同步通信是通过同步时钟来实现发送和接收数据的同步。而异步通信规定了字符数据的传送格式,即每个数据以相同的帧格式传送。每一帧信息由起始位、数据位、奇偶校验位和停止位组成。依据起始位在每个字符数据开始时使发送和接收同步,停止位则作为字符结束的标志。

PC机的串行通信接口采用的是EIA RS-232E标准串行通信协议。在本设计中,主控芯片STM32F103VB的接口采用TTL电平,规定0~0.8 V为“0”电平,2~5V为“1”电平,它不能直接与PC机标准串行通信接口连接,必须设计TTL电平到RS-232协议电平信号的转换电路。串口RS-232电平与STM32F103VB微处理器TTL电平转换由开发板上的ST3232完成,接口电路如图2所示。

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

3 软件开发设计

选择RealView MDK软件作为开发工具,它是针对各种嵌入式处理器开发的软件开发工具。与ARM之前的工具包ADS等相比,RealView编译器可将代码密度提高10%,性能改善20%,并且支持ARM7、ARM9和最新的Cortex-M3核处理器。编程语言可以使用C或者C++语言,支持在线调试。

嵌入式实时操作系统μC/OS-Ⅱ可以管理256个任务,除了系统任务外,用户应用程序最多可以有248个任务,而中断嵌套的层数最多也可以到255层。任务创建过程包含了任务堆栈大小的设置、优先级分配以及在通信或保持同步过程中使用的信号量和邮箱。在STM32V评估板上通过RS232接口实现了评估板与PC机的通信,软件设计流程如图3所示,在完成相应的初始化之后,创建程序设计中用到的信号量和消息邮箱,紧接着需要创建应用任务,最后启动系统。

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

由该流程图可以看出:本程序设计中创建了4个任务,即LED显示任务,液晶显示任务,串口数据发送任务和数据发送控制任务。每一个任务都要有相应的优先级和任务堆栈空间,程序设计中每个任务的堆栈空间为512个字节,优先级依次为11,13,4,6。

ST公司用标准的ANSI C封装了ARM微处理器中各个功能寄存器,为用户应用程序的开发提供了丰富的固件库(Firmware)。固件库方便用户对底层微处理器外设进行初始化配置,如串口初始化函数为void USARTConfigurtion(void),具体代码如下:

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

初始化操作包括了时钟初始化、中断初始化,I/O接口初始化,串口初始化等。主程序在完成初始化操作后创建信号量、消息邮箱和任务创建。由于信号量、邮箱都是事件类型,所以需用OS_EV-ENT来定义,信号量、邮箱的建立由函数App_EventCreate()完成。

使用信号量和消息邮箱可以保持任务之间的通信的同步,串口数据发送任务App_TaskSendata(void-*p_arg)发送信号量App_UserIFSem通知数据发送控制任务App_TaskSendata Ctrl(void*p_arg),数据发送控制任务在接收到信号量App_User IFSem后,发送消息(www.Real Vie-w.com\n)给指定邮箱App_UserIFMbox,串口调用数据发送函数USART_Send Data(),串口数据发送任务数据发送完成后发送通知信号量App_ UserIFSeml给数据发送控制任务,数据发送控制任务在接收到发送完成信号量App_UserIFSeml后,向指定邮箱发送另一则消息(www.xust. edu.cn\n),数据发送任务在接收到消息邮箱后通过串口发送接收到的消息内容给PC机。具体代码如下:

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

图4为串口通信波特率设定为9 600 bps和115 200 bps时,在串口小助手中观察到的程序运行后的测试结果,结果表明程序按照预先设定好的发送要求不断向PC机发送数据,并且通信稳定,在测试过程中未出现乱码和通信异常中断情况,程序设计达到了预期目标。通常在工业现场实际应用中需要保证数据传输的可靠性,一般都需要在数据的发送和接收端对数据进行相应的数据校验,常见的数据校验算法是CRC校验,可以采用8或16位的CRC校验方式。在该通信过程中并未使用校验算法来检测数据传输的一致性,若在数据传输过程中添加相应的CRC校验算法,就可以最大程度地减少数据传输的误码率,保证数据传输的准确性。在后期的研究学习中也可以尝试将其应用于工业现场以测试其工作的可靠性。

基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

4 结论

本文以STM32V评估板为硬件开发平台,结合μC/OS-II嵌入式操作系统中信号量和消息邮箱,设计了基于信号量、消息邮箱的串口通信应用程序,并通过实验验证了该串口应用程序在保证任务间通信同步情况下,数据传输具有较好的稳定性和可靠性,达到了程序设计预期目标。


关键字:评估板  实时操作系统  μC/OS-II  串口通信 引用地址:基于STM32V评估板的嵌入式实时操作系统μC/OS-II串口通信设计

上一篇:为什么时钟失效后CPU还在运行
下一篇:STM32F103单片机学习笔记(1):用库新建工程和驱动IO口

推荐阅读最新更新时间:2024-11-08 18:22

STM32F103标准库开发---Uart串口通信实验---安装串口驱动和串口调试
串口调试器 USB转TTL实物图: 接口介绍: 串口驱动安装 双击串口驱动CH341SER.EXE安装软件 点击安装 安装成功 将串口调试器插入电脑,然后选择设备管理器,成功后的端口驱动如下: 串口调试助手 串口调试助手:sscom5.13.1 界面如下: 串口通信调试 1. 打开串口调试助手 双击sscom5.13.1.exe文件 2. 选择端口 设备管理器中是COM5 串口调试助手中选择COM5 3. 设置参数 数据具体如下: 4. 打开串口 点击打开串口 5. 调试现象 我单片机中程序的功能是:每100ms发送一次 工欲善其事,必先利其器。 具体现象如下:
[单片机]
STM32F103标准库开发---Uart<font color='red'>串口通信</font>实验---安装串口驱动和串口调试
用AndesCore N1033A-S处理器实现μC/OS-II的移植
μC/OS-II是一种代码公开、可裁剪的嵌入式实时多任务操作系统。该内核通过实现抢占式任务调度算法和多任务间通信等功能,使之具有执行效率高、实时性能优良等特点。另外,其占用空间非常小(最小可裁剪至2KB)并且具有高度可移植性,因此被广泛的应用于微处理器和微控制器上。   晶心科技 (Andes)作为亚洲首家原创性32位微处理器IP与系统芯片平台设计公司,推出的AndesCore™ N10系列产品N1033A-S, 搭配应用广泛的嵌入式实时操作系统μC/OS-II以及相关的软硬件开发资源,有效的帮助客户降低现有成本、提升系统效能、减少系统功耗,并缩短产品开发上市时程。本文将介绍如何将μC/OS-II移植到AndesCore™ N1
[模拟电子]
用AndesCore N1033A-S处理器实现μ<font color='red'>C</font>/<font color='red'>OS-II</font>的移植
LPC2292的μC/OS-II硬件抽象层构建
    硬件抽象层是一个处于硬件平台和嵌入式操作系统之间的软件层次。它的主要功能是对系统硬件进行初始化,为操作系统的硬件操作提供一系列接口函数。     硬件抽象层提高了嵌入式操作系统的可移植性。本文基于LPC2292处理器,详细介绍μC/OS-II硬件抽象层的构建方法。      引言     为了便于操作系统在不同硬件结构上进行移植,美国微软公司首先提出了将底层与硬件相关的部分单独设计成硬件抽象层(Hardware Abstraction Layer,HAL)的思想。硬件抽象层的引入大大推动了嵌入式操作系统的通用程度,为嵌入式操作系统的广泛应用提供了可能。     1  μC/OS-II简介     μC/O
[嵌入式]
基于VB 6.0串口通信的气压测高系统数据采集实现
  串口 通信在系统控制的范畴中一直占据着极其重要的地位,在规格上越来越完善,应用也越来越广泛,使用串行通信的方式可以达到系统控制的目的。以往,要实现计算机的串口通信需要做大量复杂的工作,如今,Visual Basic 6.0(VB 6.0)在开发可视化环境下的 监控系统 时有其独特的优势,VB 6.0提供了串行通信控件,可以轻松实现串口数据的交换。本文介绍了基于VB 6.0的ActiveX控件——Microsoft Communication(MSComm)通信控件,实现了PC机对气压测高系统的串行通讯功能,完成了对多台气压测高设备进行数据采集。   1 气压测高 测试系统 的基本构成   气压测高系统的基本构
[嵌入式]
TMS320F28x上RTOS移植关键技术研究
  TMS320F28x上RTOS移植关键技术研究    摘要 详细分析TT公司TMS320F28x系列DSP的启动过程;说明BootROM中程序的运行过程,介绍C编译器和DSP/BIOS的工作细节;探讨DSP的中断处理及从RAM中执行代码等问题。最后分析如何在TMS320F28x系列DSP上移植实时操作系统。    关键词 数字信号处理器 TMS320F28x BootRoM 实时操作系统   TMS320F28x(简称“F28x”)数字信号处理器是TI公司推出的32位定点DSP控制器,其频率高达150 MHz,大大提高了控制系统的精度和芯片的处理能力。在F28x系列DSP上移植实时操作系统,需要对编泽器、系统启动过程、中
[嵌入式]
STR71xF嵌入式系统设计和实践
0 前言 随着信息化、智能化、网络化的发展,嵌入式系统技术也将获得广阔的发展空间。以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美好前景,注人了新的生命,同时也对嵌入式系统技术提出了新的挑战。这主要包括:支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理。 由于因特网技术的成熟、带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样,像电话手机、电话座机及电冰箱、微波炉等嵌入式电子设备的功能不再单一,电气结构也更为复杂。为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片增强处理能力;同时还采用实时多任务编程技术和交叉开发工具技术来
[单片机]
STR71xF嵌入式系统设计和实践
msp430G2553串口通信_launchpad串口通信
MSP430G2553 单片机中集成了 USCI_A0功能模块,可以直接完成串口通信。 一、代码与仿真 TI官方例程中uart代码只有时钟,引脚,串口的初始化,不能直接串口收发,还需要增加发送函数和完善中断函数,我在官方例程的基础上,编写了串口通信程序,并硬件测试通过 。 硬件测试用板(TI的MSP-EXP430G2ET) 注意:图中绿圈跳帽的接法 在水平方向上, 跳线将 TXD 连接到 P1.1, 将RXD 连接到 P1.2 。 在垂直方向上, 跳线将 TXD 连接到 P1.2, 将RXD 连接到 P1.1。 用USCI_A0模块的串口时,RXD和TXD是固定的,板子的跳帽接法固定。 若是软件串口(TimerA定时器和软件结
[单片机]
msp430G2553<font color='red'>串口通信</font>_launchpad<font color='red'>串口通信</font>
基于uC/OS-II和MSP430单片机的RTOS的技术分析
  单片机作为嵌入式信息产品的一个重要应用方面,其使用、设计面临着全新的挑战。一方面,人们对嵌入式产品的要求越来越高,稳定可靠、功能丰富、物美价廉的信息产品将成为人们的首选。另一方面,随着微电子工艺水平的发展,单片机处理器的能力不断提高,从最初的8位单片机到16位,进而32位单片机,功能越来越强大,执行速度越来越快,集成度、精确度也越来越高,应用领域进一步拓宽。可以说,单片机芯片的性能已经能够满足现代人们对嵌入式信息产品的更高要求。为了能将二者有效地结合起来,嵌入式RTOS的软件设计方法也取代了以前的前后台(超循环)设计方法,越来越受到重视和应用。   正如分时操作系统中Linux的出现打破了Windows一统天下的局面一样,
[单片机]
基于uC/<font color='red'>OS-II</font>和MSP430单片机的<font color='red'>RTOS</font>的技术分析
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved