STM32在什么情况下有必要用系统?一般应用感觉裸奔够用

2019-08-14 04:18发布

本帖最后由 newbuff 于 2017-8-26 11:55 编辑

知道如何在STM32 中使用比如RT Thread的系统,最近做个东西,用到3个串口,独立接收不同设备的数据。想着高大上一回,直接用了系统,建了3个任务处理三个串口接收的数据,当然数据是中断里接收的。运行着也没啥问题,但是突然又一想,完全裸奔都可以啊,如下
void main
{
     while(1)
     if(uart1_ok)
     {
         //do work1
     }
     if(uart2_ok)
     {
         //do work2
     }

     if(uart3_ok)
     {
         //do work3
     }

}
可能仅仅是无法区分优先级的劣势了。

到底根据什么需求,选择系统才有优势啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
肩山巨鬼
1楼-- · 2019-08-16 22:13
 精彩回答 2  元偷偷看……
ekiller
2楼-- · 2019-08-16 22:26
就算是裸奔,其实也是要做一些相应的工作的,比如:存储管理分配、功能(任务)的划分和管理、中断管理等。
操作系统集中把这些管理都给你做了,使你在实现功能的时候,每个功能资源分配后基本隔离,需要共享或者互斥的时候,也可以通过信号量等来保证。
使用操作系统,有以下几个好处:
1.代码可移植行强。移植代码的时候,如果是相同的操作系统,修改很少。
2.并发性好。操作系统可以很高效调度各个任务,我们设置任务优先级后,任务的调度工作就几乎不用考虑,感觉有多个任务并行运行。
3.实时性好。对于抢占式实时操作系统,任务调度会及时把CPU时间分配给最需要的任务。
4.稳定。操作系统把各个任务隔离起来,某个任务有bug,一般不影响其他的任务。操作系统经过了无数应用的检验,一般流行的嵌入操作系统bug很少,比你自己裸跑可能还要稳定。

操作系统大概这些优点吧,我自己拍脑袋写的,不会很全
宿醉
3楼-- · 2019-08-17 04:01
while(1)
{
    if(任务1)
   {
        //delay了N久
   }
    else if(任务2)
    {
        //delay了N久
    }
else if(任务3)
    {
        //delay了N久
    }
}
这样子执行某一个任务的时候就会一直等待,......所以用实时系统就可以解决这个问题

一周热门 更多>