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

📄 main.c

📁 基于430 UC_OS-II 的消息邮箱测试程序
💻 C
字号:
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                              (c) Copyright 2002, Micrium, Inc., Weston, FL
*                                           All Rights Reserved
*
*                                                TI MSP430
*********************************************************************************************************
*/

#include "includes.h"
#include <SELCD.h>
#include <CLK.h>
#include <delay.h>
#include <key.h>


/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/

#define  TASK_STK_SIZE                  64       /* Size of each task's stacks (# of OS_STK entries)   */

/*
*********************************************************************************************************
*                                               VARIABLES
*********************************************************************************************************
*/
//unsigned char 
//INT8U key;
INT8U pose;
INT8U err;
INT16U times;
INT8U mbox_post;
INT8U mbox_pend;
//EVENT
OS_EVENT *Str_Box;


//OS_STK
static OS_STK   TaskStartStk[TASK_STK_SIZE];
static OS_STK   FirstTaskStk[TASK_STK_SIZE];
static OS_STK   SecondTaskStk[TASK_STK_SIZE];
/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*********************************************************************************************************
*/



static void   TaskStart(void *data);                    /* Function prototypes of Startup task                */
static void   FirstTask(void *data);      
static void   SecondTask(void *data);   

/*$PAGE*/
/*
*********************************************************************************************************
*                                                MAIN
*********************************************************************************************************
*/


void  main (void)
{  
    WDTCTL = WDTPW + WDTHOLD;
    XT2_ON(0,0,0);
    OSInit();                                              /* Initialize uC/OS-II                      */
    Str_Box = OSMboxCreate((void *)0);
    OSTaskCreate(TaskStart,        (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 5);
    OSStart();                                             /* Start multitasking                      */
}

/*
*********************************************************************************************************
*                                            STARTUP TASK
*********************************************************************************************************
*/

void  TaskStart (void *pdata) 
{ 
  #if OS_CRITICAL_METHOD == 3
       OS_CPU_SR cpu_sr;
  #endif
    pdata  = pdata;                                        /* Prevent compiler warning                 */
    OS_ENTER_CRITICAL();
    WDTCTL = WDT_MDLY_32;                                  /* Set time tick 32 mS                      */
    IE1   |= 0x01;                                         /* Enable Watchdog timer interrupts         */  
   // _BIS_SR(GIE);                                          /* Application specific initialization      */
    LCD_Init();
    Display_Int(*(&times),0x80);
    OS_EXIT_CRITICAL();
    OSTaskCreate(FirstTask,        (void *)0, &FirstTaskStk[TASK_STK_SIZE - 1], 6);
    OSTaskCreate(SecondTask,        (void *)0, &SecondTaskStk[TASK_STK_SIZE - 1], 7);
    OSTaskSuspend(OS_PRIO_SELF);
   while(1)
     ;
}



void FirstTask (void *pdata)
{  
   pdata  = pdata; 
    while(1)
    {
      times++;
      mbox_post= times;
      OSMboxPost(Str_Box,&mbox_post);
      OSTimeDlyHMSM(0,0,1,0); 
    }
}


void SecondTask(void *pdata)
{ 
  pdata  = pdata; 
  while(1)
  {
      mbox_pend = *(INT8U*)OSMboxPend(Str_Box,10,&err); 
      Display_Int(mbox_pend,0x80+pose);
      pose++;
      OSTimeDlyHMSM(0,0,1,0);
  }   
}

⌨️ 快捷键说明

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