如何集成调度 对于某些不使用RTOS的应用而言,可以使用如下的框架进行: void main(void)
{
/*各模块初始化*/
init_module_1();
init_module_2();
....
while(1)
{
/*实现一个定时调度策略*/
if(timer50ms)
{
timer50ms = 0;
app_module_1();
}
if(timer100ms)
{
timer100ms = 0;
app_module_2();
}
/*异步请求处理,如中断后台处理*/
if(flag1)
{
communication_handler();
}
.....
}
}
对于基于RTOS的集成实现举例: void task1(void)
{
/*处理子系统相关的初始化*/
init_task1();
while(1)
{
/*应用相关调用*/
task1_mainbody();
....
}
}
....
void taskn(void)
{
/*处理子系统相关的初始化*/
init_taskn();
while(1)
{
/*应用相关调用*/
taskn_mainbody();
....
}
}
void main(void)
{
/*一些基本硬件相关初始化,比如IO,时钟,OS tick定时器等*/
init_hal();
......
/*一些基本RTOS初始化*/
init_os();
/*任务创建*/
os_creat("task1",task1,栈设置,优先级,...);
......
os_creat("taskn",taskn,栈设置,优先级,...);
/*启动OS调度器,交由OS调度管理应用任务*/
os_start();
}
具体不同的RTOS,其函数名各有不同,但大致思路一般都差不多。
|