加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15915421161

SIEMENS河北省沧州市 西门子代理商——西门子华北一级总代理

更新时间
2024-11-16 07:00:00
价格
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
联系手机
15915421161
联系人
张经理
立即询价

详细介绍
11裸机编程与RTOS 的区别

1.1 裸机程序基本框架


















  • /*主函数*/int main(){    init();//一些初始化    /*死循环*/    while(1)    {        do_something_1();//执行一些逻辑        do_something_2();    }//循环执行}
    /*中断服务函数*/IRQ_Handler(){    set_flag();//简短的标记操作}

    单片机裸机编程的思路比较简单,就是一个死循环,程序依次执行while(1)中的各条语句,循环往复即可,需要处理某些紧急事件时,通过中断服务函数来打断while(1)的执行。

    裸机编程虽然简单,但只能在一个循环中执行各种裸机,第一项功能执行完后才能执行第二项功能,就好比有多个人在轮流干活,CPU的利用率不高,不能处理并行逻辑。

    1.2 RTOS程序基本框架


































  • /*主函数*/int main(){    init();//一些初始化    xTaskCreate();    vTaskStartScheduler(); //启动调度器}
    /*子任务1(死循环)*/void task1(){    while(1)    {        do_something_1();//执行一些逻辑(如采集传感器信息)        vTaskDelay();    }}
    /*子任务2(死循环)*/void task2(){    while(1)    {        do_something_2();//执行一些逻辑(如执行电机运动)        vTaskDelay();    }}
    /*中断服务函数*/IRQ_Handler(){    set_event();//触发事件、信号量等}

    单片机引入RTOS,可以将各个功能模块分别设计为单独的任务,每个任务都是一个死循环,就好比有多个人在同时干活,这样CPU的利用率就提高了,并且可以处理一些并行逻辑。

    单片机只有一个CPU(核),那怎么让多个人同时干活呢?其实每个子任务虽然都是死循环,但并不是每个子任务一直都在执行,每个子任务在执行期间,可能需要延时,也可能需要等另一个任务的数据到来,所有,在某个任务在等待的时候,CPU就可以停止此任务,然后切换到其它任务执行,这样看起来就是多个人在同时干活了


    相关产品

    联系方式

    • 电  话:15903418770
    • 联系人:张经理
    • 手  机:15915421161
    • 微  信:15915421161