UCOSIII--嵌入式系统、轮询系统和前后台系统

1、裸机系统

裸机系统通常分为轮询系统和前后台系统,

1.1、轮询系统

轮询系统伪代码

int main(void)

{

    //硬件相关初始化

    HardWareInit();

   //无限循环

    for( ; ;)

 {

    //处理事情1

    DoSomething1();

    //处理事情2

    DoSomething2()

  }

}

轮询系统只适合顺序执行的功能代码,当有外部驱动时,实时性就会降低。

1.2、前后台系统

相比轮询系统,前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里我们称之为前台,main函数里面的无限循环我们称之为后台。

前后台系统伪代码

int flag1 = 0;

int flag2 = 0;

int flag3 = 0;

int main(void)

{

     //硬件相关初始化

    HardWareInit();

    //无限循环

    if(flag1)

    {

        //处理事情1

       DoSomething1();

    }

if(flag2)

{

    //处理事情2

    DoSomething2();

}

if(flag3)

{

    //处理事情3

DoSomething3();

}

}

void ISR1(void)

{

flag1=1;

//如果时间处理时间很短,则在中断里面处理

//如果时间处理时间很长,再回到后台处理

DoSomething1();

}

void ISR2(void)

{

flag1=2;

//如果时间处理时间很短,则在中断里面处理

//如果时间处理时间很长,再回到后台处理

DoSomething2();

}

void ISR3(void)

{

flag3=1;

//如果时间处理时间很短,则在中断里面处理

//如果时间处理时间很长,再回到后台处理

DoSomething3();

}

前后台系统确保了事件不会丢失,再加上中断的嵌套功能,这可以大大提高程序的实时响应能力

2、多任务系统

相比前后台系统,多任务系统的时间响应也是在中断中完成的,但是事件的处理是在任务中完成的。在多任务系统中,任务跟中断一样,也具有优先级,优先级高的任务会优先执行。当一个紧急的事件在中断被标记之后,如果时间对应的任务的优先级足够高,就会立马得到响应。相比前后台系统,多任务系统的实时性又提高了

多任务系统伪代码:

int flag1 = 0 ;

int flag2 = 0;

int flag3 = 0;

int main(void)

{

    //硬件相关初始化

    HardWareInit();

    //OS初始化

    RTOSInit();

    //OS启动,开启多任务调度,不再返回

    RTOSStart();

}

void ISR1(void)

{

    flag1=1;//置标志位

}

void ISR2(void)

{

    flag2=1;//置标志位

}

void ISR3(void)

{

    flag1=3;//置标志位

}

void DoSomething1(void)

{

//无限循环,不能返回

    for(; ;)

    {

        if(flag1)   {}

    }

}

void DoSomething2(void)

{

//无限循环,不能返回

    for(; ;)

    {

        if(flag2)  {}

    }

}

void DoSomething3(void)

{

//无限循环,不能返回

    for(; ;)

    {

        if(flag3)  {}

    }

}

 

 

        参考资料:野火UCOSIII手册

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值