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

📄 main.c

📁 ucos2400移植的源码。从网上下载供大家分享。
💻 C
字号:
//=====================================================================================================
//
//	MAIN.C - S3C2400 Main C code for uC/OS-II ver 2.51
//
//	(C) Copyright 2003-3-19, ARM STUDY GROUP (Yoon Gwang-Yoon)
//	http://arm.cim.co.kr
//
//	uC/OS-II ver 2.51 Ported By Lee Chae Won (ichijo@hanafos.com ; ichijo99@hanmail.net) 
//      in 2003.4.27
//	http://user.chollian.net/~hebb/
//      
//=====================================================================================================
//
//	Main Body of S3C2400...
//
//=====================================================================================================

/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
*                                           All Rights Reserved
*
*                                                 V2.00
*
*                                               EXAMPLE #1
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/


/*------------------------------------------------------------------------------*/
/*		INCLUDE FILE LIST														*/
/*------------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>

#include "common.h"
#include "includes.h"
#include "serial_poll.h"


#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              */


volatile   dword   LED1, LED2;	

/*-----------------------------------------------------------------------------*/
void cmain(void)
{	
    vLED = 0xff;
    vKEYROW = 0xff;

    LED1 = LED2 = 0xff;

    OS_ENTER_CRITICAL();

    TimerStart(0,5,50,1);   // Timer 0, 5ms, 50%, auto-reloading

    OS_EXIT_CRITICAL();
    
    ser_init(0);

    ser_puts(0, "Now starts uC/OS-II ver 2.51 on S3C2400 System...\r\n");
    
    OSInit();                                              /* Initialize uC/OS-II                     */
    OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSStart();                                             /* Start multitasking                      */
}

/*------------------------------------------------------------------------------*/
/*	entry() is executed first when PC jumps into C routines...		*/
/*------------------------------------------------------------------------------*/
void entry(void)
{
	MainInit();
    TimerInit();
	cmain();
}

/*------------------------------------------------------------------------------*/

/*$PAGE*/
/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void TaskStart (void *data)
{
    char   s[100];
	ser_puts(0, "Tasks Start!!\r\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, "\r\n\r\nRunning Task : %5d\r\n\r\n", OSTaskCtr);     /* Display #tasks running                  */
        ser_puts(0, s);
        sprintf(s, "Cpu Usage : %3d\r\n", OSCPUUsage);       /* Display CPU usage in %                  */
        ser_puts(0, s);
														   /* Display #context switches per second    */
        sprintf(s, "\r\n\r\nContext Switches per Sec : %5d\r\n\r\n", OSCtxSwCtr);  
        ser_puts(0, s);
        OSCtxSwCtr = 0;
	OSTimeDlyHMSM(0, 0, 1, 0);                         /* Wait one second                         */
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                                  TASKS
*********************************************************************************************************
*/

void Task1(void *data)
{
    for (;;) {
	LED1 ^= 0x01;

	vLED = LED1;    // LEDs are attached to vLED[3:0]

	ser_puts(0, "\r\n");
	ser_puts(0, "\r\n");
	ser_puts(0, (char *)data);
	ser_puts(0, "\r\n");
	ser_puts(0, "\r\n");

        OSTimeDly(100);                            
    }
}


void Task2(void *data)
{
    for (;;) {
	LED2 ^= 0x01;

    	vKEYROW = LED2;   // LEDs are attached to vKEYROW[3:0]

	ser_puts(0, "\r\n");
	ser_puts(0, "\r\n");
    	ser_puts(0, (char *)data);
	ser_puts(0, "\r\n");
	ser_puts(0, "\r\n");

        OSTimeDly(200);     
    }
}

⌨️ 快捷键说明

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