本帖最后由 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
}
}
可能仅仅是无法区分优先级的劣势了。
到底根据什么需求,选择系统才有优势啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
操作系统集中把这些管理都给你做了,使你在实现功能的时候,每个功能资源分配后基本隔离,需要共享或者互斥的时候,也可以通过信号量等来保证。
使用操作系统,有以下几个好处:
1.代码可移植行强。移植代码的时候,如果是相同的操作系统,修改很少。
2.并发性好。操作系统可以很高效调度各个任务,我们设置任务优先级后,任务的调度工作就几乎不用考虑,感觉有多个任务并行运行。
3.实时性好。对于抢占式实时操作系统,任务调度会及时把CPU时间分配给最需要的任务。
4.稳定。操作系统把各个任务隔离起来,某个任务有bug,一般不影响其他的任务。操作系统经过了无数应用的检验,一般流行的嵌入操作系统bug很少,比你自己裸跑可能还要稳定。
操作系统大概这些优点吧,我自己拍脑袋写的,不会很全
{
if(任务1)
{
//delay了N久
}
else if(任务2)
{
//delay了N久
}
else if(任务3)
{
//delay了N久
}
}
这样子执行某一个任务的时候就会一直等待,......所以用实时系统就可以解决这个问题
一周热门 更多>