单片机多任务的实现方法

(注:本文主要向初学者介绍个人对单片机多任务的理解,具体了解RTOS实现原理的用户不必看)

单片机不能同时处理多个任务,而RTOS和一些多线程功能可以实现多任务,以下是本人对多任务实现方法的一些理解。

1.任务添加

多个周期为一个最短周期(可以是其中周期最短的任务的周期,也可以更短)的倍数并且内部无延时的任务添加较为简便,在每次循环时增加变量的值并在总时间达到任务周期时执行任务并把变量清零即可。内部有延时并且延时大于延时更短的任务周期的任务比较难添加,需要把延时更短的任务穿插到任务内部,这种情况使用RTOS或多线程功能可能更简便。

2.任务开关

可以给每个任务增加一个变量,在变量处于特定值时才执行任务,在对任务进行开关的模块上改变变量的值即可。

3.任务抢占

可以结合决定各个任务开关的变量进行判断,在多个任务均开启并且到达执行任务的周期时执行优先级高的任务,跳过优先级低的任务。

总结:

上述方法能实现RTOS的功能,但在任务较多时实现较为麻烦,根据上述方法编写RTOS也需要很长时间。因此在需要时还是建议大家直接使用现有的RTOS。

你可能感兴趣的:(单片机,嵌入式硬件)