uc/OS II——多任务设计

来源:互联网 发布:mac显示终端什么意思 编辑:程序博客网 时间:2024/04/27 16:53

uc/OS II——多任务设计

(1)设计 开始任务

1】/声明 开始任务 任务块

static  OS_STK App_TaskStartStk[APP_TASK_START_STK_SIZE];

【2】在app_cfg.h中

//设置任务的优先级#define  APP_TASK_START_PRIO 2//开始任务为优先级2//设置任务块大小#define  APP_TASK_START_STK_SIZE 128

【3】编写 任务函数

//开始任务函数static  void App_TaskStart(void* p_arg){   (void) p_arg;//防止编译警告   //初始化ucos时钟节拍   OS_CPU_SysTickInit();//自己编写的函数//使能ucos 的统计任务#if (OS_TASK_STAT_EN > 0)   //----统计任务初始化函数     OSStatInit();            #endif   //建立其他的任务/*创建其他任务*/   while (1)   {      //1秒一次循环  OSTimeDlyHMSM(0, 0,1, 0);   }}【4】在main函数中创建开始任务OSTaskCreate(App_TaskStart, (void *)0, &App_TaskStartStk[APP_TASK_START_STK_SIZE - 1], APP_TASK_START_PRIO); 

(2)其他任务函数编写

1】设置优先级和任务块大小

//设置任务的优先级#define  APP_TASK_LED1_PRIO 8//开始任务为优先级2//设置任务块大小#define  APP_TASK_LED1_STK_SIZE 128

【2】编写任务函数

void Task_Led1(void* p_arg){  (void) p_arg;       while (1)  {    Led_On(LED1);    OSTimeDlyHMSM(0, 0, 0, 500);    Led_Off(LED1);    OSTimeDlyHMSM(0, 0, 0, 500);  }}

【3】在开始任务中 创建

OSTaskCreateExt(Task_Led1,//指向任务代码的指针(void *)0,//任务开始执行时,传递给任务的参数的指针(OS_STK *)&Task_Led1Stk[APP_TASK_LED1_STK_SIZE-1],//分配给任务的堆栈的栈顶指针 从顶向下递减APP_TASK_LED1_PRIO,//分配给任务的优先级APP_TASK_LED1_PRIO,//预备给以后版本的特殊标识符,在现行版本同任务优先级(OS_STK *)&Task_Led1Stk[0],//指向任务堆栈栈底的指针,用于堆栈的检验APP_TASK_LED1_STK_SIZE,//指定堆栈的容量,用于堆栈的检验(void *)0,//指向用户附加的数据域的指针,用来扩展任务的任务控制块OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);//选项,指定是否允许堆栈检验,是否将堆栈清0,任务是否要进行浮点运算等等。


原创粉丝点击