当移植好OS后,后面的事情就是编写任务和底层的驱动代码了。为了能更好的编写应用代码,推荐阅读《基于嵌入式实时操作系统的程序设计技术》一书,此书讲解了在uCOS-II下代码的编写。下面就谈谈应用代码编写下应该注意的东西。
编写用户代码的步骤如下:
①.定义任务堆栈的长度。
#define Task0StkLengh 64
②.定义任务的堆栈。
OS_STK Task0Stk[Task0StkLengh];
③.声明任务函数。
void Task0(void *pdata);
④.在适当的地方创建任务。
OSTaskCreate(Task0, (void *)0, &Task0Stk[Task0StkLengh-1], 2);
⑤.编写任务代码。
void Task0(void *pdata)
{
While (1)
{
……
}
}
任务建立
OSTaskCreate (void(*task)(void *pd), // 指向任务的指针
void *pdata, // 任务开始执行时,传递给任务的参数的指针
OS_STK *ptos, // 分配给任务的堆栈的栈顶指针
INT8U prio // 分配给任务的优先级
);
任务格式,必须是下面两种中的一种:
① void YourTask (void *pdata)
{
for (;;) {
/* 用户代码 */
调用μC/OS-Ⅱ的服务例程之一:
OSMboxPend();
OSQPend();
OSSemPend();
OSTaskDel(OS_PRIO_SELF);
OSTaskSuspend(OS_PRIO_SELF);
OSTimeDly();
OSTimeDlyHMSM();OSTaskDel(OS_PRIO_SELF);
/* 用户代码 */
}
}② void YourTask (void *pdata)
{/* 用户代码 */
OSTaskDel(OS_PRIO_SELF);}