简单的前后台顺序执行程序
这是初学者们常用的程序框架设计方案,不用考虑太多东西,代码简单,或者对系统的整体实时性和并发性要求不高;初始化后通过while(1){}或for(;;){}循环不断调用自己编写完成的函数,也基本不考虑每个函数执行所需要的时间,大部分情况下函数中或多或少都存在毫秒级别的延时等待。
优点:逻辑简单明了,适用于逻辑简单,复杂度比较低的软件开发。
缺点:实时性低,由于每个函数或多或少存在毫秒级别的延时,即使是1ms,也会造成其他函数间隔执行时间的不同,虽然可通过定时器中断的方式,但是前提是中断执行函数花的时间必须短。当程序逻辑复杂度提升时,会导致后来维护人员的大脑混乱,很难理清楚该程序的运行状态。
时间片轮询法
在嵌入式软件的开发中,若遇到以下几点,那么该设计方案可以是最优选择:
- 目前的需求设计完全没必要上操作系统;
- 任务函数无需时刻执行,存在时间间隔;
- 实时性有一定要求。
操作系统
嵌入式操作系统EOS(Embedded OperatingSystem)是一种用途广泛的系统软件,过去它主要用于工控和国防系统,对于单片机来说,比较常用的有UCOS、FreeRTOS、RT-Thread Nano和RTX等多种抢占式操作系统(其他如Linux等操作系统不适用于单片机)。
操作系统和“时间片轮询法”在任务执行方面来说,操作系统对每个任务的耗时没有过多的要求,需要通过设置每个任务的优先级,在高优先级的任务就绪时,会抢占低优先级的任务;操作系统相对复杂。