多任务执行,主函数的写法,以及多任务的启动。
#include "app.h"
#include "ucos_ii.h"
#include "app_cfg.h"
#define TASK_STK_SIZE 512
#define TaskStart_Prio 1
OS_STK TaskStk[5][TASK_STK_SIZE]; //UCOSII将用户任务堆栈的定义交给了程序员自己实现。不一定需要使用二维数组
void task1(void *p)
{
while(1)
{
LED1_ON;
delay();
LED1_OFF;
delay();
OSTaskResume(2);
OSTaskSuspend(1);
}
}
void task2(void*p)
{
while(1)
{
LED2_ON;
delay();
LED2_OFF;
delay();
OSTaskSuspend(2);
}
}
void task3(void*p)
{
while(1)
{
LED3_ON;
delay();
LED3_OFF;
delay();
OSTaskResume(1);
}
}
int main(void)
{
LED_GPIO_Config();
OSInit();
OSTaskCreate(task1,0,&TaskStk[1][TASK_STK_SIZE-1],1);
OSTaskCreate(task2,0 ,&TaskStk[2][TASK_STK_SIZE-1],2);
OSTaskCreate(task3,0 ,&TaskStk[3][TASK_STK_SIZE-1],3);
OSStart();
return 0;
}
然后编译运行。下载到板子上,我的是完全可以运行。 |