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

📄 test.c

📁 TI公司的dsp55xx的ports应用。是官方的
💻 C
字号:
/*
*********************************************************************************************************
*
*                                            MicroC/OS-II 5509-DSP Test code
*
* File : TEST.C
* By   : Mark Scott-Nash
*********************************************************************************************************
*/


#include    "ucos_ii.h"
#include    "c55x.h"

void    VectorInit(unsigned int);

void    pll_init(unsigned long DSP_Freq);


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

#define  TASK_STK_SIZE                  256     /* Size of each task's stacks (# of WORDs)            */
#define  TASK_SSTK_SIZE                 256     /* Size of each task's stacks (# of WORDs)            */
#define  TASKSTART_STK_SIZE             256
#define  TASKSTART_SSTK_SIZE            256
#define  N_TASKS                        2       /* Number of identical tasks                          */

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

#pragma DATA_ALIGN( TaskStartStk, 2)
#pragma DATA_ALIGN( TaskStart_SStk, 2)
#pragma DATA_ALIGN( Task2Stk, 2)
#pragma DATA_ALIGN( Task2_SStk, 2)
#pragma DATA_ALIGN( Task3Stk, 2)
#pragma DATA_ALIGN( Task3_SStk, 2)

OS_STK           TaskStartStk[TASKSTART_STK_SIZE];
OS_STK           TaskStart_SStk[TASKSTART_SSTK_SIZE];
OS_STK           Task2Stk[TASK_STK_SIZE];       /* Tasks stacks                                  */
OS_STK           Task2_SStk[TASK_SSTK_SIZE];    /* Tasks stacks                                  */
OS_STK           Task3Stk[TASK_STK_SIZE];       /* Tasks stacks                                  */
OS_STK           Task3_SStk[TASK_SSTK_SIZE];    /* Tasks stacks                                  */

OS_EVENT         *MySem;
INT8U            err;

/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*********************************************************************************************************
*/
void   TaskStart(void *pvdata);      /* Function prototypes of Startup task           */
void   Tasksecond(void *pvdata);     /* Function prototypes of tasks                  */
void   Taskthird(void *pvdata);

/*$PAGE*/
/*
*********************************************************************************************************
*                                                MAIN
*********************************************************************************************************
*/
float a=1024;

void main (void)
{
    //    VectorInit(1);          // change pointer to int vectors for test

    pll_init(120);          // Set the 5509 to 120MHz

    OSInit();               /* Initialize MicroC/OS-II */

//    printf ("Alpha port test for MicroC/OS-II for 5509-DSP.\n");
//    printf ("   Port to TI TMS320VC5509 \n");
//    printf ("\n");

    MySem   =OSSemCreate(1);

    err = OSTaskCreateExt(TaskStart,
        (void *)0,
        (void *)&TaskStartStk[TASKSTART_STK_SIZE-1],
        10,
        10,
        (void *)(&TaskStartStk[0]),
        TASKSTART_STK_SIZE,
        (void *)&TaskStart_SStk[TASKSTART_SSTK_SIZE-1],
        OS_TASK_OPT_STK_CLR + OS_TASK_OPT_STK_CHK);
    OSTaskNameSet(0, "TaskStart", &err);


    err = OSTaskCreateExt(Tasksecond,
        (void *)0,
        (void *)&Task2Stk[TASK_STK_SIZE-1],
        11,
        11,
        (void *)(&Task2Stk[0]),
        TASK_STK_SIZE,
        (void *)&Task2_SStk[TASK_SSTK_SIZE-1],
        OS_TASK_OPT_STK_CLR + OS_TASK_OPT_STK_CHK);
    OSTaskNameSet(1, "TaskSecond", &err);


    err = OSTaskCreateExt(Taskthird,
        (void *)0,
        (void *)&Task3Stk[TASK_STK_SIZE-1],
        12,
        12,
        (void *)(&Task3Stk[0]),
        TASK_STK_SIZE,
        (void *)&Task3_SStk[TASK_SSTK_SIZE-1],
        OS_TASK_OPT_STK_CLR + OS_TASK_OPT_STK_CHK);
    OSTaskNameSet(2, "TaskThird", &err);

    OSStart(); /* Start multitasking    */
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/

void TaskStart (void *pvdata)
{
    pvdata=pvdata;    // prevents compiler warnings

    OSTimerInit();          // Timer can not be started until the OS has been started.
    _enable_interrupts();   // This is the 5509 master interrupt enable. Individual IE bits have
    // been set in other routines, i.e., OSTimerInit() sets up its bits.
    OSStatInit();

    for(;;)
    {
        a=a/2;
        OSSemPend(MySem,0,&err);
//        printf("This is the first task function\n");
        err = OSSemPost(MySem);
        OSTimeDly(30);
    }
}
/*
*********************************************************************************************************
*                                                  TASKS
*********************************************************************************************************
*/

void Tasksecond (void * pvdata)
{
    char txmsg;

    pvdata=pvdata;    // prevents compiler warnings
    txmsg='A';
    for (;;)
    {
        while(txmsg <= 'Z')
        {
            OSSemPend(MySem,0,&err);
//            printf(" This is the second task function - %c\n", txmsg);
            err = OSSemPost(MySem);
            txmsg++;
        }
        txmsg='A';

        OSTimeDly(1);       /* Delay 1 clock tick to allow other task to run */
    }
}

void Taskthird(void * pvdata)
{
    int b=0;

    pvdata=pvdata;    // prevents compiler warnings
    for (;;)
    {
        b=b+1;
        OSSemPend(MySem,0,&err);
//        printf("  This is the third task function\n");
        err = OSSemPost(MySem);

        OSTimeDly(1);       /* Delay 1 clock tick to allow other task to run */
    }
}

⌨️ 快捷键说明

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