本书讲述了如何利用FreeRTOS多任务处理内核让ARM Cortex微控制器进行多任务处理。本书还详细讲解了多任务处理操作系统的各项特性,例如:调度、优先级、邮箱、事件标志和信号量等。本书的重要特色之一是使用非常流行的Clicker 2 for STM32开发板(你可以很轻松地换用其他型号的开发板)和FreeRTOS进行实时项目实战。这些项目包括:LED以不同频率闪烁、7段数码管的刷新显示、用不同任务控制各种传感器的移动机器人、独立控制的多个伺服电机、多任务处理的物联网项目、具有独立键盘输入的温度控制器、具有三项任务(激活、发生器和显示)的随机数发生器、家用报警系统以及泊车管理系统等等。
微控制器是一种单芯片微处理器系统,它包含数据和程序内存、串行和并行输入/输出端口、定时器、外部和内部中断,所有这些都被集成到一块大约2美元就能买到的芯片之中。大约40%的微控制器被应用于办公自动化领域,例如,个人计算机、激光打印机、传真机以及智能电话等。大约三分之一的微控制器都能在消费电子产品中找到,诸如CD和DVD播放器、高保真音响设备、视频游戏机、洗碗机、电子灶具等产品都属于消费电子产品。通信市场、汽车市场以及军事用途则分享微控制器应用领域的剩余份额。
传统上,我们使用针对特定处理器的汇编语言为微控制器编写程序。尽管汇编程序运行很快,但缺点是难以用它开发和维护大型项目。此外,不同厂家生产的微控制器具有不同的汇编语言指令集,这会导致每当程序员使用不同的微控制器时,都要花费大量时间学习新的汇编语言。为一种型号微控制器编写的汇编代码无法移植到另一种型号的微控制器上。当今则使用像C、C 、Pascal或者Basic之类的高级语言为微控制器编写程序。使用高级语言的最大优势是编写的代码可以移植到各种不同型号的微控制器上。此外,使用高级编程语言开发的程序也更加易于维护。
由众多厂家生产的微控制器多种多样,大多数厂家都会提供相应的开发套件(或者开发板),本书使用的是Clicker 2 for STM32开发板。该开发板基于STM32F407型号的ARM Cortex-M4处理器,工作频率最高可达168MHz,而针对软件开发使用的是非常流行的mikroC Pro for ARM编译器和集成开发环境(IDE)。
本书的主题是FreeRTOS内核以及多任务处理。多任务处理已经成为基于微控制器的系统(即自动化应用)中的重要话题之一。随着项目复杂度的增加,人们对项目也提出越来越多的功能需求,为了完成必需的操作,此类项目必须能够让若干相互关联的任务运行在同一处理器上,并且能让它们共享CPU。由此带来的结果就是,在过去几年中,基于微控制器的应用中多任务处理的重要性持续增强,并且当今众多复杂的自动化项目都用到了某种多任务处理内核,在本书涉及的项目中使用的是FreeRTOS多任务处理内核。FreeRTOS是占据市场主导地位的多任务处理内核,在各个领域中的部署已经数不胜数。FreeRTOS是完全免费的,并且文档和技术支持也都非常完备。它能够运行在众多硬件和软件平台之上,包括ARM处理器以及mikroC Pro for ARM编译器和集成开发环境。FreeRTOS在2018年的流行程度达到其官网www.freertos.org上每隔175s就被下载一次,并且自2011年以来,在电子工程杂志EETimes所做的嵌入式市场调查中每次都名列榜首。
本书基于项目编写,主要目的是讲授FreeRTOS内核的基本特性和API函数。书中提供了大量经过全面测试的项目,这些项目都属于使用FreeRTOS创建的多任务处理应用。本书对每个项目都进行了详细的介绍,并给出了完整的程序清单。读者可以原封不动地使用这些项目,或者针对自己的需求对项目进行修改。每个项目大致按照如下所示的几个部分进行介绍:描述
目标
背景(如果可能的话)
框图
电路图
程序清单