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

📄 ex1l.c

📁 ucos在EPS7209上的移植代码
💻 C
字号:
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
*                                           All Rights Reserved
*
*                                                 V2.00
*
*                                               EXAMPLE #1
*********************************************************************************************************
*/

#include "includes.h"

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

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

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

OS_STK           TaskStk[N_TASKS][TASK_STK_SIZE];     /* Tasks stacks                                  */
OS_STK           TaskStartStk[TASK_STK_SIZE];

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

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

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

 
extern OS_STK       OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];       /* Idle       task stack              */

void C_Entry(void)
{
	SendStr("C_Entry...\n");
	OSInit();                                              /* Initialize uC/OS-II                     */
    OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSStart();                                             /* Start multitasking                      */
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void TaskStart (void *data)
{
    char   s[100];

	SendStr("TaskStart!!\n");

	OS_EXIT_CRITICAL();									   /* Timer Enable					          */

    OSStatInit();                                          /* Initialize uC/OS-II's statistics        */

    OSTaskCreate(Task1,"Task1",(void *)&TaskStk[0][TASK_STK_SIZE - 1],1);

    OSTaskCreate(Task2,"Task2",(void *)&TaskStk[1][TASK_STK_SIZE - 1],2);

	for (;;) {
        sprintf(s, "Running Task : %5d\n", OSTaskCtr);     /* Display #tasks running                  */
        SendStr(s);
        sprintf(s, "Cpu Usage : %3d\n", OSCPUUsage);       /* Display CPU usage in %                  */
        SendStr(s);
														   /* Display #context switches per second    */
        sprintf(s, "Context Switches per Sec : %5d\n", OSCtxSwCtr);  
        SendStr(s);
        OSCtxSwCtr = 0;
		OSTimeDlyHMSM(0, 0, 1, 0);                         /* Wait one second                         */
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                                  TASKS
*********************************************************************************************************
*/

void Task1(void *data)
{
    for (;;) {
		SendStr((char *)data);
        OSTimeDly(160);                            
    }
}

void Task2(void *data)
{
    for (;;) {
		SendStr((char *)data);
        OSTimeDly(150);     
    }
}

⌨️ 快捷键说明

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