SIEMENS河北省沧州市 西门子代理商——西门子华北一级总代理
11裸机编程与RTOS 的区别
1.1 裸机程序基本框架
/*中断服务函数*/IRQ_Handler(){ set_flag();//简短的标记操作}
单片机裸机编程的思路比较简单,就是一个死循环,程序依次执行while(1)中的各条语句,循环往复即可,需要处理某些紧急事件时,通过中断服务函数来打断while(1)的执行。
裸机编程虽然简单,但只能在一个循环中执行各种裸机,第一项功能执行完后才能执行第二项功能,就好比有多个人在轮流干活,CPU的利用率不高,不能处理并行逻辑。
1.2 RTOS程序基本框架/*子任务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就可以停止此任务,然后切换到其它任务执行,这样看起来就是多个人在同时干活了。
展开全文
相关产品