执行时间,在编写任务时,尽量让任务尽快执行完成。。。。。。。。。
3.操作系统
操作系统的本身是一个比较复杂的东西,任务的管理,执行本事并不需要我们去了解。但是光是移植都是一件非常困难的是,虽然有人说过“你如果使用过系统,将不会在去使用前后台程序”。但是真正能使用操作系统的人并不多,不仅是因为系统的使用本身很复杂,而且还需要购买许可证(ucos也不例外,如果商用的话)。
这里本人并不想过多的介绍操作系统本身,因为不是一两句话能过说明白的,下面列出UCOS下编写应该程序的模型。大家可以对比一下,这三种方式下的各自的优缺点。
复制内容到剪贴板
代码:
int main(void)
{
OSInit(); // 初始化uCOS-II
OSTaskCreate((void (*) (void *)) TaskStart, // 任务指针
(void *) 0, // 参数
(OS_STK *) &TaskStartStk[TASK_START_STK_SIZE - 1], // 堆栈指针
(INT8U ) TASK_START_PRIO); // 任务优先级
OSStart(); // 启动多任务环境
return (0);
}
复制内容到剪贴板
代码:
void TaskStart(void* p_arg)
{
OS_CPU_SysTickInit(); // Initialize the SysTick.
#if (OS_TASK_STAT_EN > 0)
OSStatInit(); // 这东西可以测量CPU使用量
#endif
OSTaskCreate((void (*) (void *)) TaskLed,// 任务1
(void *) 0, // 不带参数
(OS_STK *) &TaskLedStk[TASK_LED_STK_SIZE - 1], // 堆栈指针
(INT8U ) TASK_LED_PRIO); // 优先级
// Here the task of creating your
while (1)
{
OSTimeDlyHMSM(0, 0, 0, 100);
}
}
不难看出,时间片轮询法优势还是比较大的,即由顺序执行法的优点,也有操作系统的优点。结构清晰,简单,非常容易理解。。。。。。。。。