4、轮询有中断 说明:将一些周期性的任务放置在main函数中的主循环中执行,优点:合理的利用资源,将常规任务与紧急任务分开来了。 缺点:程序结构与逻辑比较复杂,在任务分配以及协作之间需要花费很大精力。 伪代码实现: int main(void){ while(1) { if(flag_1) { doSomething_1(); } if(flag_2) { doSomething_2(); } if(flag_3) { doSomething_3(); } /*其他各种任务*/ } return 0;} /*********定时器中断服务函数************/void ISR1_IRQHandler(void){ }5、轮询有中断——虚拟定时器
说明:利用不同的”虚拟定时器“的定时时间来调用不同任务,当定时器的定时时间到时则执行回调函数或者调用任务函数。 这对于一些周期性运行的任务是非常适合的,同时中断可以应对外界的突发事件。这样实时性也可以得到保障,但要注意不要使用等待式延时。一般虚拟定时器的时基为1ms 优点:任务的时间间隔可以相对精确的控制,同时由于中断使用整个系统的实时性也很不错。 缺点:任务的执行时间无法掌控,当定时任务执行时间过长时会影响到虚拟定时器的定时精度。
6、非抢占式实时操作系统
说明:任务之间没有优先级之分,每个任务都是依次执行。但是任务的执行时间是由操作系统严格控制的。即使任务没有执行完,当时间片时间达到时任务便会被挂起。 优点:不用再处心积虑的减少任务中的延时,我们只需要将精力放置在业务逻辑上。 缺点:任务之间是平级的,这就会导致有些任务无法得到紧急处理。 7、抢占式实时操作系统说明:每个任务之间是一个“死循环”同时任务都有一个优先级。高优先级的任务可以打断低优先级的任务,这个就类似于中断一样。所以整个系统的实时性就非常好,同时每个任务都还受时间片的控制也就是说它们的执行时间是可以预测的。它也支持中断可以响应紧急的事件。
优点:实时响应,工程师只需要将精力放置在业务逻辑的实现上 缺点:需要移植且对单片机硬件资源有一定要求。 常用的抢占式实时操作系统:Keil RTX、FreeRTOS、uCosII/III等等。
转载自网络,如有侵权,联系删除。
|