广东湘恒智能科技有限公司
主营产品: 西门子PLC代理商,plc变频器,伺服电机,人机界面,触摸屏,线缆,DP接头
SIEMENS河北省沧州市 西门子代理商——西门子华北一级总代理

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就可以停止此任务,然后切换到其它任务执行,这样看起来就是多个人在同时干活了


展开全文
相关产品
拨打电话 微信咨询 发送询价