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

📄 main.c

📁 s3c2400 ads1.2 usos portting
💻 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                       3        /* 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   Task3(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, LED3;	

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

    LED1 = LED2 = 0xff;
    LED3 = 0xf0;

    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);

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


	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 : %5ld\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);     
    }
}

void Task3(void *data)
{
    for (;;) {
	LED3 ^= 0x10;

	vDLCON &= 0x0F;	// Clear Upper Nibble of vDLCON - LEDs are attached to vDLCON[7:4]

    	vDLCON |= LED3;    
	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(300);     
    }
}

⌨️ 快捷键说明

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