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

📄 app.c

📁 msp430的uc/os移植
💻 C
字号:
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                              (c) Copyright 2002, Micrium, Inc., Weston, FL
*                                           All Rights Reserved
*
*                                                TI MSP430
*********************************************************************************************************
*/

#include "includes.h"

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

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

/*
*********************************************************************************************************
*                                               VARIABLES
*********************************************************************************************************
*/

//OS_STK   TaskStartStk[TASK_STK_SIZE];
OS_STK   Task1Stk[TASK_STK_SIZE];
OS_STK   Task2Stk[TASK_STK_SIZE];

OS_EVENT *SEM1;
OS_EVENT *SEM2;

/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*********************************************************************************************************
*/

//void   TaskStart(void *data);                    /* Function prototypes of Startup task                */
void   Task1(void *data);
void   Task2(void *data);

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

void  main (void)
{
    WDTCTL = WDTPW + WDTTMSEL;

    OSInit();                                              /* Initialize uC/OS-II                      */
    
//    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSTaskCreate(Task1,(void *)0, &Task1Stk[TASK_STK_SIZE - 1],3);
    OSTaskCreate(Task2,(void *)0, &Task2Stk[TASK_STK_SIZE - 1],4);
    
    SEM1 = OSSemCreate(1);
    SEM2 = OSSemCreate(0);
    
    OSStart();                                             /* Start multitasking                       */
}

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

void  TaskStart (void *pdata)
{
    pdata  = pdata;
                                            /* Prevent compiler warning                 */
    WDTCTL = WDT_MDLY_32;                 // Set Watchdog Timer interval to ~30ms
    IE1 |= WDTIE;                         // Enable WDT interrupt
    _EINT();

    /* Application specific initialization */

    while (1) {
        /* Task specific code */

        OSTimeDly(255);   
    }
}

void Task1 (void *pdata)
{
    static unsigned char Step_1 = 0;

    INT8U err;
    
    while(1)
    {
        OSSemPend(SEM1,0,&err);
        Step_1++;
        
        err = OSSemPost(SEM2);
        
        if ( err == OS_NO_ERR ) Step_1++;
        else Step_1--;
    }
}
 
void Task2 (void *pdata)
{
    static unsigned char Step_2 = 0;
    INT8U err;
    
    while(1)
    {
        OSSemPend(SEM2,0,&err);
        
        Step_2++;
        err = OSSemPost(SEM1);
        
        if ( err == OS_NO_ERR ) Step_2++;
        else Step_2--;
    }
}   

/*
// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void OSTickISR(void)
{
    OSIntEnter();
    
    OSTimeTick();
    
    OSIntExit();
}
*/

⌨️ 快捷键说明

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