单片机多任务处理方案

电子说

1.3w人已加入

描述

  单片机只有一个CPU,一次只能执行一条指令,要处理多任务,相当于多个任务同时执行,只有靠分时。

  如果没有实时操作系统,自己做多任务处理很难的。

  如果是采集通信数据处理输入输出这样的常规任务,可以采用中断方式,中断服务程序处理实时任务,分析计算等任务放入主程序中。

  多任务协调,可用状态自动机模型处理。

  普通单片机内部只有一个核,只能顺序执行指令,同一时刻不能并行执行多条指令。

  所谓的多任务,也是分时执行实现的。只是任务切换的非常快,人感觉不满任务的切换,像同时执行一样。

  单片机要执行多任务,可以使用中断的方式,也可以使用操作系统,目前有一些适用于单片机的小型操作系统。

  单个核心不可能真正同时处理两个任务。一般来说,单片机主要是处理外设中断,产生中断的时候,主循环是停止执行的,实际上是分时处理。如果要处理多个任务,最简单的是用实时系统RTOS,创建多个任务即可,还可以定义优先级。如果要做到真正意义上的同时处理,就要用多核芯片。裸机系统可用片内定时器产生中断来切换任务。

  首先、单片机多任务处理方案有哪些?

  1、采用实时操作系统rtos

  也是我们所说的实时操作系统,rtos本身已经实现了多任务调度算法,我们不在关心如何调度的问题,我们只需要根据rtos的api来创建多任务即可。常见的rtos有freertos,uc/OS,华为liteOS,t-thread等等。

  2、采用有限状态机(State Machine)

  也可通过一幅简单的示意图(也叫「状态转移图」)表示出来:

  在单片机程序设计中,如果一个系统需要处理一系列连续发生的任务,或在不同的模式下对输入进行不同的处理,常常使用有限状态机实现。例如测量、监测、控制等控制逻辑型应用。

  其次、如何选择单片机多任务调度方案

  和rtos相比,状态机占用的系统资源少,省去了系统调度定时器,没有rtos占用的内存也少了,但是需要程序人员来完成多任务调度。

  从上面可以看出,如果单片机资源很有限,多任务逻辑又比较简单,建议选择状态机方法。如果多任务很复杂,功能比较多,单片机功能比较强,rtos占用的资源可以忽略不计,那就可以考虑采用rtos来完成。采用rtos可以比较容易的实现模块化设计。但是rtos需要注意的是多任务间的优先级和多任务间的通信问题。

  最后、单片机多任务如何选择?

  对于大部分编程来说其实一般的状态机就够了,小编也曾经十分推崇rtos,但是到后来发现,其实越是逻辑简单,程序越是容易编写,出错的概率越小。大道至简,小编现在大部分程序都是裸奔了,当然小编自创的异步编程也是相当的便利。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分