⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c.svn-base

📁 ucos2.52在msp149上移植范例
💻 SVN-BASE
字号:

#include "includes.h"
#include "HAL.h"

#define  TASK_STK_SIZE                  48       /* 定义任务堆栈大小,单位为字/16*/

OS_STK   TaskStartStkA[TASK_STK_SIZE];
OS_STK   TaskStartStkB[TASK_STK_SIZE];
OS_STK   TaskStartStkC[TASK_STK_SIZE];

OS_FLAG_GRP *TaskStatus;

static void StartCreateTasks(void);

void TaskStartA(void *data);                    /* 前导声明任务(函数) */
void TaskStartB(void *data);                    /* 前导声明任务(函数) */
void TaskStartC(void *data);                    /* 前导声明任务(函数) */


INT8U err;

void main (void)
{
  StateInit( );
  OSInit();                                  /* 初始化uCOS-II */
  
  TaskStatus = OSFlagCreate(0x00, &err);
  StartCreateTasks( );  
  
  OSStart();                                  /* 开始任务调度  */
}

static void StartCreateTasks(void)
{
  
  OSTaskCreateExt(
                  TaskStartA,
                  (void *)0, 
                  &TaskStartStkA[TASK_STK_SIZE - 1], 
                  0,
                  0,
                  &TaskStartStkA[0],
                  TASK_STK_SIZE,
                  (void *)0,  
                  OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR
                  );
  
  OSTaskCreateExt(
                  TaskStartB, 
                  (void *)0, 
                  &TaskStartStkB[TASK_STK_SIZE - 1], 
                  1,
                  1,
                  &TaskStartStkB[0],
                  TASK_STK_SIZE,
                  (void *)0,  
                  OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR
                  );  
  
  OSTaskCreateExt(
                  TaskStartC, 
                  (void *)0, 
                  &TaskStartStkC[TASK_STK_SIZE - 1], 
                  2,
                  2,
                  &TaskStartStkC[0],
                  TASK_STK_SIZE,
                  (void *)0,  
                  OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR
                  );
  
}

void TaskStartA (void *pdata)
{
  OS_STK_DATA data;                    
  INT8U       i;  
  pdata = pdata;
  
  HalTimerInit( );
  OSFlagPost(TaskStatus,0x01,OS_FLAG_SET, &err);
  
  while (1)
  {
    for (i = 0; i < 3; i++) 
    {
      err  = OSTaskStkChk(i, &data);
      if (err == OS_NO_ERR) 
      {
        Uart0SendData((INT8U *)&data.OSFree, sizeof(INT32U));
        Uart0SendData((INT8U *)&data.OSUsed, sizeof(INT32U));   
      }
    }
    OSTimeDlyHMSM(0, 0, 0, 100);  
  }
}


void TaskStartB (void *pdata)
{      
  while (1)
  {     
    OSFlagPend(TaskStatus,
               0x01,
               OS_FLAG_WAIT_SET_ALL + OS_FLAG_CONSUME,
               0,
               &err);   
    if(err==OS_NO_ERR)
    {
      HalOpenLed(1);
      OSTimeDlyHMSM(0,0,1,0);
      OSFlagPost(TaskStatus,0x02, OS_FLAG_SET, &err);
      HalCloseLed(1);
    } 
  } 
}


void TaskStartC(void *pdata)
{   
  while (1) 
  {   
    OSFlagPend(TaskStatus,
               0x02,
               OS_FLAG_WAIT_SET_ALL + OS_FLAG_CONSUME,
               0,
               &err);   
    if(err==OS_NO_ERR)
    {     
      HalOpenLed(2);
      OSTimeDlyHMSM(0,0,1,0);
      OSFlagPost(TaskStatus,0x01, OS_FLAG_SET, &err);
      HalCloseLed(2);
    }  
  }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -