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

本文深入探讨了嵌入式系统中的三种主要调度机制:轮询系统、前后台系统及多任务系统。轮询系统适用于顺序执行的任务,但实时性受限;前后台系统通过中断提高响应速度,确保事件不丢失;多任务系统引入任务优先级,进一步提升实时性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tyustli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值