📄 main.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 + -