uc/OS II——多任务设计

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,任务是否要进行浮点运算等等。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值