APP下载

基于STM32的嵌入式前后台控制系统设计

2020-04-10陈璇陈晋瑜

现代信息科技 2020年1期
关键词:嵌入式

陈璇 陈晋瑜

摘  要:嵌入式软件的研发需要综合各方面的因素去考虑和取舍,以达到质量和效益之间的均衡,要充分发挥硬件的性能,提高软件的质量是嵌入式软件研究的前提,是企业前期研究必不可少的一个环节。为了实现低成本,开发周期短的嵌入式软件,研究设计了基于STM32F107VC的嵌入式前后台控制系统设计,完成与设备的交互。

关键词:STM32;嵌入式;后台控制系统

中图分类号:TP273      文献标识码:A 文章编号:2096-4706(2020)01-0039-03

Abstract:The research and development of embedded software needs to consider and choose from all aspects,in order to achieve the balance between quality and benefit,to give full play to the performance of hardware,to improve the quality of software is the premise of embedded software research,and is an essential part of the enterprises early research. In order to realize the embedded software with low cost and short development cycle,an embedded front and back control system based on STM32F107VC is designed to complete the interaction with the equipment.

Keywords:STM32;embedded;background control system

0  引  言

嵌入式软件广泛应用于工业控制、智能家居、医学医疗等各个领域,是现代智能科技发展的重要领域,本研究主要解决低成本,小型嵌入式设备的控制系统设计。研究范围是基于单片机的轻量级嵌入式软件开发,为嵌入式初学者及单片机裸机开发者给出一种可行的设计方法,其中一些想法及思路是在具体开发过程总结的一些开发方法,供读者设计参考使用。

1  研究的背景及意义

本文研究的是一种兼顾成本和开发周期的快速廉价的控制系统,应用于对系统实时性要求不高,但稳定可靠的小型MCU嵌入式设备中,针对裸机软件的设计提供了可行的参考设计方案,保证系统能够稳定运行,从软件的设计上给出了框架。

2  系统中的资源

为了满足设计需求,结合STM32F107的片上资源和外围接口的资源,合理地使用调配资源,一方面满足系统的需求,另一方面,其合理化的设计软件框架显得尤为重要。本节指出了本研究用到的资源以及用途,本文控制的设备属于工业上使用的设备,为了方便理解以及一些其他原因,暂用设备1、设备2等表示。在STM32官方库文件中串口1、串口2、串口3用USARTx表示,而串口4用UARTx表示。

(1)USART1接口。用于程序调试打印的接口。

(2)USART2接口。用于监控设备1的上下行数据。

(3)USART3接口。用于监控设备2的上下行数据。

(4)UART4接口。用于监控设备3的上下行数据。

(5)CAN总线接口。用于监控设备4的上下行数据。

(6)EXTI外部线中断接口(即GPIO配置成此模式)。用于按键控制。

(7)TIM2。用于对屏幕需要更新的参数进行动态刷新和保护OLED屏幕。

(8)TIM3。用于对系统连接的设备进行定时查询。

(9)TIM4。用于对设备上行数据进行定时解析。

(10)NET。網口用于与上位机的交互。

3  中断优先级的考虑

由于是无操作系统的前后嵌入式软件,处理好系统的中断优先级,是保证软件前台数据能够准确接收的重要保证,是软件设计的难点,本文设计的思路是结合实际情况,即系统对数据实时性要求不高的要求,总体思路是采用闭环操作,即同一时间保证只有一个设备在交互,通过快速的轮询,达到提高设备实时性的要求。本文的全局中断分组为Group2,即有两位的抢占优先级和两位的响应优先级,并且可以设置同样的优先级,数字越小代表优先级越高[1]。

TIM2定时器的主要功能是实时更新一些设备的状态参数,并且需要及时响应按键的操控,将优先级设置为最高的主要原因为屏幕的显示是人机交互界面最主要的依托,是用户体验的直接表现,所有的操作都应该为用户的操作让路。其次是四个连接设备可以按照重要性等级的分类,使设备1优先级大于设备2的优先级大于设备3的优先级,但由于采用的闭环设备操作指令,这几个优先级可以适当地放松,因为这四个设备不会同时进行查询,而使得设备的上行数据回复时刻不受控,导致复杂的中断嵌套的问题,严重时还会使某些设备数据丢失。上位机交互的功能依托于本嵌入式软件与底层设备的交互,故优先级不需要太高。解析设备的定时器的优先级同样不需要很高,因为在实际的使用过程中,定时器500 ms轮询一次设备,还是520 ms轮询一次设备对于本系统没有严格的要求。优先级最低的是用于按键的外部线中断,本来用于人机交互必不可少的按键,优先级应该最高,但是由于按键需要消抖,加上人的反应时间,按键的优先级调到最低,在用户的使用上没有明显的差别,同时不影响应用其他任务的进行,故按键中断的优先级设置为最低。

4  信号量的处理

信号量是一些实时操作系统的概念,有时也被称为信号灯,是多线程环境下使用的一种设置,可以用来保证两个或者多个关键代码不被并发调用。本文使用信号量的概念,主要是为了说明代码执行的独立性,因为在前后台系统中存在着多个中断,并且各个中断都在不断地执行着自己的任务,当在实际的用户使用过程中,如此时需要对一个设备进行命令下发,但有各个中断任务进行干扰,从而必须进行代码段的保护,使代码能够独立地执行,并完成其功能[2]。

这里需要重点说明的是,按照中断嵌套的使用原理,中断完毕、恢复现场后会继续执行后台任务,不会干扰后台任务的执行,但是在实际设计中,因为前台的定时轮询任务有可能在某一时刻打断后台的任务,但是这种打断不是一定的,需要看定时器的定时时间与后台下行指令的响应时间相关,也就是说一旦被定时轮询任务打断后,此任务可能轮询的设备正是该下行指令需要设置的设备,这种情况下,很可能导致该下行指令无法响应,并且轮询的时间越短,该指令无法响应的概率就会直线上升,故引入信号量是一种很好的解决方法。

5  系统设计思路及框架

本系统设计的是前后控制系统,可以实现对设备的指令控制、实时监控、状态检测等,设计程序的整体思想是尽量在同一时间做同一件事情,减少中断的嵌套,同时最大限度地满足实时的人机交互功能。

首先从用户的角度看,系统可通过自身的外围设备屏幕和按键进行与设备交互;还可以连接上位机后,通过上位机完成对设备的控制,通过两种方式控制设备的本质上都是前后台系统完成与设备的交互,但从用户的角度来看两种方式是相互独立的,都可以独自完成控制,同时这两种方式又是相互联系的,如,使用上位机打开设备后,可以使用本地的按键屏幕关闭设备;再如,上位机改变设备参数后,本地监控的屏幕对应的参数也会更新。

同时在这里要再次说明,前后台系统的设计,本质上是一个while(1)无限循环和若干个中断组成,前台是由若干个中断组成,及时响应设备的上行信息,或者完成其他任务,后台是由用户主动发起的一些命令响应操作,如设备控制、状态监测、告警查询等等。

其次,从程序设计的角度看,在中断优先级设置合理,并且采用命令闭环的方式下,在信号量的机制下,前后台之间的运行互不干扰,前后台之间的交互也很清晰,为整个程序的设计提供了框架。

最后,前台设计中各个任务与后台任务有交互,同时前台各个任务之间也会有数据的交互,这其中数据传递大多都是由全局消息进行完成的,软件设计首先要保证用户交互可以随时进行,这点由中断优先级保证,其次要保证设备的下行命令能够及时响应,保证用户交互的成功,最后是设备的状态要能够全部监测到,并且设置合理的轮询时间,这就是软件设计的整体思想。在系统整体框图中,较大的虚线框表示前台、后台的操作和任务组成;用户框单独列出;箭头表示信号或者操作的指向;信号量用圆角虚线框表示,其他操作及任务框都是实线框表示,这是因为在系统初始化和一些系统独占的任务中不需要等待信号量,系统可以直接下发命令给设备。系统软件设计的整体框图如图1所示。

6  前后台设计中的优缺点分析

本文设计的是前后台控制系统,適用于众多嵌入式的小型控制系统中,研发成本低,周期短,加上STM32官方库的支持,很方便程序进行开发。但是开发之前必须搞清楚软件的设计需求,明白MCU的系统资源,考虑系统对实时性的要求,这样才能更好地选择合适的、经济的软件方案。

本软件简单,易于上手,但是没有实时系统的加持,一些信号量的机制需要自己完成,前后台的数据需要闭环处理,还需要合理地调整优先级,这都是需要程序员根据实际情况去调整的。

7  结  论

前后台控制系统的设计,能够满足工业上大多数场合的使用,在设备控制,自动化处理过程中有着广泛的应用前景,如果加上无线模块,还可以应用在最近兴起的智能家居上。总之,一个好的软件设计必须满足其应用场合,才能发挥其自身的优势,定位好自身的应用领域就显得尤为重要。

参考文献:

[1] 陈明.基于STM32的嵌入式web服务器的设计 [D].武汉:武汉理工大学,2013.

[2] 任慰.以实时操作系统为中心的嵌入式系统平台化设计研究 [D].武汉:华中科技大学,2013.

作者简介:陈璇(1993-),男,汉族,山西临汾人,助理工程师,本科,研究方向:嵌入式研究;陈晋瑜(1997-),男,汉族,山西临汾人,本科,研究方向:嵌入式理论等。

猜你喜欢

嵌入式
嵌入式LINUX操作系统的研究
嵌入式的特点及发展机遇
嵌入式组件技术的研究及应用
基于嵌入式系统的游戏程序设计
“嵌入式系统概论”课程设计
AItera推出Nios II系列软核处理器