前言
以前写的一些乱七八糟的东西,都比较乱,本着完美主义(吃饱撑的)都是写一点过两天不满意又删掉,现在用到uC/OS-II来做开发,觉得还是有必要写些东西。虽然很憧憬一些高质量的博文,但是毕竟接触这一行时间不久(三个月左右),所以只能一点点探索着来写。这个系列的博文大部分也是参照了网上流传的一些教程来写的,也并非全部原创,只是作为学习笔记,把看到的学到的东西做自己的理解并写下来。
1 前后台系统
前后台系统(Foreground/Background System),也被称作是超循环(Super-Loops)。应用程序本身是一个死循环,并有一些中断函数来处理相关的操作,这个大概就可以理解为前后台系统了。个人觉得,其实在以前的裸机开发的过程中,很多都是用到了前后台系统,只是当时对这种概念并不了解。例如之前做的光立方,在死循环中跑对应的流水灯,并用外部中断监听按键来进行不同动画的切换。例如毕设做的自平衡小车,在死循环中跑显示屏内容的刷新,并利用外部中断来监听加速度陀螺仪的中断输出,进而进行姿态数据的计算处理给电机驱动相应的输出来控制电机保持平衡。这些(应该)都可以称得上前后台系统。
那么,所谓的前后台,后台即那个在主程序跑的死循环,前台即中断所处理的内容。当需要时间相关性很强的关键操作,一般都是由中断完成的,恰如上述例子中光立方的按键监听和自平衡小车的姿态感应控制。
这种系统好处和坏处是什么呢。个人觉得好处就是足够简单,基本上就是单片机裸机开发了,很多产品也是基于前后台系统的,微波炉,电话,和一些玩具,平常在死循环中处于待机状态,而其他一系列操作都是通过中断实现。坏处呢,就是时间没办法掌控,像是做个小设计当然基本不用考虑时间的问题,但是比较大点的项目,一个死循环时间可能会很长,中断给出的数据可能要很久才到处理它的地方,也就是响应慢。同时,一旦处理的东西多了,在一整个死循环里就会显得非常混乱,后续开发会非常困难。
那么以我个人之见,在开发一些大型的项目时,单纯的前后台系统肯定是一种愚蠢的方法。我们需要一些别的方法,不仅能使开发更方便结构更清晰,同时也要满足所