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所示。
1.2 音讯邮箱(Message Mail boxes)
音讯邮箱能使使命或中止服务向别的一个使命发送一个指针型的变量,这个指针指向一个包含指定“音讯”的数据结构。音讯邮箱发送的不是音讯自身,而是音讯的地址指针。
音讯邮箱可用于告诉一个事情产生或作为二值信号量运用。音讯邮箱的作业原理是邮箱在初始化时树立一个等候音讯的使命列表,当邮箱为空时,等候音讯的使命就挂起,而且被加入到等候音讯的使命列表中。当邮箱收到音讯时,等候使命列表中优先级最高的使命或许最早等候音讯的使命得到音讯,且转入安排妥当并从使命列表中铲除。
对音讯邮箱的操作一般有3种:邮箱初始化(INITIALIZE),或许称为树立邮箱(CREATE);发送音讯给邮箱(POST);等候音讯进入邮箱(PE-ND);无等候恳求邮箱音讯(ACCEFT)。
音讯邮箱的运用需求调用相应的函数并装备其相关的宏界说,详细如表2所示。
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卡存储。
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所示。
3 软件开发规划
挑选RealView MDK软件作为开发东西,它是针对各种嵌入式处理器开发的软件开发东西。与ARM之前的东西包ADS等比较,RealView编译器可将代码密度进步10%,功用改进20%,而且支撑ARM7、ARM9和最新的Cortex-M3核处理器。编程言语能够运用C或许C++言语,支撑在线调试。
嵌入式实时操作体系μC/OS-Ⅱ能够办理256个使命,除了体系使命外,用户运用程序最多能够有248个使命,而中止嵌套的层数最多也能够到255层。使命创立进程包含了使命仓库巨细的设置、优先级分配以及在通讯或坚持同步进程中运用的信号量和邮箱。在STM32V评价板上经过RS232接口完结了评价板与PC机的通讯,软件规划流程如图3所示,在完结相应的初始化之后,创立程序规划中用到的信号量和音讯邮箱,紧接着需求创立运用使命,最终发动体系。
由该流程图能够看出:本程序规划中创立了4个使命,即LED显现使命,液晶显现使命,串口数据发送使命和数据发送操控使命。每一个使命都要有相应的优先级和使命仓库空间,程序规划中每个使命的仓库空间为512个字节,优先级依次为11,13,4,6。
ST公司用规范的ANSI C封装了ARM微处理器中各个功用寄存器,为用户运用程序的开发供给了丰厚的固件库(Firmware)。固件库便利用户对底层微处理器外设进行初始化装备,如串口初始化函数为void USARTConfigurTIon(void),详细代码如下:
初始化操作包含了时钟初始化、中止初始化,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机。详细代码如下:
图4为串口通讯波特率设定为9 600 bps和115 200 bps时,在串口小帮手中观察到的程序运转后的测验成果,成果表明程序依照预先设定好的发送要求不断向PC机发送数据,而且通讯安稳,在测验进程中未呈现乱码和通讯异常中止状况,程序规划达到了预期方针。通常在工业现场实践运用中需求确保数据传输的可靠性,一般都需求在数据的发送和接纳端对数据进行相应的数据校验,常见的数据校验算法是CRC校验,能够选用8或16位的CRC校验方法。在该通讯进程中并未运用校验算法来检测数据传输的一致性,若在数据传输进程中增加相应的CRC校验算法,就能够最大程度地削减数据传输的误码率,确保数据传输的准确性。在后期的研究学习中也能够测验将其运用于工业现场以测验其作业的可靠性。
4 定论
本文以STM32V评价板为硬件开发渠道,结合μC/OS-II嵌入式操作体系中信号量和音讯邮箱,规划了根据信号量、音讯邮箱的串口通讯运用程序,并经过试验验证了该串口运用程序在确保使命间通讯同步状况下,数据传输具有较好的安稳性和可靠性,达到了程序规划预期方针。