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

📄 main.c

📁 ucosii 移植到ARM 9 2440环境 基本已经完成 没有最终试验 恐有差错
💻 C
字号:
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*    									uC/OS-II 切嚼侩 抗力 家胶
*
*                          			     (c) Copyright 2005, KInG
*                                           All Rights Reserved
*
* File    : Main.c
* Des	  : 绢敲府纳捞记 皋牢 风凭
* By      : KInG(kimingoo@hotmail.com)
* History : 2005.07.30 -> draft
*********************************************************************************************************
*/

#include "includes.h"
#include <stdarg.h>
#include <stdio.h>
#include "os_cpu.h"
/*
*********************************************************************************************************
*                                              CONSTANTS
*********************************************************************************************************
*/
// 阿 弊府扁 怕胶农俊 傈崔瞪 沥焊甫 淬篮 备炼眉
// OSTaskCreate() 窃荐狼 牢磊肺 静烙
//typedef struct {
//	int color;
//	int x1, x2, y1, y2;
//}DATA;

#define  		 TASK_STK_SIZE     1024       /* Size of each task's stacks (# of WORDs)            */

#define          TASK_START_ID       0                /* Application tasks IDs                         */
#define          TASK_1_ID           1
#define          TASK_2_ID           2
#define          TASK_3_ID           4
#define          TASK_4_ID           5

#define          TASK_START_PRIO    10                /* Application tasks priorities                  */
#define          TASK_1_PRIO        11
#define          TASK_2_PRIO        12
#define          TASK_3_PRIO        13
#define          TASK_4_PRIO        14

#define          MSG_QUEUE_SIZE     20                /* Size of message queue used in example         */

/*
*********************************************************************************************************
*                                             DATA TYPES
*********************************************************************************************************
*/

typedef struct {
    char    TaskName[30];
    INT16U  TaskCtr;
    INT16U  TaskExecTime;
    INT32U  TaskTotExecTime;
} TASK_USER_DATA;

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

OS_STK        TaskStartStk[TASK_STK_SIZE];
OS_STK        Task1Stk[TASK_STK_SIZE];              /* Clock      task stack                         */
OS_STK        Task2Stk[TASK_STK_SIZE];              /* Task #1    task stack                         */
OS_STK        Task3Stk[TASK_STK_SIZE];              /* Task #3    task stack                         */
OS_STK        Task4Stk[TASK_STK_SIZE];              /* Task #4    task stack                         */

TASK_USER_DATA  TaskUserData[7];

OS_EVENT       *MsgQueue;                             /* Message queue pointer                         */
void           *MsgQueueTbl[20];                      /* Storage for messages                          */
/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*********************************************************************************************************
*/
        void  TaskStart(void *pdata);                  /* Function prototypes of Startup task           */
static  void  TaskStartCreateTasks(void);
        void  Task1(void *pdata);
        void  Task2(void *pdata);          
        void  Task3(void *pdata);
        void  Task4(void *pdata);

/*
*********************************************************************************************************
*             UART1狼 Receive 牢磐反飘 辑厚胶 风凭                             
*********************************************************************************************************
*/
void isrUart0RxD(void)
{    

	rSUBSRCPND	|= BIT_SUB_RXD0;
	rSRCPND		|= BIT_UART0;
	rINTPND		|= BIT_UART0;
	
}

/*
*********************************************************************************************************
*                                                  MAIN
*********************************************************************************************************
*/
void Main(void)
{
    OSInit();                                              /* Initialize uC/OS-II          */
    
    strcpy(TaskUserData[TASK_START_ID].TaskName, "StartTask");    
    OSTaskCreateExt(TaskStart,
                   (void *)0,
                   &TaskStartStk[TASK_STK_SIZE-1],
                   TASK_START_PRIO,
                   TASK_START_ID,
                   &TaskStartStk[0],
                   TASK_STK_SIZE,
                   &TaskUserData[TASK_START_ID],
                   OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

  
    OSStart(); 
}

/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void  TaskStart (void *pdata)
{
	// 矫胶袍 檬扁拳(UART, LCD, TimeTick)
	InitSystem();	

    pdata = pdata;                                         /* Prevent compiler warning                 */

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

    MsgQueue = OSQCreate(&MsgQueueTbl[0], MSG_QUEUE_SIZE); /* Create a message queue                   */
    TaskStartCreateTasks();                                /* Create all the application tasks         */

    for (;;) {
       OSCtxSwCtr = 0;                                    /* Clear the context switch counter         */
       OSTimeDly(OS_TICKS_PER_SEC);                       /* Wait one second                */
    }
}

/*
*********************************************************************************************************
*                                             CREATE TASKS
*********************************************************************************************************
*/

static  void  TaskStartCreateTasks (void)
{
    strcpy(TaskUserData[TASK_1_ID].TaskName, "MsgQ Rx Task");
    OSTaskCreateExt(Task1,
                    (void *)0,
                    &Task1Stk[TASK_STK_SIZE - 1],
                    TASK_1_PRIO,
                    TASK_1_ID,
                    &Task1Stk[0],
                    TASK_STK_SIZE,
                    &TaskUserData[TASK_1_ID],
                    0);

    strcpy(TaskUserData[TASK_2_ID].TaskName, "MsgQ Tx Task #2");
    OSTaskCreateExt(Task2,
                    (void *)0,
                    &Task2Stk[TASK_STK_SIZE - 1],
                    TASK_2_PRIO,
                    TASK_2_ID,
                    &Task2Stk[0],
                    TASK_STK_SIZE,
                    &TaskUserData[TASK_2_ID],
                    0);

    strcpy(TaskUserData[TASK_3_ID].TaskName, "MsgQ Tx Task #3");
    OSTaskCreateExt(Task3,
                    (void *)0,
                    &Task3Stk[TASK_STK_SIZE - 1],
                    TASK_3_PRIO,
                    TASK_3_ID,
                    &Task3Stk[0],
                    TASK_STK_SIZE,
                    &TaskUserData[TASK_3_ID],
                    0);

    strcpy(TaskUserData[TASK_4_ID].TaskName, "MsgQ Tx Task #4");
    OSTaskCreateExt(Task4,
                    (void *)0,
                    &Task4Stk[TASK_STK_SIZE - 1],
                    TASK_4_PRIO,
                    TASK_4_ID,
                    &Task4Stk[0],
                    TASK_STK_SIZE,
                    &TaskUserData[TASK_4_ID],
                    0);
}

/*
*********************************************************************************************************
*                                               TASK #1
*********************************************************************************************************
*/

void  Task1 (void *pdata)
{
    char  *msg;
    INT8U  err;


    pdata = pdata;
    for (;;) {
        msg = (char *)OSQPend(MsgQueue, 0, &err);
        uprintf("%s\n", msg);
       OSTimeDly(200);                       /* Wait one second                */
    }
}

/*
*********************************************************************************************************
*                                               TASK #2
*********************************************************************************************************
*/

void  Task2 (void *pdata)
{
    char  msg[20];


    pdata = pdata;
    strcpy(&msg[0], "Task 2");
    for (;;) {
       OSQPost(MsgQueue, (void *)&msg[0]);
       OSTimeDly(500);                       /* Wait one second                */
    }
}

/*
*********************************************************************************************************
*                                               TASK #3
*********************************************************************************************************
*/

void  Task3 (void *pdata)
{
    char  msg[20];


    pdata = pdata;
    strcpy(&msg[0], "Task 3");
    for (;;) {
        OSQPost(MsgQueue, (void *)&msg[0]);
        OSTimeDly(500);                       /* Wait one second                */
    }
}

/*
*********************************************************************************************************
*                                               TASK #4
*********************************************************************************************************
*/

void  Task4 (void *pdata)
{
    char  msg[20];


    pdata = pdata;
    strcpy(&msg[0], "Task 4");
    for (;;) {
        OSQPost(MsgQueue, (void *)&msg[0]);
        OSTimeDly(500);                       /* Wait one second                */
    }
}

⌨️ 快捷键说明

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